Обзор¶
Пакет 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-контейнерами.
Оглавление¶
Быстрый старт - быстрый старт и первый пример диалога.
Окна и диалоги - базовые концепции окон и диалогов.
Виджеты - виджеты (текстовые, клавиатурные и прочие).
Переходы и навигация - управление диалогом, переходы и маршрутизация.
Данные и контекст - получение данных (getters), контекст и состояние.
Background Manager - фоновый менеджер для обновления диалогов из фоновых задач.
Тестирование диалогов - тестирование диалогов в памяти без внешнего API.
Превью диалогов и переходов - HTML-превью и диаграмма переходов диалогов.