From 0fb8c2ba6a1d7bf2eae78c20a668f454275cd78b Mon Sep 17 00:00:00 2001 From: geekiot Date: Fri, 7 Nov 2025 15:45:15 +0500 Subject: [PATCH] Add [verification]: add dialog without checking verification --- src/bot/handlers/unverified/callbacks/menu.py | 53 ++++++++++++++++--- src/bot/handlers/unverified/commands/menu.py | 10 ++-- src/bot/utils/keyboards/__init__.py | 45 +++++++++++++++- 3 files changed, 96 insertions(+), 12 deletions(-) diff --git a/src/bot/handlers/unverified/callbacks/menu.py b/src/bot/handlers/unverified/callbacks/menu.py index 7ecea40..4ffe781 100644 --- a/src/bot/handlers/unverified/callbacks/menu.py +++ b/src/bot/handlers/unverified/callbacks/menu.py @@ -1,21 +1,62 @@ from aiogram.types import CallbackQuery, Message +from sqlalchemy.ext.asyncio import AsyncSession from bot.handlers import unverified_registry -from bot.utils.keyboards import get_menu_markup +from bot.services import VerificationStatus, verify_student +from bot.utils.keyboards import ( + get_start_verification_markup, + get_verification_info_markup, +) from bot.utils.types import ChatType +from database import TelegramUser @unverified_registry.register( - triggers="menu", + triggers="verification_start", chat_types=ChatType.PRIVATE, - description="Menu Callback Unverified Description", + description="Callback For Start Verification Description", is_callback=True, ) -async def cmd_menu(call: CallbackQuery) -> None: +async def call_start_verification(call: CallbackQuery) -> None: if not isinstance(call.message, Message): return await call.message.edit_text( - "Menu Callback Unverified Text", - reply_markup=get_menu_markup(), + "Message Info Verification Text", + reply_markup=get_verification_info_markup(), + ) + + +@unverified_registry.register( + triggers="verification_attempt", + chat_types=ChatType.PRIVATE, + description="Callback For Attempt Verification Description", + is_callback=True, +) +async def call_attempt_verification( + call: CallbackQuery, + session: AsyncSession, + telegram_user: TelegramUser, +) -> None: + if not isinstance(call.message, Message): + return + + status = await verify_student( + tg_user=telegram_user, + name="DON'T FORGET TO REPLACE THIS STUPID BULLSHIT TEMPLATE", + student_id=12302, + group_id="abc", + session=session, + ) + + if status == VerificationStatus.SUCCESSFULLY_BOUND: + await call.message.edit_text( + "Sucessfully!", + reply_markup=None, + ) + return + + await call.message.edit_text( + f"Error: {status}", + reply_markup=get_start_verification_markup(), ) diff --git a/src/bot/handlers/unverified/commands/menu.py b/src/bot/handlers/unverified/commands/menu.py index a1432f9..c37f829 100644 --- a/src/bot/handlers/unverified/commands/menu.py +++ b/src/bot/handlers/unverified/commands/menu.py @@ -1,16 +1,16 @@ from aiogram.types import Message from bot.handlers import unverified_registry -from bot.utils.keyboards import get_menu_markup +from bot.utils.keyboards import get_start_verification_markup from bot.utils.types import ChatType @unverified_registry.register( chat_types=ChatType.PRIVATE, - description="Menu Message Unverified Description", + description="Message For Start Verification Description", ) -async def cmd_menu(message: Message) -> None: +async def msg_start_verification(message: Message) -> None: await message.answer( - "Menu Message Unverified Text", - reply_markup=get_menu_markup(), + "Message For Start Verification Text", + reply_markup=get_start_verification_markup(), ) diff --git a/src/bot/utils/keyboards/__init__.py b/src/bot/utils/keyboards/__init__.py index 6bb3ee2..9b25045 100644 --- a/src/bot/utils/keyboards/__init__.py +++ b/src/bot/utils/keyboards/__init__.py @@ -1,4 +1,8 @@ -__all__ = ["get_menu_markup"] +__all__ = [ + "get_start_verification_markup", + "get_verification_info_markup", + "get_menu_markup", +] from aiogram.utils.keyboard import ( @@ -8,6 +12,45 @@ from aiogram.utils.keyboard import ( ) +def get_start_verification_markup() -> InlineKeyboardMarkup: + """ + Reply markup for the bot verification start menu. + """ + builder = InlineKeyboardBuilder() + builder.add( + InlineKeyboardButton( + text="Start Verification", + callback_data="verification_start", + ) + ) + return builder.as_markup() + + +def get_verification_info_markup() -> InlineKeyboardMarkup: + builder = InlineKeyboardBuilder() + builder.add( + InlineKeyboardButton( + text="Full name", + callback_data="verification_change_full_name", + ), + InlineKeyboardButton( + text="Student ID", + callback_data="verification_change_student_id", + ), + InlineKeyboardButton( + text="Group ID", + callback_data="verification_change_group_id", + ), + InlineKeyboardButton( + text="Verify attempt", + callback_data="verification_attempt", + ), + ) + builder.adjust(1) + + return builder.as_markup() + + def get_menu_markup() -> InlineKeyboardMarkup: """ Reply markup for the bot callback menu & message menu.