shopbot/bot/commands/command.py
2024-12-24 21:08:03 +03:00

48 lines
1.5 KiB
Python

import logging
from aiogram import Router
from aiogram.types import Message
from aiogram.filters import CommandStart, Command
from aiogram_dialog import DialogManager, StartMode
from sqlalchemy.exc import SQLAlchemyError
from bot.database import register_user
from bot.states import StartSG, AdminSG
from environs import Env
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")