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)