Полный путь от события в игре до подсказки в Discord — шесть звеньев, каждое со своей ролью.
Когда начинается арена, WoW Client посылает Lua-аддону события: ARENA_OPPONENT_UPDATE (определение врага),
UNIT_AURA (баффы/дебаффы), COMBAT_LOG_EVENT_UNFILTERED (трекинг способностей — трикет, CD, CC).
ArenaCoach.toc загружается WoW при старте. Аддон слушает события и записывает их
в системный чат с префиксом [AC] — это единственный легитимный канал вывода
данных из WoW 2.4.3 без нарушения ToS.
WoW сохраняет системный чат в файл Logs\WoWChatLog.txt в директории игры.
arena-bridge.exe непрерывно читает этот файл (tail), фильтрует строки с префиксом [AC]
и нормализует их в JSON-событие.
Нормализованное событие отправляется POST-запросом на FastAPI backend с Bearer-токеном. Токен привязан к конкретному игроку — несанкционированный запрос отклоняется с 401.
Сервер определяет текущий матчап из накопленных событий (наши спеки vs вражеские спеки), ищет подходящий документ в KB (Markdown + SQLite индекс) и формирует ответ. Каждый совет содержит ссылку на источник — стрим или гайд.
Discord-бот отправляет ephemeral-сообщение (видно только игроку) в DM с советом, источником и ключевыми CD для отслеживания. Если матчап не найден в KB — сообщение не отправляется, бот молчит.