Главный модуль (main) ===================== .. automodule:: mylife3000.main :members: :undoc-members: :show-inheritance: :special-members: __init__ Основные функции ---------------- .. autofunction:: mylife3000.main.main .. autofunction:: mylife3000.main.post_init .. autofunction:: mylife3000.main.post_stop Описание -------- Модуль ``main.py`` является точкой входа в приложение и отвечает за: * Инициализацию и запуск Telegram бота * Настройку обработчиков сообщений и команд * Управление жизненным циклом приложения * Инициализацию зависимостей (база данных, Questionary) Архитектура запуска ~~~~~~~~~~~~~~~~~~~ .. mermaid:: sequenceDiagram participant U as User participant M as main.py participant A as Application participant H as Handlers participant D as Database participant Q as Questionary U->>M: /start command M->>A: Application.builder() A->>D: db.init_pool() A->>Q: Questionary() A->>H: ConversationHandler() A->>A: run_polling() A->>U: Welcome message Классы и функции ---------------- .. py:function:: main() Основная функция запуска бота. Выполняет: - Создание экземпляра Application - Настройку обработчиков инициализации/остановки - Создание ConversationHandler с состояниями диалога - Запуск режима опроса (polling) .. py:function:: post_init(application) Функция инициализации после создания приложения: - Инициализация пула подключений к базе данных - Создание экземпляра Questionary - Сохранение зависимостей в bot_data для DI .. py:function:: post_stop(application) Функция очистки при остановке бота: - Закрытие пула подключений к базе данных - Логирование завершения работы Состояния диалога ----------------- Бот использует конечный автомат с 4 состояниями: +----------------+-----------------------------------------------+ | Состояние | Описание | +================+===============================================+ | ``MAIN_MENU`` | Главное меню с выбором раздела | +----------------+-----------------------------------------------+ | ``SECTION_MENU``| Меню выбранного раздела | +----------------+-----------------------------------------------+ | ``THEME`` | Выбор темы внутри раздела | +----------------+-----------------------------------------------+ | ``RESULT`` | Показ вопроса и действия после него | +----------------+-----------------------------------------------+ Пример использования -------------------- .. code-block:: python # Запуск бота if __name__ == "__main__": main() Смотрите также -------------- * :doc:`handlers` - Обработчики сообщений и команд * :doc:`database` - Работа с базой данных * :doc:`config` - Конфигурация приложения