aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKhazhismel <[email protected]>2016-07-31 22:12:24 -0700
committerKhazhismel <[email protected]>2016-07-31 22:39:45 -0700
commitc72c23278d32c3defc5edc0f0c9c24eeeb94fa7e (patch)
tree117412ecdbc905039e1c01533714460a3e3e650b
parentAdd custom emoji support. (diff)
downloaddiscord.py-c72c23278d32c3defc5edc0f0c9c24eeeb94fa7e.tar.xz
discord.py-c72c23278d32c3defc5edc0f0c9c24eeeb94fa7e.zip
[commands] Add custom emoji converter.
-rw-r--r--discord/ext/commands/converter.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/discord/ext/commands/converter.py b/discord/ext/commands/converter.py
index 214475f5..f0041d77 100644
--- a/discord/ext/commands/converter.py
+++ b/discord/ext/commands/converter.py
@@ -161,3 +161,34 @@ class InviteConverter(Converter):
return invite
except Exception as e:
raise BadArgument('Invite is invalid or expired') from e
+
+class EmojiConverter(Converter):
+ @asyncio.coroutine
+ def convert(self):
+ message = self.ctx.message
+ bot = self.ctx.bot
+
+ match = re.match(r'<:([a-zA-Z0-9]+):([0-9]+)>$', self.argument)
+ result = None
+ server = message.server
+ if match is None:
+ # Try to get the emoji by name. Try local server first.
+ if server:
+ result = discord.utils.get(server.emojis, name=self.argument)
+
+ if result is None:
+ result = discord.utils.get(bot.get_all_emojis(), name=self.argument)
+ else:
+ emoji_id = match.group(2)
+
+ # Try to look up emoji by id.
+ if server:
+ result = discord.utils.get(server.emojis, id=emoji_id)
+
+ if result is None:
+ result = discord.utils.get(bot.get_all_emojis(), id=emoji_id)
+
+ if result is None:
+ raise BadArgument('Emoji "{}" not found.'.format(self.argument))
+
+ return result