import logging from aiogram import Router from aiogram.filters import Command, CommandStart from aiogram.types import Message from aiogram_dialog import DialogManager, StartMode from environs import Env from sqlalchemy.exc import SQLAlchemyError from shopbot.bot.database import register_user from shopbot.bot.states import AdminSG, StartSG router = Router() env = Env() env.read_env() ADMIN_ID = env("ADMIN") @router.message(CommandStart()) async def command_start_process(message: Message, dialog_manager: DialogManager): try: if not message.from_user or not message.from_user.id: logging.warning("User id not found.") return user_id = message.from_user.id username = message.from_user.username await register_user(tg_id=user_id, username=username) await dialog_manager.start(state=StartSG.start, mode=StartMode.RESET_STACK) except SQLAlchemyError as e: logging.error(f"Database error during user registration: {e}", exc_info=True) except Exception as e: logging.error(f"An unexpected error occurred: {e}", exc_info=True) @router.message(Command("admin_panel")) async def command_admin_panel(message: Message, dialog_manager: DialogManager): if not message.from_user or not message.from_user.id: logging.warning("User id not found.") return if str(message.from_user.id) == ADMIN_ID: await dialog_manager.start(state=AdminSG.panel) else: logging.warning(f"User with tg_id {message.from_user.id} is not admin")