- Introduced `DependenciesMiddleware` and `BlacklistMiddleware` for enhanced request handling across all routers. - Refactored admin handlers to utilize new middleware, improving access control and error handling. - Updated the `admin_router` to include middleware for access checks and streamlined the process of banning users. - Enhanced the structure of admin handler imports for better organization and maintainability. - Improved error handling in various admin functions to ensure robust user interactions.
32 lines
1.3 KiB
Python
32 lines
1.3 KiB
Python
from typing import Any, Dict
|
||
from aiogram import BaseMiddleware
|
||
from aiogram.types import TelegramObject
|
||
|
||
from helper_bot.utils.base_dependency_factory import get_global_instance
|
||
from logs.custom_logger import logger
|
||
|
||
|
||
class DependenciesMiddleware(BaseMiddleware):
|
||
"""Универсальная middleware для внедрения зависимостей во все хендлеры"""
|
||
|
||
async def __call__(self, handler, event: TelegramObject, data: Dict[str, Any]) -> Any:
|
||
try:
|
||
# Получаем глобальные зависимости
|
||
bdf = get_global_instance()
|
||
|
||
# Внедряем зависимости в data для MagicData
|
||
if 'bot_db' not in data:
|
||
data['bot_db'] = bdf.get_db()
|
||
if 'settings' not in data:
|
||
data['settings'] = bdf.settings
|
||
data['bot'] = data.get('bot')
|
||
data['dp'] = data.get('dp')
|
||
|
||
logger.debug(f"DependenciesMiddleware: внедрены зависимости для {type(event).__name__}")
|
||
|
||
except Exception as e:
|
||
logger.error(f"Ошибка в DependenciesMiddleware: {e}")
|
||
# Не прерываем выполнение, продолжаем без зависимостей
|
||
|
||
return await handler(event, data)
|