shopbot/bot/commands/command.py
2024-12-25 04:30:33 +03:00

47 lines
1.5 KiB
Python

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")