from aiogram.types import Update from aiogram import BaseMiddleware from typing import Callable, Dict, Any, Awaitable import logging import time import json class LoggingMiddleware(BaseMiddleware): async def __call__( self, handler: Callable[[Update, Dict[str, Any]], Awaitable[Any]], event: Update, data: Dict[str, Any] ) -> Any: # Логируем входящий апдейт update_id = event.update_id update_type = "unknown" if event.message: update_type = "message" chat_id = event.message.chat.id text = event.message.text or "[non-text]" log_msg = f"📥 [UPDATE {update_id}] type={update_type} chat={chat_id} text={text}" elif event.callback_query: update_type = "callback_query" chat_id = event.callback_query.message.chat.id data_str = event.callback_query.data or "[no data]" log_msg = f"📥 [UPDATE {update_id}] type={update_type} chat={chat_id} data={data_str}" elif event.my_chat_member: update_type = "my_chat_member" log_msg = f"📥 [UPDATE {update_id}] type={update_type}" elif event.chat_member: update_type = "chat_member" log_msg = f"📥 [UPDATE {update_id}] type={update_type}" else: log_msg = f"📥 [UPDATE {update_id}] type={update_type} raw={event.json()}" # Печатаем или используем logging logging.info(log_msg) # Если настроен logging: logging.info(log_msg) # Передаём управление дальше (в хендлеры) try: result = await handler(event, data) except Exception as e: # Логируем ошибку, но не подавляем logging.error(f"❌ [UPDATE {update_id}] handler error: {e}") raise else: logging.info(f"✅ [UPDATE {update_id}] handled successfully") return result