mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-02-11 00:50:56 +03:00
Allow start when the loop is not running
This commit is contained in:
parent
db5cb74bdd
commit
9c6d2894fc
|
@ -14,7 +14,7 @@ class AuthMethods(MessageParseMethods, UserMethods):
|
||||||
|
|
||||||
# region Public methods
|
# region Public methods
|
||||||
|
|
||||||
async def start(
|
def start(
|
||||||
self,
|
self,
|
||||||
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: '),
|
||||||
|
@ -37,6 +37,10 @@ class AuthMethods(MessageParseMethods, UserMethods):
|
||||||
Please enter your password: *******
|
Please enter your password: *******
|
||||||
(You are now logged in)
|
(You are now logged in)
|
||||||
|
|
||||||
|
If the event loop is already running, this method returns a
|
||||||
|
coroutine that you should await on your own code; otherwise
|
||||||
|
the loop is ran until said coroutine completes.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
phone (`str` | `int` | `callable`):
|
phone (`str` | `int` | `callable`):
|
||||||
The phone (or callable without arguments to get it)
|
The phone (or callable without arguments to get it)
|
||||||
|
@ -74,7 +78,6 @@ class AuthMethods(MessageParseMethods, UserMethods):
|
||||||
This `TelegramClient`, so initialization
|
This `TelegramClient`, so initialization
|
||||||
can be chained with ``.start()``.
|
can be chained with ``.start()``.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if code_callback is None:
|
if code_callback is None:
|
||||||
def code_callback():
|
def code_callback():
|
||||||
return input('Please enter the code you received: ')
|
return input('Please enter the code you received: ')
|
||||||
|
@ -91,6 +94,24 @@ class AuthMethods(MessageParseMethods, UserMethods):
|
||||||
raise ValueError('Both a phone and a bot token provided, '
|
raise ValueError('Both a phone and a bot token provided, '
|
||||||
'must only provide one of either')
|
'must only provide one of either')
|
||||||
|
|
||||||
|
coro = self._start(
|
||||||
|
phone=phone,
|
||||||
|
password=password,
|
||||||
|
bot_token=bot_token,
|
||||||
|
force_sms=force_sms,
|
||||||
|
code_callback=code_callback,
|
||||||
|
first_name=first_name,
|
||||||
|
last_name=last_name,
|
||||||
|
max_attempts=max_attempts
|
||||||
|
)
|
||||||
|
return (
|
||||||
|
coro if self.loop.is_running()
|
||||||
|
else self.loop.run_until_complete(coro)
|
||||||
|
)
|
||||||
|
|
||||||
|
async def _start(
|
||||||
|
self, phone, password, bot_token, force_sms,
|
||||||
|
code_callback, first_name, last_name, max_attempts):
|
||||||
if not self.is_connected():
|
if not self.is_connected():
|
||||||
await self.connect()
|
await self.connect()
|
||||||
|
|
||||||
|
|
|
@ -32,10 +32,11 @@ class UpdateMethods(UserMethods):
|
||||||
If the loop is already running, this method returns a coroutine
|
If the loop is already running, this method returns a coroutine
|
||||||
that you should await on your own code.
|
that you should await on your own code.
|
||||||
"""
|
"""
|
||||||
if self.loop.is_running():
|
coro = self._run_until_disconnected()
|
||||||
return self._run_until_disconnected() # Let the user await it
|
return (
|
||||||
else:
|
coro if self.loop.is_running()
|
||||||
self.loop.run_until_complete(self._run_until_disconnected())
|
else self.loop.run_until_complete(coro)
|
||||||
|
)
|
||||||
|
|
||||||
def on(self, event):
|
def on(self, event):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue
Block a user