В общем случае, Middlewares это прослойка, вызываемая автоматически, после request и перед обработкой его сервером. Может использоваться, например, для логгирования или добавления полезной нагрузки.
Пример из доков, который добавляет в данные каждого сообщения значение счетчика
from aiogram import BaseMiddleware
from aiogram.types import Message
class CounterMiddleware(BaseMiddleware):
def __init__(self) -> None:
self.counter = 0
async def __call__(
self,
handler: Callable[[Message, Dict[str, Any]], Awaitable[Any]],
event: Message,
data: Dict[str, Any]
) -> Any:
self.counter += 1
data['counter'] = self.counter
return await handler(event, data)