diff options
| author | Rapptz <[email protected]> | 2016-09-17 15:01:56 -0400 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2016-09-17 15:01:56 -0400 |
| commit | 967d43c35b4d4c288d47a9eb9d374bef34292f1d (patch) | |
| tree | 411d31fbf0e3c2f4fb332f1713073aa3eb0c67d1 /discord/ext | |
| parent | Add support for server verification levels. (diff) | |
| download | discord.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.py | 11 |
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)): |