27 lines
787 B
Python
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)
|