from typing import Any, Awaitable, Callable from aiogram import BaseMiddleware from aiogram.types import Update, User from app.infrastructure.database.crud import create_user, get_user_by_tg_id class GetUserMiddleware(BaseMiddleware): async def __call__( self, handler: Callable[[Update, dict[str, Any]], Awaitable[Any]], event: Update, data: dict[str, Any], ): session = data["session"] tg_user: User = data.get("event_from_user") user = await get_user_by_tg_id(session, tg_user.id) if user is None: user = await create_user( session, tg_user.id, tg_user.full_name, ) data["user"] = user return await handler(event, data)