Add middleware and refactor admin handlers for improved functionality
- 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.
This commit is contained in:
31
helper_bot/middlewares/dependencies_middleware.py
Normal file
31
helper_bot/middlewares/dependencies_middleware.py
Normal file
@@ -0,0 +1,31 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user