aboutsummaryrefslogtreecommitdiff
path: root/discord/message.py
diff options
context:
space:
mode:
authorRapptz <[email protected]>2017-03-14 19:12:30 -0400
committerRapptz <[email protected]>2017-03-14 19:12:30 -0400
commit51b0baeb9dde8845e48b988c45e2b30a8734ad8d (patch)
tree9e10750da611fecbe7852ce62d38d22ac9dd4ab2 /discord/message.py
parentRemove Message.edited_timestamp in favour of Message.edited_at (diff)
downloaddiscord.py-51b0baeb9dde8845e48b988c45e2b30a8734ad8d.tar.xz
discord.py-51b0baeb9dde8845e48b988c45e2b30a8734ad8d.zip
Speed up message update handling.
Apparently, checking if something is not None and then calling it is faster than having an identity function that will just return the original value untransformed, such as a lambda or doing a str(str) call
Diffstat (limited to 'discord/message.py')
-rw-r--r--discord/message.py19
1 files changed, 11 insertions, 8 deletions
diff --git a/discord/message.py b/discord/message.py
index ccb4fda9..00e017f8 100644
--- a/discord/message.py
+++ b/discord/message.py
@@ -125,13 +125,16 @@ class Message:
def __repr__(self):
return '<Message id={0.id} pinned={0.pinned} author={0.author!r}>'.format(self)
- def _try_patch(self, data, key, transform):
+ def _try_patch(self, data, key, transform=None):
try:
value = data[key]
except KeyError:
pass
else:
- setattr(self, key, transform(value))
+ if transform is None:
+ setattr(self, key, value)
+ else:
+ setattr(self, key, transform(value))
def _add_reaction(self, data):
emoji = self._state.get_reaction_emoji(data['emoji'])
@@ -171,14 +174,14 @@ class Message:
def _update(self, channel, data):
self.channel = channel
self._edited_timestamp = utils.parse_time(data.get('edited_timestamp'))
- self._try_patch(data, 'pinned', bool)
- self._try_patch(data, 'mention_everyone', bool)
- self._try_patch(data, 'tts', bool)
+ self._try_patch(data, 'pinned')
+ self._try_patch(data, 'mention_everyone')
+ self._try_patch(data, 'tts')
self._try_patch(data, 'type', lambda x: try_enum(MessageType, x))
- self._try_patch(data, 'content', str)
- self._try_patch(data, 'attachments', lambda x: x)
+ self._try_patch(data, 'content')
+ self._try_patch(data, 'attachments')
self._try_patch(data, 'embeds', lambda x: list(map(Embed.from_data, x)))
- self._try_patch(data, 'nonce', lambda x: x)
+ self._try_patch(data, 'nonce')
for handler in ('author', 'mentions', 'mention_roles', 'call'):
try: