diff --git a/app/handlers/registration.py b/app/handlers/registration.py index e54204f..938c2ba 100644 --- a/app/handlers/registration.py +++ b/app/handlers/registration.py @@ -1,17 +1,18 @@ import os from asyncio import Event, wait_for, TimeoutError - from aiogram import Router, Bot from aiogram.filters import CommandStart from aiogram.types import Message, User - from sqlalchemy import insert, select - +from loguru import logger from keyboards import create_inline_kb from database import async_session_, Worker +from filters import IsRegister + registration_router = Router() +registration_router.message.filter(IsRegister() or CommandStart()) registration_confirm: dict[int, Event] = {} user_info_template = ("Новый пользователь ждет регистрации:\n" "Имя: {}\n" @@ -23,13 +24,11 @@ admins_ids = list(map(int, os.getenv("BOT_ADMINS").split(","))) @registration_router.message(CommandStart()) -async def registration_command(message: Message, bot: Bot): +async def start_command(message: Message, bot: Bot): async with async_session_() as session: - async with session.begin(): - result = await session.execute(select(Worker).where(Worker.telegram_id == message.from_user.id)) - user = result.scalars().first() + result = await session.execute(select(Worker).where(Worker.telegram_id == message.from_user.id)) + user = result.scalars().first() if not user: - user = message.from_user dict_for_inline = {f'reg_@{user.id}': 'Allow', f'del_@{user.id}': 'Reject'} user_info = user_info_template.format(user.first_name, user.last_name if user.last_name else 'Не указана', @@ -39,8 +38,11 @@ async def registration_command(message: Message, bot: Bot): await bot.send_message(chat_id=admin, text=user_info) await bot.send_message(chat_id=admin, text='Зарегистрировать пользователя', reply_markup=create_inline_kb(width=2, **dict_for_inline)) - except Exception as err: - pass + await message.answer("Запрос на регистрацию отправлен администратору, ожидайте подтверждения.") + + except Exception: + logger.error(f"{start_command.__name__} failed") + reg_confirm = Event() registration_confirm[user.id] = reg_confirm try: @@ -49,7 +51,7 @@ async def registration_command(message: Message, bot: Bot): async with local_session.begin(): local_session.add(Worker(telegram_id=user.id, name=user.first_name)) - await message.answer("Регистрация подтверждена") + await message.answer("Регистрация подтверждена, для просмотра доступных действий нажмите кнопку 'MENU'") except TimeoutError: await message.answer("Время ожидания истекло.") @@ -57,3 +59,8 @@ async def registration_command(message: Message, bot: Bot): else: await message.answer("Работа бота возобновлена") + + +@registration_router.message() +async def catch_message(message: Message): + await message.answer("Для работы с ботом, требуется регистрация\nНажмите /start для регистрации") \ No newline at end of file