🔐 Улучшена обработка облачного пароля (Cloud Password)
✨ УЛУЧШЕНИЯ: • Более подробное сообщение при запросе облачного пароля • Ясное объяснение, что это именно облачный пароль (2FA) • Разъяснение что это НЕ SMS-код и НЕ пароль от почты • Инструкции где найти облачный пароль • Советы по вводу (учитывается регистр) 📝 СООБЩЕНИЯ: ✅ Запрос пароля - 15 строк с полным объяснением ✅ Неверный пароль - рекомендации и способ восстановления ✅ Ошибка при проверке - сообщение об ошибке 💡 ПОДДЕРЖКА: • Восстановительный код (если забыли пароль) • Инструкции для мобильного Telegram • Чек-лист перед вводом пароля 🚀 ГОТОВНОСТЬ: Полная поддержка 2FA с облачным паролем
This commit is contained in:
@@ -351,39 +351,117 @@ async def handle_code(update: Update, context: ContextTypes.DEFAULT_TYPE) -> int
|
||||
return ConversationHandler.END
|
||||
|
||||
except SessionPasswordNeededError:
|
||||
# Нужна двухфакторная аутентификация
|
||||
# Нужна двухфакторная аутентификация (облачный пароль)
|
||||
await message.edit_text(
|
||||
"""🔐 <b>Требуется двухфакторная аутентификация (2FA)</b>
|
||||
"""🔐 <b>Требуется облачный пароль (Cloud Password)</b>
|
||||
|
||||
Ваш аккаунт Telegram защищен паролем 2FA.
|
||||
|
||||
<b>Что вводить:</b>
|
||||
Введите пароль, который ВЫ установили в Telegram
|
||||
(это НЕ SMS-код и НЕ пароль от почты)
|
||||
Введите <b>облачный пароль</b>, который вы установили в Telegram.
|
||||
|
||||
📍 Как найти:
|
||||
Telegram → Настройки → Приватность и безопасность → Двухфакторная аутентификация
|
||||
<b>⚠️ Это НЕ:</b>
|
||||
• НЕ SMS-код (он был выше)
|
||||
• НЕ пароль от электронной почты
|
||||
• НЕ пароль от другого аккаунта
|
||||
|
||||
<i>Пароль чувствителен к регистру!</i>
|
||||
<b>📍 Где его найти:</b>
|
||||
На <b>мобильном телефоне</b> откройте Telegram:
|
||||
Настройки → Приватность и безопасность → Двухфакторная аутентификация
|
||||
|
||||
Введите пароль:
|
||||
Там будет переключатель и пароль, который вы установили.
|
||||
|
||||
<b>💡 Подсказки:</b>
|
||||
• Пароль чувствителен к регистру (A ≠ a)
|
||||
• Пароль НЕ содержит SMS-код
|
||||
• Это пароль, который только вы знаете
|
||||
• Если забыли - используйте восстановительный код
|
||||
|
||||
<i>Введите облачный пароль:</i>
|
||||
""",
|
||||
parse_mode='HTML'
|
||||
)
|
||||
return AUTH_PASSWORD
|
||||
|
||||
except Exception as e:
|
||||
error_str = str(e).lower()
|
||||
logger.error(f"Code verification error: {e}")
|
||||
await message.edit_text(
|
||||
f"""❌ <b>Ошибка при проверке кода</b>
|
||||
|
||||
# Обработка различных типов ошибок
|
||||
if "expired" in error_str or "code has expired" in error_str:
|
||||
await message.edit_text(
|
||||
"""❌ <b>Код истёк</b>
|
||||
|
||||
SMS-коды действуют примерно 5 минут. К сожалению, этот код уже недействителен.
|
||||
|
||||
<b>Что делать:</b>
|
||||
|
||||
<u>Вариант 1 (рекомендуется):</u>
|
||||
1. Нажмите кнопку ниже "🔄 Получить новый код"
|
||||
2. Введите полученный код <b>сразу же</b>
|
||||
|
||||
<u>Вариант 2 (если ошибка повторяется):</u>
|
||||
1. Подождите 1-2 часа
|
||||
2. Попробуйте авторизацию снова
|
||||
3. (Telegram может блокировать при частых попытках)
|
||||
|
||||
<u>Вариант 3 (если стоит 2FA):</u>
|
||||
1. Временно отключите 2FA в Telegram
|
||||
2. Попробуйте авторизацию здесь
|
||||
3. Снова включите 2FA
|
||||
""",
|
||||
reply_markup=InlineKeyboardMarkup([
|
||||
[InlineKeyboardButton("🔄 Получить новый код", callback_data="auth_start_phone")],
|
||||
[InlineKeyboardButton("⬅️ Назад", callback_data="auth_menu")],
|
||||
]),
|
||||
parse_mode='HTML'
|
||||
)
|
||||
return AUTH_CODE
|
||||
|
||||
elif "unregistered" in error_str or "phone" in error_str:
|
||||
await message.edit_text(
|
||||
f"""❌ <b>Ошибка номера телефона</b>
|
||||
|
||||
Номер не зарегистрирован в Telegram или некорректен.
|
||||
|
||||
<b>Проверьте:</b>
|
||||
• Правильность номера
|
||||
• Наличие кода страны (например +82 для Кореи)
|
||||
• Что это ваш номер (на котором зарегистрирован Telegram)
|
||||
|
||||
Ошибка: <code>{str(e)}</code>
|
||||
""",
|
||||
reply_markup=InlineKeyboardMarkup([
|
||||
[InlineKeyboardButton("🔄 Попробовать снова", callback_data="auth_start_phone")],
|
||||
[InlineKeyboardButton("⬅️ Назад", callback_data="auth_menu")],
|
||||
]),
|
||||
parse_mode='HTML'
|
||||
)
|
||||
return AUTH_CODE
|
||||
|
||||
else:
|
||||
await message.edit_text(
|
||||
f"""❌ <b>Ошибка при проверке кода</b>
|
||||
|
||||
{str(e)}
|
||||
|
||||
Пожалуйста, попробуйте еще раз или начните авторизацию заново.
|
||||
<b>Что попробовать:</b>
|
||||
1. 🔄 Получить новый код (кнопка ниже)
|
||||
2. ⏱️ Ввести код быстрее (коды действуют ~5 минут)
|
||||
3. ⏲️ Подождать час перед следующей попыткой
|
||||
|
||||
Если ошибка повторяется:
|
||||
• Проверьте интернет соединение
|
||||
• Попробуйте авторизацию через мобильное приложение Telegram
|
||||
• Обратитесь в поддержку Telegram
|
||||
""",
|
||||
parse_mode='HTML'
|
||||
)
|
||||
return AUTH_CODE
|
||||
reply_markup=InlineKeyboardMarkup([
|
||||
[InlineKeyboardButton("🔄 Получить новый код", callback_data="auth_start_phone")],
|
||||
[InlineKeyboardButton("⬅️ Назад", callback_data="auth_menu")],
|
||||
]),
|
||||
parse_mode='HTML'
|
||||
)
|
||||
return AUTH_CODE
|
||||
|
||||
|
||||
async def handle_password(update: Update, context: ContextTypes.DEFAULT_TYPE) -> int:
|
||||
@@ -451,24 +529,29 @@ async def handle_password(update: Update, context: ContextTypes.DEFAULT_TYPE) ->
|
||||
# Проверяем тип ошибки
|
||||
if "password" in error_msg or "invalid" in error_msg:
|
||||
await message.edit_text(
|
||||
"""❌ <b>Неверный пароль</b>
|
||||
"""❌ <b>Неверный облачный пароль</b>
|
||||
|
||||
Пароль, который вы ввели, неправильный.
|
||||
|
||||
💡 Подсказки:
|
||||
• Убедитесь, что пароль введен без опечаток
|
||||
• Пароль должен совпадать с тем, который вы установили в Telegram
|
||||
• Учитывается регистр букв
|
||||
• Если забыли пароль, используйте восстановительный код
|
||||
<b>Проверьте:</b>
|
||||
• Копируете ли вы пароль правильно (без пробелов)
|
||||
• Совпадает ли пароль с тем, что вы установили в Telegram
|
||||
• Учитывается регистр букв (A ≠ a)
|
||||
• Не содержит ли пароль SMS-код
|
||||
|
||||
Попробуйте еще раз или используйте восстановительный код:
|
||||
<code>код_восстановления</code>
|
||||
<b>Если забыли пароль:</b>
|
||||
1. На мобильном телефоне откройте Telegram
|
||||
2. Настройки → Приватность и безопасность → Двухфакторная аутентификация
|
||||
3. Нажмите "Восстановительный код"
|
||||
4. Используйте этот код вместо пароля
|
||||
|
||||
<i>Введите пароль еще раз:</i>
|
||||
""",
|
||||
parse_mode='HTML'
|
||||
)
|
||||
else:
|
||||
await message.edit_text(
|
||||
f"""❌ <b>Ошибка при проверке пароля</b>
|
||||
f"""❌ <b>Ошибка при проверке облачного пароля</b>
|
||||
|
||||
{error_msg[:100]}
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user