===== Обзор ===== Пакет ``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-контейнерами. Оглавление ========== * :doc:`quickstart` - быстрый старт и первый пример диалога. * :doc:`windows_and_dialogs` - базовые концепции окон и диалогов. * :doc:`widgets` - виджеты (текстовые, клавиатурные и прочие). * :doc:`transitions` - управление диалогом, переходы и маршрутизация. * :doc:`data_and_context` - получение данных (getters), контекст и состояние. * :doc:`background_manager` - фоновый менеджер для обновления диалогов из фоновых задач. * :doc:`testing` - тестирование диалогов в памяти без внешнего API. * :doc:`preview` - HTML-превью и диаграмма переходов диалогов.