"""Pro-Chat: Betriebsart Unterlagen zuerst (RAG vor Web).""" from __future__ import annotations from typing import Optional, Tuple _active: dict[str, bool] = {} BTN_OFF = "📁 Unterlagen: AUS" BTN_ON = "📁 Unterlagen: AN" def is_document_mode(channel_key: str) -> bool: return _active.get(channel_key, False) def set_document_mode(channel_key: str, on: bool) -> None: if on: _active[channel_key] = True else: _active.pop(channel_key, None) def toggle_document_mode(channel_key: str) -> bool: cur = is_document_mode(channel_key) set_document_mode(channel_key, not cur) return not cur def keyboard_label(channel_key: str) -> str: return BTN_ON if is_document_mode(channel_key) else BTN_OFF def is_mode_button(text: str) -> bool: t = (text or "").strip() return t in (BTN_ON, BTN_OFF) def handle_mode_button(text: str, channel_key: str) -> Optional[bool]: """Returns True if turned ON, False if OFF, None if not a mode button.""" t = (text or "").strip() if t == BTN_OFF: set_document_mode(channel_key, True) return True if t == BTN_ON: set_document_mode(channel_key, False) return False return None def strip_document_prefix(text: str) -> Tuple[str, bool]: t = (text or "").strip() low = t.lower() for p in ("doku:", "rag:", "#doku"): if low.startswith(p): return t[len(p) :].lstrip(), True return t, False