🧠 FSM
Модуль fsm обеспечивает продвинутое управление состоянием и автоматическую очистку UI (Garbage Collector) в фреймворке codex-bot.
🧠 Почему так?
Изоляция данных (Namespacing)
В сложном боте несколько фич могут одновременно хранить временные данные (черновики) в FSM-хранилище пользователя. Без изоляции одна фича может случайно перезаписать данные другой. BaseStateManager решает это, используя пространства имен (например, draft:booking), гарантируя каждой фиче свою приватную область внутри общей FSM-сессии.
Чистота чата (Garbage Collector)
Когда бот использует UI на основе инлайн-кнопок, пользователи часто отправляют случайные текстовые сообщения, которые засоряют чат и нарушают логику интерфейса. GarbageCollector автоматически удаляет такие нежелательные сообщения в определенных состояниях, сохраняя интерфейс чистым и сфокусированным на кнопках.
🔄 Поток данных (The Flow)
- Управление состоянием: Оркестратор фичи использует
BaseStateManagerдляupdate()илиget_payload()из своего изолированного FSM-пространства. - Регистрация: При запуске
FeatureDiscoveryServiceрегистрирует «мусорные состояния» из каждой фичи вGarbageStateRegistry. - Фильтрация: Когда пользователь отправляет текстовое сообщение,
IsGarbageStateFilterпроверяет, зарегистрирован ли текущий FSM-стейт как «мусорный». - Очистка: Если стейт мусорный,
common_fsm_routerперехватывает сообщение и удаляет его из чата Telegram.
🗺️ Карта модуля
| Компонент | Описание |
|---|---|
| 📄 API Reference | Технические детали BaseStateManager и GarbageStateRegistry. |
| 📄 State Manager | Изолированное хранилище данных фичи внутри FSM. |
| 📄 Garbage Collector | Автоматическое удаление нежелательных текстовых сообщений. |
Последнее обновление: 2025-02-07