import logging from collections.abc import Awaitable, Callable from typing import Any from aiogram.dispatcher.middlewares.base import BaseMiddleware from aiogram.types import TelegramObject class LoggingMiddleware(BaseMiddleware): """Мидлвар для логирования всех входящих обновлений. Логирует тип и содержимое обновления. Логи сохраняются в файл bot.log и выводятся в консоль.""" async def __call__( self, handler: Callable[[TelegramObject, dict[str, Any]], Awaitable[Any]], event: TelegramObject, data: dict[str, Any], ) -> Any: """Выполняет логирование входящего обновления и передает его дальше по цепочке обработки.""" logging.info('Update: %s', event) return await handler(event, data)