Files
FascioSchoolBot/app/bot/middlewares/get_user.py
2025-10-03 17:33:09 +03:00

27 lines
787 B
Python

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)