Skip to content

Middlewares — Конвейер обработки запросов

Мидлвари (Middlewares) в codex-bot образуют цепочку обработки, через которую проходит каждое событие из Telegram. Их главная задача — подготовить контекст запроса, выполнить проверки безопасности и внедрить зависимости в хендлеры.


⚙️ Стандартный стек

Фреймворк предоставляет набор готовых мидлварей. В проектах, созданных через CLI, их подключение происходит в файле core/factory.py. Вы можете гибко управлять составом стека, включая или выключая модули (Redis, i18n, DB) в настройках.

1. ContainerMiddleware (Фундамент)

Внедряет объект DI-контейнера в контекст запроса (data["container"]). Это база для работы всех остальных компонентов.

2. UserValidationMiddleware (Безопасность)

Выполняет первичную проверку пользователя по базе данных или кэшу. Позволяет мгновенно блокировать доступ забаненным пользователям.

3. ThrottlingMiddleware (Защита от спама)

Ограничивает частоту запросов (Rate Limit). Если пользователь нажимает кнопки слишком часто, мидлварь прерывает запрос, не допуская его до бизнес-логики.

4. DirectorMiddleware (Инъекция контекста)

Создает объект Director специально для текущего запроса. Это позволяет вам принимать director: Director прямо в аргументах хендлера.

5. I18nMiddleware (Локализация)

Опциональная мидлварь. Определяет язык пользователя и настраивает движок переводов.


⚖️ Порядок и Конфигурация

Порядок регистрации мидлварей в BotBuilder критичен для стабильности: 1. Сначала Инфраструктура (Container). 2. Затем Защита (Validation, Throttling). 3. В конце Бизнес-контекст (Director, I18n).

Если вы используете стандартный скелет проекта, фреймворк сам расставит их в правильном порядке внутри функции build_bot().


🧭 Связанные разделы

  • BotBuilder — инструмент, через который регистрируются мидлвари.
  • Director — основной объект, инжектируемый через прослойки.