fix registration,add filter
This commit is contained in:
@@ -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 для регистрации")
|
||||
Reference in New Issue
Block a user