diff options
Diffstat (limited to 'discord/state.py')
| -rw-r--r-- | discord/state.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/discord/state.py b/discord/state.py index 676ca513..53e453f3 100644 --- a/discord/state.py +++ b/discord/state.py @@ -54,7 +54,7 @@ log = logging.getLogger(__name__) ReadyState = namedtuple('ReadyState', ('launch', 'guilds')) class ConnectionState: - def __init__(self, *, dispatch, chunker, syncer, http, loop, **options): + def __init__(self, *, dispatch, chunker, handlers, syncer, http, loop, **options): self.loop = loop self.http = http self.max_messages = max(options.get('max_messages', 5000), 100) @@ -62,6 +62,7 @@ class ConnectionState: self.chunker = chunker self.syncer = syncer self.is_bot = None + self.handlers = handlers self.shard_count = None self._ready_task = None self._fetch_offline = options.get('fetch_offline_members', True) @@ -127,6 +128,14 @@ class ConnectionState: for index in reversed(removed): del self._listeners[index] + def call_handlers(self, key, *args, **kwargs): + try: + func = self.handlers[key] + except KeyError: + pass + else: + func(*args, **kwargs) + @property def self_id(self): u = self.user @@ -308,6 +317,7 @@ class ConnectionState: pass else: # dispatch the event + self.call_handlers('ready') self.dispatch('ready') finally: self._ready_task = None @@ -960,6 +970,7 @@ class AutoShardedConnectionState(ConnectionState): self._ready_task = None # dispatch the event + self.call_handlers('ready') self.dispatch('ready') def parse_ready(self, data): |