mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-07-05 21:03:10 +03:00
Support start() retrying on PasswordHashInvalidError
This commit is contained in:
parent
4d1272f1d2
commit
aaa7ec757b
|
@ -19,7 +19,7 @@ class AuthMethods(MessageParseMethods, UserMethods):
|
||||||
phone=lambda: input('Please enter your phone: '),
|
phone=lambda: input('Please enter your phone: '),
|
||||||
password=lambda: getpass.getpass('Please enter your password: '),
|
password=lambda: getpass.getpass('Please enter your password: '),
|
||||||
bot_token=None, force_sms=False, code_callback=None,
|
bot_token=None, force_sms=False, code_callback=None,
|
||||||
first_name='New User', last_name=''):
|
first_name='New User', last_name='', max_attempts=3):
|
||||||
"""
|
"""
|
||||||
Convenience method to interactively connect and sign in if required,
|
Convenience method to interactively connect and sign in if required,
|
||||||
also taking into consideration that 2FA may be enabled in the account.
|
also taking into consideration that 2FA may be enabled in the account.
|
||||||
|
@ -66,6 +66,10 @@ class AuthMethods(MessageParseMethods, UserMethods):
|
||||||
last_name (`str`, optional):
|
last_name (`str`, optional):
|
||||||
Similar to the first name, but for the last. Optional.
|
Similar to the first name, but for the last. Optional.
|
||||||
|
|
||||||
|
max_attempts (`int`, optional):
|
||||||
|
How many times the code/password callback should be
|
||||||
|
retried or switching between signing in and signing up.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
This `TelegramClient`, so initialization
|
This `TelegramClient`, so initialization
|
||||||
can be chained with ``.start()``.
|
can be chained with ``.start()``.
|
||||||
|
@ -103,7 +107,6 @@ class AuthMethods(MessageParseMethods, UserMethods):
|
||||||
|
|
||||||
me = None
|
me = None
|
||||||
attempts = 0
|
attempts = 0
|
||||||
max_attempts = 3
|
|
||||||
two_step_detected = False
|
two_step_detected = False
|
||||||
|
|
||||||
sent_code = await self.send_code_request(phone, force_sms=force_sms)
|
sent_code = await self.send_code_request(phone, force_sms=force_sms)
|
||||||
|
@ -143,10 +146,20 @@ class AuthMethods(MessageParseMethods, UserMethods):
|
||||||
"Two-step verification is enabled for this account. "
|
"Two-step verification is enabled for this account. "
|
||||||
"Please provide the 'password' argument to 'start()'."
|
"Please provide the 'password' argument to 'start()'."
|
||||||
)
|
)
|
||||||
# TODO If callable given make it retry on invalid
|
|
||||||
if callable(password):
|
if callable(password):
|
||||||
password = password()
|
for _ in range(max_attempts):
|
||||||
me = await self.sign_in(phone=phone, password=password)
|
try:
|
||||||
|
me = await self.sign_in(
|
||||||
|
phone=phone, password=password())
|
||||||
|
break
|
||||||
|
except errors.PasswordHashInvalidError:
|
||||||
|
print('Invalid password. Please try again',
|
||||||
|
file=sys.stderr)
|
||||||
|
else:
|
||||||
|
raise errors.PasswordHashInvalidError()
|
||||||
|
else:
|
||||||
|
me = await self.sign_in(phone=phone, password=password)
|
||||||
|
|
||||||
# We won't reach here if any step failed (exit by exception)
|
# We won't reach here if any step failed (exit by exception)
|
||||||
signed, name = 'Signed in successfully as', utils.get_display_name(me)
|
signed, name = 'Signed in successfully as', utils.get_display_name(me)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user