Engine — Ядро инфраструктуры
Engine (Движок) — это совокупность систем, отвечающих за жизненный цикл бота, автоматическую сборку компонентов и интеграцию с внешними сервисами. Именно здесь сосредоточена вся "магия" codex-bot, которая позволяет писать меньше кода для настройки.
💎 Философия Движка
Движок построен на принципе Convention over Configuration (Соглашение важнее конфигурации). Это значит, что если вы следуете стандартной структуре папок, движок сам найдет ваши фичи, подключит роутеры и настроит переводы без единой строчки ручного кода.
🏗 Ключевые подсистемы
| Подсистема | Назначение | Описание |
|---|---|---|
| Discovery | Авто-поиск фич | Сканирует папки и регистрирует оркестраторы и роутеры. |
| BotBuilder | Сборщик бота | Fluent-интерфейс для настройки Bot, Dispatcher и Middleware. |
| Container | DI-контейнер | Единое хранилище всех сервисов и клиентов проекта. |
| Middlewares | Прослойки | Стандартный стек: Throttling, User Validation, Director Injection. |
| I18n | Локализация | Умная работа с переводами и изоляция локалей. |
| HTTP/DB | Клиенты | Базовые абстракции для работы с API и базами данных. |
🚀 Жизненный цикл (Startup Flow)
Когда вы запускаете бота, Движок выполняет следующие шаги: 1. Инициализация Контейнера: Загружаются настройки и клиенты (БД, Redis). 2. Discovery: Сканируются фичи, создаются оркестраторы. 3. BotBuilder: Собирается объект Dispatcher, подключаются все системные мидлвари. 4. I18n: Компилируются локали и подключается middleware переводов. 5. Startup: Бот начинает слушать Telegram и (если настроено) Redis Streams. Фреймворк активирует только те подсистемы, которые вы явно включили в настройках или выбрали в CLI-визарде. 6. Webhooks: Запускается веб-сервер для обработки входящих вебхуков (пока в разработке).
🧭 Связанные компоненты
- Director — использует данные, подготовленные движком.
- ViewSender — инициализируется через BotBuilder.