"""Chat-Waechter: Whisper/GM-Alarm.

Ein PM oeffnet in Tibia einen neuen Chat-Tab (Absendername); auch
unbekannte Tabs werden seit getTabs-Erweiterung gezaehlt. Erscheint ein
neuer Tab waehrend der Bot laeuft, schreibt jemand — dann wird
pausiert, Event geloggt und ein Beweis-Screenshot gesichert, statt
sichtbar weiterzuboten (Anti-Report/GM-Schutz).

Config per Env:
  TIBIAPILOT_CHATWATCH=0  -> aus
"""
import os

from src.gameplay.monitoring import logEvent, saveEventScreenshot
from src.repositories.chat.core import getTabs

CHATWATCH_ENV = 'TIBIAPILOT_CHATWATCH'


def watchChat(context):
    """Loop-Hook: pausiert bei neuen Chat-Tabs (Fluester/GM-Kontakt)."""
    if os.getenv(CHATWATCH_ENV, '1') == '0':
        return context
    if context['ng_pause']:
        return context
    screenshot = context['ng_screenshot']
    if screenshot is None:
        return context
    tabs = getTabs(screenshot)
    watch = context['ng_chat'].setdefault('watch', {})
    current = set(tabs.keys())
    previous = watch.get('tabs')
    watch['tabs'] = current
    if previous is None:
        return context
    newTabs = current - previous
    if not newTabs:
        return context
    context['ng_pause'] = True
    logEvent('chatAlert', {'newTabs': sorted(newTabs)})
    saveEventScreenshot(screenshot, 'chatAlert')
    return context
