Skip to content

🧠 FSM

⬅️ Back | 🏠 Docs Root

Модуль fsm обеспечивает продвинутое управление состоянием и автоматическую очистку UI (Garbage Collector) в фреймворке codex-bot.


🧠 Почему так?

Изоляция данных (Namespacing)

В сложном боте несколько фич могут одновременно хранить временные данные (черновики) в FSM-хранилище пользователя. Без изоляции одна фича может случайно перезаписать данные другой. BaseStateManager решает это, используя пространства имен (например, draft:booking), гарантируя каждой фиче свою приватную область внутри общей FSM-сессии.

Чистота чата (Garbage Collector)

Когда бот использует UI на основе инлайн-кнопок, пользователи часто отправляют случайные текстовые сообщения, которые засоряют чат и нарушают логику интерфейса. GarbageCollector автоматически удаляет такие нежелательные сообщения в определенных состояниях, сохраняя интерфейс чистым и сфокусированным на кнопках.


🔄 Поток данных (The Flow)

  1. Управление состоянием: Оркестратор фичи использует BaseStateManager для update() или get_payload() из своего изолированного FSM-пространства.
  2. Регистрация: При запуске FeatureDiscoveryService регистрирует «мусорные состояния» из каждой фичи в GarbageStateRegistry.
  3. Фильтрация: Когда пользователь отправляет текстовое сообщение, IsGarbageStateFilter проверяет, зарегистрирован ли текущий FSM-стейт как «мусорный».
  4. Очистка: Если стейт мусорный, common_fsm_router перехватывает сообщение и удаляет его из чата Telegram.

🗺️ Карта модуля

Компонент Описание
📄 API Reference Технические детали BaseStateManager и GarbageStateRegistry.
📄 State Manager Изолированное хранилище данных фичи внутри FSM.
📄 Garbage Collector Автоматическое удаление нежелательных текстовых сообщений.

Последнее обновление: 2025-02-07