51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
import logging
|
|
from typing import Any, Dict
|
|
|
|
from aiogram.types import User
|
|
from aiogram_dialog import DialogManager
|
|
from sqlalchemy import select
|
|
from sqlalchemy.exc import SQLAlchemyError
|
|
|
|
from shopbot.bot.database.db import async_session
|
|
from shopbot.bot.database.models import UserModel
|
|
|
|
|
|
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:
|
|
logging.warning(
|
|
f"User with tg_id {event_from_user.id} not found in database."
|
|
)
|
|
return {
|
|
"username": event_from_user.username,
|
|
"balance": 0,
|
|
"purchased": 0,
|
|
}
|
|
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 {
|
|
"username": event_from_user.username,
|
|
"balance": 0,
|
|
"purchased": 0,
|
|
}
|