Задать вопрос

Почему зависает авторизация Telethon на двухфакторной аутентификации?

Из-за отсутствия обновлений Pyrogram, хочу перейти на Telethon. И сразу же проблемы. При авторизации не приходит запрос на двухфакторную аутентификацию:
1. Ввожу номер телефона
2. На аккаунт приходит код
3. Ввожу код в программу
4. Всё, больше ничего не происходит
Даже пробовал вручную мониторить исключение - разницы никакой.
from telethon import TelegramClient
from telethon.errors import SessionPasswordNeededError

api_id = ...
api_hash = ...

client = TelegramClient('my_session', api_id, api_hash)


async def main():
    try:
        await client.start()
    except SessionPasswordNeededError:
        password = input("Введите пароль для двухфакторной аутентификации: ")
        await client.sign_in(password=password)

    me = await client.get_me()
    print(me.stringify())


with client:
    client.loop.run_until_complete(main())


В чём может быть проблема, как исправить?
Без двухфакторки успешно авторизировался, создалась сессия. Потом включил двухфакторку, могу работать со старой сессией. Но это конечно не решение проблемы, а костыль.
  • Вопрос задан
  • 367 просмотров
Подписаться 1 Простой 4 комментария
Решения вопроса 1
EntireMusic
@EntireMusic Автор вопроса
(:
Основная проблема в файле библиотеки /telethon/client/auth.py в строке 23 - библиотека и метод getpass.getpass() не работает в консоли PyCharm в которой запускается бот, на этом месте программа и зависает.

Возможное решение проблемы - изменить 23 строку:
password: typing.Union[typing.Callable[[], str], str] = lambda: getpass.getpass('Please enter your password: '),
на
password: typing.Union[typing.Callable[[], str], str] = lambda: input('Please enter your password: '),

* после переустановки или обновления Telethon нужно будет делать это повторно

Вторая проблема - если явно передать строку с паролем в метод start(), то он должен работать, НО при проверке кода, внутри того же файла, атрибут password почему-то всеравно остаётся lambda-функцией. Позже попробую найти почему так и как это исправить.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы