🔐 Добавлена полная поддержка 2FA авторизации
✨ Улучшения: ✅ Расширенная обработка ошибок при вводе пароля 2FA ✅ Различие между неверным паролем и другими ошибками ✅ Подробные подсказки для пользователя при ошибках ✅ Поддержка восстановительных кодов 2FA ✅ Улучшенное сообщение при запросе пароля 2FA 📖 Документация: ✅ Создан 2FA_GUIDE.md (подробное руководство) ✅ Обновлена информация о 2FA в боте (auth_info) ✅ Добавлены примеры и советы по использованию 🔐 Обработка ошибок: • Неверный пароль - ясное сообщение + подсказки • Пароль истек - предложение повторить • SMS-код истек - инструкция по получению нового • Много попыток - информация о ограничениях 📱 Процесс с 2FA: 1. Номер телефона 2. SMS-код (5 цифр) 3. Пароль 2FA (если включена) 4. ✅ Авторизация успешна 💡 Основные преимущества: • Ясные объяснения на каждом этапе • Подсказки при забывании пароля • Безопасное обращение с паролями (не сохраняются) • Поддержка восстановительных кодов
This commit is contained in:
@@ -142,43 +142,25 @@ async def main() -> None:
|
||||
# Обработчики авторизации 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 выше
|
||||
# ConversationHandler для полного процесса авторизации
|
||||
auth_conversation = ConversationHandler(
|
||||
entry_points=[
|
||||
CallbackQueryHandler(start_phone_input, pattern="^auth_start_phone$"),
|
||||
],
|
||||
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={
|
||||
3: [MessageHandler(filters.TEXT & ~filters.COMMAND, handle_code)], # AUTH_CODE = 3
|
||||
4: [MessageHandler(filters.TEXT & ~filters.COMMAND, handle_password)], # AUTH_PASSWORD = 4
|
||||
},
|
||||
fallbacks=[CallbackQueryHandler(cancel_auth, pattern="^cancel_auth$")],
|
||||
name="auth_password",
|
||||
fallbacks=[
|
||||
CallbackQueryHandler(cancel_auth, pattern="^cancel_auth$"),
|
||||
CommandHandler("cancel", cancel_auth),
|
||||
],
|
||||
name="userbot_auth",
|
||||
persistent=False
|
||||
)
|
||||
application.add_handler(auth_password_conversation, group=1)
|
||||
application.add_handler(auth_conversation, group=1)
|
||||
|
||||
# Select group callbacks
|
||||
application.add_handler(CallbackQueryHandler(select_groups, pattern=r"^select_group_\d+$"), group=1)
|
||||
|
||||
Reference in New Issue
Block a user