📤 Sender
Модуль sender предоставляет stateless-сервис для отправки и синхронизации UI Telegram-бота в фреймворке codex-bot.
🧠 Почему так?
Постоянство UI (UI Persistence)
В типичном боте каждое взаимодействие отправляет новое сообщение, создавая длинную и грязную историю чата. ViewSender решает это, управляя двумя постоянными сообщениями (Menu и Content). Вместо отправки новых сообщений он редактирует существующие, когда это возможно, сохраняя чат чистым и сфокусированным.
Stateless-отправка
Поскольку ViewSender — это Stateless Singleton, он не хранит данные пользователя в self. Он использует SenderManager для получения текущих ID сообщений (координат) из постоянного хранилища (например, Redis) для каждого запроса. Это гарантирует консистентность UI даже при работе нескольких экземпляров бота.
🔄 Поток данных (The Flow)
- Вход:
Directorвызывает оркестратор, который возвращаетUnifiedViewDTO. - Координация:
ViewSenderполучаетUnifiedViewDTOи запрашивает текущиеmenu_msg_idиcontent_msg_idуSenderManager. - Синхронизация:
- Удаление: Если присутствует
trigger_message_id(например,/start), оно удаляется. - Редактирование: Если сообщения существуют,
ViewSenderредактирует их с новым контентом и клавиатурой. - Создание: Если их нет — отправляются новые сообщения.
- Удаление: Если присутствует
- Сохранение:
SenderManagerобновляет ID сообщений в хранилище для следующего запроса.
🗺️ Карта модуля
| Компонент | Описание |
|---|---|
| 📄 API Reference | Технические детали ViewSender и SenderManager. |
| 📄 Sender Keys | Фабрика ключей для хранилища координат UI. |
| 📄 Protocols | SenderStateStorageProtocol для хранилища координат UI. |
Последнее обновление: 2025-02-07