36 lines
1.3 KiB
Python
36 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)
|