From 6a0066b8b53f9343f882393bc6011b02d55f7797 Mon Sep 17 00:00:00 2001 From: Dan <14043624+delivrance@users.noreply.github.com> Date: Fri, 12 Oct 2018 17:57:34 +0200 Subject: [PATCH] Move loading plugins logic into a separate method --- pyrogram/client/client.py | 76 ++++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 37 deletions(-) diff --git a/pyrogram/client/client.py b/pyrogram/client/client.py index 48473cc2..fef929fc 100644 --- a/pyrogram/client/client.py +++ b/pyrogram/client/client.py @@ -223,6 +223,7 @@ class Client(Methods, BaseClient): self.load_config() self.load_session() + self.load_plugins() self.session = Session( self, @@ -230,43 +231,6 @@ class Client(Methods, BaseClient): self.auth_key ) - if self.plugins_dir is not None: - try: - dirs = os.listdir(self.plugins_dir) - except FileNotFoundError: - if self.plugins_dir == Client.PLUGINS_DIR: - log.info("No plugin loaded: default directory is missing") - else: - log.warning('No plugin loaded: "{}" directory is missing'.format(self.plugins_dir)) - else: - plugins_dir = self.plugins_dir.lstrip("./").replace("/", ".") - plugins_count = 0 - - for i in dirs: - module = import_module("{}.{}".format(plugins_dir, i.split(".")[0])) - - for j in dir(module): - # noinspection PyBroadException - try: - handler, group = getattr(module, j) - - if isinstance(handler, Handler) and isinstance(group, int): - self.add_handler(handler, group) - - log.info('{}("{}") from "{}/{}" loaded in group {}'.format( - type(handler).__name__, j, self.plugins_dir, i, group) - ) - - plugins_count += 1 - except Exception: - pass - - log.warning('Successfully loaded {} plugin{} from "{}"'.format( - plugins_count, - "s" if plugins_count > 1 else "", - self.plugins_dir - )) - self.session.start() self.is_started = True @@ -1009,6 +973,44 @@ class Client(Methods, BaseClient): if peer: self.peers_by_phone[k] = peer + def load_plugins(self): + if self.plugins_dir is not None: + try: + dirs = os.listdir(self.plugins_dir) + except FileNotFoundError: + if self.plugins_dir == Client.PLUGINS_DIR: + log.info("No plugin loaded: default directory is missing") + else: + log.warning('No plugin loaded: "{}" directory is missing'.format(self.plugins_dir)) + else: + plugins_dir = self.plugins_dir.lstrip("./").replace("/", ".") + plugins_count = 0 + + for i in dirs: + module = import_module("{}.{}".format(plugins_dir, i.split(".")[0])) + + for j in dir(module): + # noinspection PyBroadException + try: + handler, group = getattr(module, j) + + if isinstance(handler, Handler) and isinstance(group, int): + self.add_handler(handler, group) + + log.info('{}("{}") from "{}/{}" loaded in group {}'.format( + type(handler).__name__, j, self.plugins_dir, i, group) + ) + + plugins_count += 1 + except Exception: + pass + + log.warning('Successfully loaded {} plugin{} from "{}"'.format( + plugins_count, + "s" if plugins_count > 1 else "", + self.plugins_dir + )) + def save_session(self): auth_key = base64.b64encode(self.auth_key).decode() auth_key = [auth_key[i: i + 43] for i in range(0, len(auth_key), 43)]