diff options
| author | Khazhismel <[email protected]> | 2016-07-31 22:12:24 -0700 |
|---|---|---|
| committer | Khazhismel <[email protected]> | 2016-07-31 22:39:45 -0700 |
| commit | c72c23278d32c3defc5edc0f0c9c24eeeb94fa7e (patch) | |
| tree | 117412ecdbc905039e1c01533714460a3e3e650b | |
| parent | Add custom emoji support. (diff) | |
| download | discord.py-c72c23278d32c3defc5edc0f0c9c24eeeb94fa7e.tar.xz discord.py-c72c23278d32c3defc5edc0f0c9c24eeeb94fa7e.zip | |
[commands] Add custom emoji converter.
| -rw-r--r-- | discord/ext/commands/converter.py | 31 |
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 |