from __future__ import annotations from typing import Any, Awaitable, Callable from aiogram import BaseMiddleware from aiogram.types import TelegramObject from bot.config import Settings from bot.storage import Storage class InjectMiddleware(BaseMiddleware): def __init__(self, settings: Settings, storage: Storage) -> None: self.settings = settings self.storage = storage async def __call__( self, handler: Callable[[TelegramObject, dict[str, Any]], Awaitable[Any]], event: TelegramObject, data: dict[str, Any], ) -> Any: data["settings"] = self.settings data["storage"] = self.storage return await handler(event, data)