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