diff --git a/pyrogram/client/__init__.py b/pyrogram/client/__init__.py index abda446480..89cb3a85dc 100644 --- a/pyrogram/client/__init__.py +++ b/pyrogram/client/__init__.py @@ -17,6 +17,6 @@ # along with Pyrogram. If not, see . from .chat_action import ChatAction -from .client import Client +from .client import Client, ApiKey, Proxy from .parse_mode import ParseMode from .emoji import Emoji diff --git a/pyrogram/client/client.py b/pyrogram/client/client.py index 9c49058aa7..7c1d516b85 100644 --- a/pyrogram/client/client.py +++ b/pyrogram/client/client.py @@ -175,6 +175,9 @@ def __init__(self, self.download_queue = Queue() + self.load_session_hook = None + self.save_session_hook = None + def start(self): """Use this method to start the Client after creating it. Requires no parameters. @@ -183,16 +186,18 @@ def start(self): :class:`pyrogram.Error` """ self.load_config() - self.load_session(self.session_name) - - self.session = Session( - self.dc_id, - self.test_mode, - self.proxy, - self.auth_key, - self.api_key.api_id, - client=self - ) + if callable(self.load_session_hook): + self.load_session_hook(self) + else: + self.load_session(self.session_name) + self.session = Session( + self.dc_id, + self.test_mode, + self.proxy, + self.auth_key, + self.api_key.api_id, + client=self + ) self.session.start() @@ -202,7 +207,10 @@ def start(self): else: self.authorize_bot() - self.save_session() + if callable(self.save_session_hook): + self.save_session_hook(self) + else: + self.save_session() if self.token is None: self.get_dialogs()