aboutsummaryrefslogtreecommitdiff
path: root/discord/ext
diff options
context:
space:
mode:
authorRapptz <[email protected]>2016-09-17 15:01:56 -0400
committerRapptz <[email protected]>2016-09-17 15:01:56 -0400
commit967d43c35b4d4c288d47a9eb9d374bef34292f1d (patch)
tree411d31fbf0e3c2f4fb332f1713073aa3eb0c67d1 /discord/ext
parentAdd support for server verification levels. (diff)
downloaddiscord.py-967d43c35b4d4c288d47a9eb9d374bef34292f1d.tar.xz
discord.py-967d43c35b4d4c288d47a9eb9d374bef34292f1d.zip
[commands] Allow coroutine functions in Bot.command_prefix
Diffstat (limited to 'discord/ext')
-rw-r--r--discord/ext/commands/bot.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/discord/ext/commands/bot.py b/discord/ext/commands/bot.py
index d9e02f1f..fd788182 100644
--- a/discord/ext/commands/bot.py
+++ b/discord/ext/commands/bot.py
@@ -161,7 +161,8 @@ class Bot(GroupMixin, discord.Client):
indicate what the prefix should be, or a callable that takes in the bot
as its first parameter and :class:`discord.Message` as its second
parameter and returns the prefix. This is to facilitate "dynamic"
- command prefixes.
+ command prefixes. This callable can be either a regular function or
+ a coroutine.
The command prefix could also be a list or a tuple indicating that
multiple checks for the prefix should be used and the first one to
@@ -234,10 +235,14 @@ class Bot(GroupMixin, discord.Client):
# internal helpers
+ @asyncio.coroutine
def _get_prefix(self, message):
prefix = self.command_prefix
if callable(prefix):
- return prefix(self, message)
+ ret = prefix(self, message)
+ if asyncio.iscoroutine(ret):
+ ret = yield from ret
+ return ret
else:
return prefix
@@ -787,7 +792,7 @@ class Bot(GroupMixin, discord.Client):
if self._skip_check(message.author, self.user):
return
- prefix = self._get_prefix(message)
+ prefix = yield from self._get_prefix(message)
invoked_prefix = prefix
if not isinstance(prefix, (tuple, list)):