diff --git a/telethon/client/auth.py b/telethon/client/auth.py index ea9c0f46..47cec6d0 100644 --- a/telethon/client/auth.py +++ b/telethon/client/auth.py @@ -7,6 +7,7 @@ import warnings from .. import utils, helpers, errors, password as pwd_mod from ..tl import types, functions, custom +from .._updates import SessionState if typing.TYPE_CHECKING: from .telegramclient import TelegramClient @@ -371,7 +372,7 @@ class AuthMethods: self._tos = result.terms_of_service raise errors.PhoneNumberUnoccupiedError(request=request) - return self._on_login(result.user) + return await self._on_login(result.user) async def sign_up( self: 'TelegramClient', @@ -466,9 +467,9 @@ class AuthMethods: await self( functions.help.AcceptTermsOfServiceRequest(self._tos.id)) - return self._on_login(result.user) + return await self._on_login(result.user) - def _on_login(self, user): + async def _on_login(self, user): """ Callback called whenever the login or sign up process completes. @@ -478,6 +479,9 @@ class AuthMethods: self._self_input_peer = utils.get_input_peer(user, allow_self=False) self._authorized = True + state = await self(functions.updates.GetStateRequest()) + self._message_box.load(SessionState(0, 0, 0, state.pts, state.qts, int(state.date.timestamp()), state.seq, 0), []) + return user async def send_code_request( diff --git a/telethon/client/telegrambaseclient.py b/telethon/client/telegrambaseclient.py index 9875beb0..1393cfeb 100644 --- a/telethon/client/telegrambaseclient.py +++ b/telethon/client/telegrambaseclient.py @@ -559,6 +559,11 @@ class TelegramBaseClient(abc.ABC): LAYER, self._init_request )) + if self._message_box.is_empty(): + me = await self.get_me() + if me: + await self._on_login(me) # also calls GetState to initialize the MessageBox + self._updates_handle = self.loop.create_task(self._update_loop()) self._keepalive_handle = self.loop.create_task(self._keepalive_loop())