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)