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