Files

31 lines
927 B
Python

from aiogram.types import User as TelegramUser
from sqlalchemy import select
from bot.config import ADMIN_ID
from bot.db.models import User
from bot.db.session import async_session
async def upsert_user_from_telegram(telegram_user: TelegramUser | None) -> User | None:
if telegram_user is None:
return None
async with async_session() as session:
result = await session.execute(
select(User).where(User.telegram_id == telegram_user.id)
)
user = result.scalar_one_or_none()
if user is None:
user = User(telegram_id=telegram_user.id)
session.add(user)
user.username = telegram_user.username
user.first_name = telegram_user.first_name
user.last_name = telegram_user.last_name
user.is_admin = telegram_user.id == ADMIN_ID
await session.commit()
await session.refresh(user)
return user