From ed3c141f5e2b1238eb4168229cb52ef5c756c117 Mon Sep 17 00:00:00 2001 From: MrKomodoDragon <74436682+MrKomodoDragon@users.noreply.github.com> Date: Wed, 14 Apr 2021 19:09:40 -0700 Subject: [PATCH] [commands] Add `clean_prefix` attribute to commands.Context --- discord/ext/commands/context.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/discord/ext/commands/context.py b/discord/ext/commands/context.py index cbd285977..3b938469a 100644 --- a/discord/ext/commands/context.py +++ b/discord/ext/commands/context.py @@ -206,6 +206,20 @@ class Context(discord.abc.Messageable): async def _get_channel(self): return self.channel + @property + def clean_prefix(self): + """:class:`str`: The cleaned up invoke prefix. i.e. mentions are ``@name`` instead of ``<@id>``. + + .. versionadded:: 2.0 + """ + user = self.guild.me if self.guild else self.bot.user + # this breaks if the prefix mention is not the bot itself but I + # consider this to be an *incredibly* strange use case. I'd rather go + # for this common use case rather than waste performance for the + # odd one. + pattern = re.compile(r"<@!?%s>" % user.id) + return pattern.sub("@%s" % user.display_name.replace('\\', r'\\'), self.prefix) + @property def cog(self): """Optional[:class:`.Cog`]: Returns the cog associated with this context's command. None if it does not exist."""