47 lines
1.5 KiB
Python
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")
|