All checks were successful
Build and Run VSTU Public TG bot / build_and_run (push) Successful in 27s
52 lines
2.0 KiB
Python
52 lines
2.0 KiB
Python
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
|