diff options
| author | Rapptz <[email protected]> | 2015-08-23 02:43:04 -0400 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2015-08-23 02:43:04 -0400 |
| commit | 1f980361e3a82bfd133c76633b29ded7e46f4aa8 (patch) | |
| tree | 7722adfda8cdd711b49d7703ea3b0386dc216690 /discord | |
| parent | Handle user update events. (diff) | |
| download | discord.py-1f980361e3a82bfd133c76633b29ded7e46f4aa8.tar.xz discord.py-1f980361e3a82bfd133c76633b29ded7e46f4aa8.zip | |
Sandbox events so exceptions being thrown don't break the client.
Diffstat (limited to 'discord')
| -rw-r--r-- | discord/client.py | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/discord/client.py b/discord/client.py index 8278330a..e31c04f5 100644 --- a/discord/client.py +++ b/discord/client.py @@ -127,12 +127,18 @@ class Client(object): else: return [] + def _invoke_event(self, event_name, *args, **kwargs): + try: + self.events[event_name](*args, **kwargs) + except Exception as e: + pass + def _received_message(self, msg): response = json.loads(str(msg)) if response.get('op') != 0: return - self.events['on_response'](response) + self._invoke_event('on_response', response) event = response.get('t') data = response.get('d') @@ -156,7 +162,7 @@ class Client(object): self.keep_alive = _keep_alive_handler(interval, self.ws) # we're all ready - self.events['on_ready']() + self._invoke_event('on_ready') elif event == 'MESSAGE_CREATE': channel = self.get_channel(data.get('channel_id')) message = Message(channel=channel, **data) @@ -173,7 +179,7 @@ class Client(object): older_message = self._get_message(data.get('id')) if older_message is not None: message = Message(channel=older_message.channel, **data) - self.events['on_message_edit'](older_message, message) + self._invoke_event('on_message_edit', older_message, message) older_message.edited_timestamp = message.edited_timestamp else: # if we couldn't find the message in our cache, just add it to the list @@ -195,7 +201,7 @@ class Client(object): server.members.remove(user) # call the event now - self.events['on_status'](server, user, status, data.get('game_id')) + self._invoke_event('on_status', server, user, status, data.get('game_id')) elif event == 'USER_UPDATE': self.user = User(**data) |