From 613214f1976f4f81a65f4cd4ebece07ed73611d3 Mon Sep 17 00:00:00 2001 From: Rapptz Date: Thu, 17 Dec 2015 00:15:41 -0500 Subject: [PATCH] Add Message.clean_content property to get prettified mentions. --- discord/message.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/discord/message.py b/discord/message.py index f259032d7..b94d50c26 100644 --- a/discord/message.py +++ b/discord/message.py @@ -144,6 +144,32 @@ class Message(object): """ return re.findall(r'<#([0-9]+)>', self.content) + @utils.cached_property + def clean_content(self): + """A property that returns the content in a "cleaned up" + manner. This basically means that mentions are transformed + into the way the client shows it. e.g. ``<#id>`` will transform + into ``#name``. + """ + + transformations = { + re.escape('<#{0.id}>'.format(channel)): '#' + channel.name + for channel in self.channel_mentions + } + + mention_transforms = { + re.escape('<@{0.id}>'.format(member)): '@' + member.name + for member in self.mentions + } + + transformations.update(mention_transforms) + + def repl(obj): + return transformations.get(re.escape(obj.group(0)), '') + + pattern = re.compile('|'.join(transformations.keys())) + return pattern.sub(repl, self.content) + def _handle_upgrades(self, channel_id): self.server = None if self.channel is None: