diff --git a/bot.py b/bot.py index 5fdfc304..48e21d5f 100644 --- a/bot.py +++ b/bot.py @@ -13,6 +13,7 @@ from handlers.admin import admin, admin_panel, user_editor from handlers.keys import key_management, keys from handlers.payment import freekassa_pay, yookassa_pay from middlewares.admin import AdminMiddleware +from middlewares.logging import UserActivityMiddleware dp.include_router(admin.router) dp.include_router(admin_panel.router) @@ -28,3 +29,5 @@ dp.include_router(notifications.router) dp.message.middleware(AdminMiddleware()) dp.callback_query.middleware(AdminMiddleware()) +dp.message.middleware(UserActivityMiddleware()) +dp.callback_query.middleware(UserActivityMiddleware()) diff --git a/middlewares/logging.py b/middlewares/logging.py new file mode 100644 index 00000000..253eb329 --- /dev/null +++ b/middlewares/logging.py @@ -0,0 +1,36 @@ +from typing import Any, Awaitable, Callable, Dict + +from aiogram import BaseMiddleware +from aiogram.types import CallbackQuery, Message, TelegramObject +from loguru import logger + +class UserActivityMiddleware(BaseMiddleware): + async def __call__( + self, + handler: Callable[[TelegramObject, Dict[str, Any]], Awaitable[Any]], + event: TelegramObject, + data: Dict[str, Any], + ) -> Any: + user_id = None + username = None + action = None + + if isinstance(event, Message): + user_id = event.from_user.id + username = event.from_user.username + action = f"Message: {event.text}" + elif isinstance(event, CallbackQuery): + user_id = event.from_user.id + username = event.from_user.username + action = f"Callback: {event.data}" + + # Логируем действие пользователя + logger.info( + f"User Activity - " + f"User ID: {user_id}, " + f"Username: {username}, " + f"Action: {action}" + ) + + # Продолжаем выполнение обработчика + return await handler(event, data) \ No newline at end of file