shopbot/bot/getters/user.py

51 lines
1.5 KiB
Python
Raw Permalink Normal View History

2024-12-24 18:08:03 +00:00
import logging
2024-12-25 01:30:33 +00:00
from typing import Any, Dict
2024-12-24 18:08:03 +00:00
from aiogram.types import User
from aiogram_dialog import DialogManager
from sqlalchemy import select
from sqlalchemy.exc import SQLAlchemyError
2024-12-25 01:30:33 +00:00
from shopbot.bot.database.db import async_session
from shopbot.bot.database.models import UserModel
2024-12-24 18:08:03 +00:00
async def username_getter(
dialog_manager: DialogManager, event_from_user: User, **kwargs
) -> Dict[str, Any]:
try:
async with async_session() as session:
user = await session.scalar(
select(UserModel).where(UserModel.tg_id == event_from_user.id)
)
if user:
return {
"username": user.username,
"balance": user.balance,
"purchased": user.purchased,
}
else:
2024-12-25 01:30:33 +00:00
logging.warning(
f"User with tg_id {event_from_user.id} not found in database."
)
2024-12-24 18:08:03 +00:00
return {
"username": event_from_user.username,
"balance": 0,
"purchased": 0,
2024-12-25 01:30:33 +00:00
}
2024-12-24 18:08:03 +00:00
except SQLAlchemyError as e:
logging.error(f"Database error: {e}", exc_info=True)
return {
"username": event_from_user.username,
"balance": 0,
"purchased": 0,
}
except Exception as e:
logging.error(f"An unexpected error occurred: {e}", exc_info=True)
return {
2024-12-25 01:30:33 +00:00
"username": event_from_user.username,
"balance": 0,
"purchased": 0,
}