Remove phone and hash from sign_up

This commit is contained in:
Lonami Exo 2022-02-16 12:59:52 +01:00
parent 90bd5de74a
commit 1029c38d7e
3 changed files with 13 additions and 28 deletions

View File

@ -982,3 +982,4 @@ is_connected is now a property (consistent with the rest of ``is_`` properties)
send_code_request now returns a custom type (reducing raw api).
sign_in no longer has phone or phone_hash (these are impl details, and now it's less error prone). also mandatory code=. also no longer is a no-op if already logged in. different error for sign up required.
send code / sign in now only expect a single phone. resend code with new phone is send code, not resend.
sign_up code is also now a kwarg. and no longer noop if already loggedin.

View File

@ -233,17 +233,17 @@ async def sign_in(
return await _update_session_state(self, result.user)
async def sign_up(
self: 'TelegramClient',
code: typing.Union[str, int],
first_name: str,
last_name: str = '',
*,
phone: str = None,
phone_code_hash: str = None) -> '_tl.User':
me = await self.get_me()
if me:
return me
code: typing.Union[str, int]) -> '_tl.User':
if not self._phone_code_hash:
raise ValueError('Must call client.send_code_request before sign up')
phone, phone_code_hash = self._phone_code_hash
# To prevent abuse, one has to try to sign in before signing up. This
# is the current way in which Telegram validates the code to sign up.
@ -259,18 +259,13 @@ async def sign_up(
code=code,
phone_code_hash=phone_code_hash,
)
except errors.PhoneNumberUnoccupiedError:
except errors.SignUpRequired:
pass # code is correct and was used, now need to sign in
if self._tos and self._tos.text:
sys.stderr.write("{}\n".format(self._tos.text))
sys.stderr.flush()
if not self._phone_code_hash:
raise ValueError('Must call client.send_code_request before sign up')
phone, phone_code_hash = self._phone_code_hash
result = await self(_tl.fn.auth.SignUp(
phone_number=phone,
phone_code_hash=phone_code_hash,
@ -279,8 +274,7 @@ async def sign_up(
))
if self._tos:
await self(
_tl.fn.help.AcceptTermsOfService(self._tos.id))
await self(_tl.fn.help.AcceptTermsOfService(self._tos.id))
return await _update_session_state(self, result.user)

View File

@ -444,12 +444,10 @@ class TelegramClient:
@forward_call(auth.sign_up)
async def sign_up(
self: 'TelegramClient',
code: typing.Union[str, int],
first_name: str,
last_name: str = '',
*,
phone: str = None,
phone_code_hash: str = None) -> '_tl.User':
code: typing.Union[str, int]) -> '_tl.User':
"""
Signs up to Telegram as a new user account.
@ -463,22 +461,14 @@ class TelegramClient:
and https://core.telegram.org/api/terms.
Arguments
code (`str` | `int`):
The code sent by Telegram
first_name (`str`):
The first name to be used by the new account.
last_name (`str`, optional)
Optional last name.
phone (`str` | `int`, optional):
The phone to sign up. This will be the last phone used by
default (you normally don't need to set this).
phone_code_hash (`str`, optional):
The hash returned by `send_code_request`. This can be left as
`None` to use the last hash known for the phone to be used.
code (`str` | `int`):
The code sent by Telegram
Returns
The new created :tl:`User`.
@ -490,7 +480,7 @@ class TelegramClient:
await client.send_code_request(phone)
code = input('enter code: ')
await client.sign_up(code, first_name='Anna', last_name='Banana')
await client.sign_up('Anna', 'Banana', code=code)
"""
@forward_call(auth.send_code_request)