Обзор

Пакет maxo.dialogs - расширение для создания сложных многошаговых сценариев (диалогов) в ботах на основе фреймворка maxo. Он полностью портирован из популярной библиотеки aiogram_dialog, но адаптирован под особенности и архитектуру maxo.

Основные концепции

Как и в оригинальной библиотеке, интерфейс строится на базовых сущностях:

  • Window (Окно) - представляет одно состояние диалога (одно сообщение). Содержит тексты, клавиатуры и обработчики ввода, привязанные к определенному состоянию FSM (State).

  • Dialog (Диалог) - объединяет одно или несколько окон (Window) в единый логический сценарий с общим контекстом (данными).

  • Widgets (Виджеты) - строительные блоки для окон. Бывают текстовые (Const, Format, Jinja), клавиатурные (Button, Row, Select и др.), медиа-виджеты и поля ввода (MessageInput).

  • DialogManager - интерфейс для управления переходами (запуск диалогов, переключение окон, закрытие).

Преимущества использования

  • Декларативность: вы описываете структуру UI, а фреймворк сам занимается маршрутизацией запросов, обновлением сообщений и обработкой callback-ов.

  • Изоляция логики: логика каждого диалога инкапсулирована, данные не смешиваются.

  • Стек диалогов: поддержка вложенных диалогов (как вызов функции) - можно запустить поддиалог, дождаться результата и вернуться обратно.

  • Интеграция с maxo: полная совместимость с экосистемой maxo, роутерами, мидлварями и DI-контейнерами.

Оглавление