⚙️ Engine
Модуль engine предоставляет основную инфраструктуру для сборки и запуска aiogram бота с использованием codex-bot.
🧠 Почему так?
Параметрическая сборка (Parametric Assembly)
В большом боте главный роутер и диспетчер могут стать перегруженными импортами. Модуль engine решает это через Параметрическую сборку (через RouterBuilder и BotBuilder). Это позволяет явно контролировать порядок мидлварей и фич без хардкода в одном файле.
Автообнаружение фич (Feature Discovery)
FeatureDiscoveryService автоматизирует регистрацию фич (роутеров, оркестраторов, конфигов меню и мусорных состояний). Это следует паттерну Django INSTALLED_APPS, позволяя легко добавлять или удалять фичи простым обновлением списка в настройках.
🔄 Поток данных (The Flow)
- Обнаружение:
FeatureDiscoveryServiceсканирует списокinstalled_featuresи импортирует ихhandlers.pyиfeature_setting.py. - Сборка:
RouterBuilderсобирает все объектыRouterиз обнаруженных фич и включает их в главный роутер. - Конфигурация:
BotBuilderсоздает экземплярыBotиDispatcher, инжектируя обнаруженные фичи и мидлвари в заданном порядке. - Запуск: Бот начинает поллинг, со всеми фичами и инфраструктурой (i18n, throttling, container), готовыми к обработке запросов.
🗺️ Карта модуля
| Компонент | Описание |
|---|---|
| 📄 Router Builder | build_main_router и collect_feature_routers. |
| 📄 Discovery | FeatureDiscoveryService для автообнаружения и регистрации. |
| 📄 Factory | BotBuilder для создания Bot и Dispatcher. |
| 📄 Middlewares | UserValidation, Throttling, Container и I18n мидлвари. |
| 📄 HTTP Client | BaseApiClient с пулом соединений. |
| 📄 I18n Compiler | compile_locales для Fluent (.ftl) файлов. |
Последнее обновление: 2025-02-07