from aiogram import BaseMiddleware from typing import Any, Callable from redis.asyncio import Redis from services.orders import OrderService from services.catalogue import CatalogueService class DIMiddleware(BaseMiddleware): def __init__( self, order_service: OrderService, catalogue_service: CatalogueService, redis_client: Redis, ): self._order_service = order_service self._redis_client = redis_client self._catalogue_service = catalogue_service async def __call__( self, handler: Callable, event: Any, data: dict[str, Any], ) -> Any: data["order_service"] = self._order_service data["catalogue_service"] = self._catalogue_service data["redis_client"] = self._redis_client return await handler(event, data)