Code Refactoring

This commit is contained in:
machka
2025-05-14 08:43:23 +00:00
parent 7f94d794d6
commit d406baf0c1
33 changed files with 6015 additions and 3571 deletions
+72 -76
View File
@@ -1,94 +1,90 @@
import logging
import json
from typing import Callable ,Dict ,Any ,Awaitable ,Union ,Optional
from typing import Callable, Dict, Any, Awaitable, Union, Optional
from aiogram import BaseMiddleware
from aiogram .types import Update ,Message ,CallbackQuery ,User
from aiogram.types import Update, Message, CallbackQuery, User
from db .database import log_user_action
from config .settings import Settings
class ActionLoggerMiddleware (BaseMiddleware ):
def __init__ (self ,settings :Settings ):
super ().__init__ ()
self .settings =settings
async def __call__ (
self ,
handler :Callable [[Update ,Dict [str ,Any ]],Awaitable [Any ]],
event :Update ,
data :Dict [str ,Any ]
)->Any :
event_user :Optional [User ]=data .get ("event_from_user")
bot :Optional [Bot ]=data .get ("bot")
user_id :Optional [int ]=None
telegram_username :Optional [str ]=None
telegram_first_name :Optional [str ]=None
event_type :str =event .event_type
content :Optional [str ]=None
is_admin_event_flag :bool =False
if event_user :
user_id =event_user .id
telegram_username =event_user .username
telegram_first_name =event_user .first_name
if user_id ==self .settings .ADMIN_IDS :
is_admin_event_flag =True
raw_update_snippet =None
try :
raw_update_snippet =event .model_dump_json (exclude_none =True ,indent =None )[:1000 ]
except Exception :
raw_update_snippet =str (event )[:1000 ]
from db.database import log_user_action
from config.settings import Settings
if event .message :
msg =event .message
if msg .text :
content =msg .text
if msg .text .startswith ('/'):
event_type ="command"
elif msg .caption :
content =f"[{msg.content_type}] {msg.caption}"
else :
content =f"[{msg.content_type}]"
class ActionLoggerMiddleware(BaseMiddleware):
elif event .callback_query :
cb =event .callback_query
event_type ="callback_query"
content =cb .data
def __init__(self, settings: Settings):
super().__init__()
self.settings = settings
async def __call__(self, handler: Callable[[Update, Dict[str, Any]],
Awaitable[Any]], event: Update,
data: Dict[str, Any]) -> Any:
event_user: Optional[User] = data.get("event_from_user")
bot: Optional[Bot] = data.get("bot")
user_id: Optional[int] = None
telegram_username: Optional[str] = None
telegram_first_name: Optional[str] = None
event_type: str = event.event_type
content: Optional[str] = None
is_admin_event_flag: bool = False
if event_user:
user_id = event_user.id
telegram_username = event_user.username
telegram_first_name = event_user.first_name
if user_id == self.settings.ADMIN_IDS:
is_admin_event_flag = True
raw_update_snippet = None
try:
raw_update_snippet = event.model_dump_json(exclude_none=True,
indent=None)[:1000]
except Exception:
raw_update_snippet = str(event)[:1000]
if event.message:
msg = event.message
if msg.text:
content = msg.text
if msg.text.startswith('/'):
event_type = "command"
elif msg.caption:
content = f"[{msg.content_type}] {msg.caption}"
else:
content = f"[{msg.content_type}]"
elif event.callback_query:
cb = event.callback_query
event_type = "callback_query"
content = cb.data
if user_id and event_type and content:
try:
await log_user_action(user_id=user_id,
telegram_username=telegram_username,
telegram_first_name=telegram_first_name,
event_type=event_type,
content=content[:1000],
raw_update_preview=raw_update_snippet,
is_admin_event=is_admin_event_flag)
except Exception as e_log:
logging.error(
f"ActionLoggerMiddleware: Failed to log event for user {user_id}: {e_log}",
exc_info=True)
elif user_id and event_type:
try:
await log_user_action(user_id=user_id,
telegram_username=telegram_username,
telegram_first_name=telegram_first_name,
event_type=event_type,
content="N/A",
raw_update_preview=raw_update_snippet,
is_admin_event=is_admin_event_flag)
except Exception as e_log:
logging.error(
f"ActionLoggerMiddleware: Failed to log event (no content) for user {user_id}: {e_log}",
exc_info=True)
if user_id and event_type and content :
try :
await log_user_action (
user_id =user_id ,
telegram_username =telegram_username ,
telegram_first_name =telegram_first_name ,
event_type =event_type ,
content =content [:1000 ],
raw_update_preview =raw_update_snippet ,
is_admin_event =is_admin_event_flag
)
except Exception as e_log :
logging .error (f"ActionLoggerMiddleware: Failed to log event for user {user_id}: {e_log}",exc_info =True )
elif user_id and event_type :
try :
await log_user_action (user_id =user_id ,telegram_username =telegram_username ,telegram_first_name =telegram_first_name ,event_type =event_type ,content ="N/A",raw_update_preview =raw_update_snippet ,is_admin_event =is_admin_event_flag )
except Exception as e_log :
logging .error (f"ActionLoggerMiddleware: Failed to log event (no content) for user {user_id}: {e_log}",exc_info =True )
return await handler (event ,data )
return await handler(event, data)