roomONmoon
@roomONmoon

Как правильно обработать exception PasswordHashInvalidError?

Значит есть вот такой код авторизации по QR.
async def login_by_qrcode(self):
        if not self.client.is_connected():
            await self.client.connect()
        qr_login = await self.client.qr_login()
        r = False
        while not r:
            generate_qrcode(qr_login.url)
            try:
                r = await qr_login.wait(60)
            except asyncio.exceptions.TimeoutError:
                await qr_login.recreate()
            except telethon.errors.SessionPasswordNeededError: # отлавливаем 2ух факторку
                password = input("password: ")
                try:
                    await self.client.sign_in(password=password) # отправляем пароль
                except telethon.errors.rpcerrorlist.PasswordHashInvalidError: # отлавливаем неправильный пароль
                    password = input("Input password again: ") 
                    await self.client.sign_in(password=password) # вводим неправильный пароль и падаем в stdout


Как правильно переписать последний блок try except так, чтобы он постоянно отлавливал PasswordHashInvalidError ?
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Огранизовать цикл while True, при вводе правильного пароля (т.е. если не было исключения) делать break.
while True:
    try:
        attempt_stuff_and_things()
    except SomeException as err:
        react_to_error(err)
    else:  # исключения не было
        break
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы