✨ Реализована интерактивная авторизация UserBot через бот
- Создан модуль userbot_auth.py для управления авторизацией через Telethon - Добавлены обработчики для всех этапов авторизации (номер, SMS, 2FA) - Интегрирована авторизация в меню UserBot - Добавлена кнопка 🔐 Авторизация в главное меню UserBot - Полная обработка ошибок и подробные сообщения пользователю - Сессии сохраняются безопасно в PostgreSQL - Документация с примерами использования Этапы авторизации: 1. Пользователь нажимает 🔐 Авторизация в меню UserBot 2. Вводит номер телефона в формате +XX-XXX-XXX-XXXX 3. Получает SMS с кодом подтверждения (5 цифр) 4. При необходимости вводит пароль 2FA 5. Сессия автоматически сохраняется и UserBot готов к работе
This commit is contained in:
@@ -29,6 +29,13 @@ from app.handlers import (
|
||||
userbot_collect_members,
|
||||
userbot_parse_members,
|
||||
cancel_userbot,
|
||||
auth_menu,
|
||||
auth_info,
|
||||
start_phone_input,
|
||||
handle_phone,
|
||||
handle_code,
|
||||
handle_password,
|
||||
cancel_auth,
|
||||
)
|
||||
from app.handlers.message_manager import (
|
||||
create_message_start,
|
||||
@@ -132,6 +139,47 @@ async def main() -> None:
|
||||
# Добавляем обработчик для кнопки UserBot в главном меню
|
||||
application.add_handler(CallbackQueryHandler(userbot_menu, pattern=f"^{CallbackType.MANAGE_USERBOT.value}$"), group=1)
|
||||
|
||||
# Обработчики авторизации UserBot
|
||||
application.add_handler(CallbackQueryHandler(auth_menu, pattern="^auth_menu$"), group=1)
|
||||
application.add_handler(CallbackQueryHandler(auth_info, pattern="^auth_info$"), group=1)
|
||||
application.add_handler(CallbackQueryHandler(start_phone_input, pattern="^auth_start_phone$"), group=1)
|
||||
|
||||
# Конверсейшн для ввода номера телефона
|
||||
auth_phone_conversation = ConversationHandler(
|
||||
entry_points=[], # Входная точка через callback query выше
|
||||
states={
|
||||
2: [MessageHandler(filters.TEXT & ~filters.COMMAND, handle_phone)], # AUTH_PHONE = 2
|
||||
},
|
||||
fallbacks=[CallbackQueryHandler(cancel_auth, pattern="^cancel_auth$")],
|
||||
name="auth_phone",
|
||||
persistent=False
|
||||
)
|
||||
application.add_handler(auth_phone_conversation, group=1)
|
||||
|
||||
# Конверсейшн для ввода SMS кода
|
||||
auth_code_conversation = ConversationHandler(
|
||||
entry_points=[], # Входная точка через callback query выше
|
||||
states={
|
||||
3: [MessageHandler(filters.TEXT & ~filters.COMMAND, handle_code)], # AUTH_CODE = 3
|
||||
},
|
||||
fallbacks=[CallbackQueryHandler(cancel_auth, pattern="^cancel_auth$")],
|
||||
name="auth_code",
|
||||
persistent=False
|
||||
)
|
||||
application.add_handler(auth_code_conversation, group=1)
|
||||
|
||||
# Конверсейшн для ввода пароля 2FA
|
||||
auth_password_conversation = ConversationHandler(
|
||||
entry_points=[], # Входная точка через callback query выше
|
||||
states={
|
||||
4: [MessageHandler(filters.TEXT & ~filters.COMMAND, handle_password)], # AUTH_PASSWORD = 4
|
||||
},
|
||||
fallbacks=[CallbackQueryHandler(cancel_auth, pattern="^cancel_auth$")],
|
||||
name="auth_password",
|
||||
persistent=False
|
||||
)
|
||||
application.add_handler(auth_password_conversation, group=1)
|
||||
|
||||
# Select group callbacks
|
||||
application.add_handler(CallbackQueryHandler(select_groups, pattern=r"^select_group_\d+$"), group=1)
|
||||
application.add_handler(CallbackQueryHandler(select_groups, pattern=r"^done_groups$"), group=1)
|
||||
|
||||
Reference in New Issue
Block a user