Middleware

Middleware - это строительные блоки, которые оборачивают и расширяют основной обработчик update telegram бота. Каждый компонент middleware принимает botclient, update и делегирует его следующему компоненту в цепочке. Работает аналогично, как в ASP.NET. Обработка вызывается по цепочке перед update и после update.

InvokeOnPreUpdateAsync - вызывается до обработки update.

InvokeOnPostUpdateAsync - вызывается после обработки update.

Данные методы являются виртуальными, соответственно их можно переопределить.

ExecutionOrder - Порядок выполнения middleware в pipeline. Меньшее значение означает более высокий приоритет и раннее выполнение.

Для работы с middleware используется базовый класс middlewarebase. Для создания своего обработчика нужно от наследоваться от базового класса и переопределить методы InvokeOnPreUpdateAsync и InvokeOnPostUpdateAsynс. Важно не забыть выполнить методы базового класса.

Пример

Подключение своих обработчиков при создание ботов. Обработчики можно добавить через билдер или используя DI.

Последовательность выполнения зависит от ExecutionOrder, а не от того, как вы добавили обработчики.

Как видно из кода, первым идет OneMiddleWare (ExecutionOrder 0), после TwoMiddleWare (ExecutionOrder 1) и в конце ThreeMiddleware (ExecutionOrder 2). Обработка перед update будет выглядеть так:

  • OneMiddleWare

  • TwoMiddleWare

  • ThreeMiddleware

Обработка после update будет выглядеть так:

  • ThreeMiddleware

  • TwoMiddleWare

  • OneMiddleWare

Если потребуется, можно прервать выполнение цепочку использовал return;

Last updated