Skip to content

Задача 004: Интеграция Redis Stream с FSM

Приоритет: Высокий Статус: Запланировано Категория: Инфраструктура / Redis


🎯 Цель

Обеспечить прямой доступ к состояниям FSM пользователя внутри обработчиков Redis Stream. Это позволит фоновым событиям бесшовно инициировать смену состояний и обновление UI.

🛠 Постановка проблемы

В данный момент обработчики Redis получают только сырой payload и container. Для изменения состояния пользователя разработчики должны вручную взаимодействовать с хранилищем Redis.

🚀 Предлагаемое решение

  1. Сборка контекста: Обновить BotRedisDispatcher, чтобы он искал user_id (и опционально chat_id) во входящей полезной нагрузке сообщения Redis.
  2. Async Director: При наличии ID, диспетчер автоматически создаст экземпляры FSMContext и Director.
  3. Инъекция в обработчик: Позволить обработчикам Redis принимать аргумент director: Director, предоставляя тот же API, что и обычные обработчики Telegram.

✅ Определение готовности

  • Обработчики Redis могут выполнять await director.set_scene().
  • BaseStateManager работает внутри обработчиков Redis.
  • Документировано соглашение о ключе user_id в полезной нагрузке Redis.