From 52eb0e3adb0a222c41087260f71888a0da4eeeee Mon Sep 17 00:00:00 2001 From: Rapptz Date: Fri, 8 Jan 2016 19:40:00 -0500 Subject: [PATCH] [commands] Change prefix callback signature and add when_mentioned. The utility allows for easy addition of "when the bot is mentioned" as the prefix. The change of signature was to facilitate this. --- discord/ext/commands/__init__.py | 2 +- discord/ext/commands/bot.py | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/discord/ext/commands/__init__.py b/discord/ext/commands/__init__.py index 527d5157a..ac5863c87 100644 --- a/discord/ext/commands/__init__.py +++ b/discord/ext/commands/__init__.py @@ -10,7 +10,7 @@ An extension module to facilitate creation of bot commands. :license: MIT, see LICENSE for more details. """ -from .bot import Bot +from .bot import Bot, when_mentioned from .context import Context from .core import * from .errors import * diff --git a/discord/ext/commands/bot.py b/discord/ext/commands/bot.py index 9d5a09de8..965f0de99 100644 --- a/discord/ext/commands/bot.py +++ b/discord/ext/commands/bot.py @@ -33,6 +33,11 @@ from .view import StringView from .context import Context from .errors import CommandNotFound +def when_mentioned(bot, msg): + """A callable that implements a command prefix equivalent + to being mentioned, e.g. ``@bot ``.""" + return '{0.user.mention} '.format(bot) + class Bot(GroupMixin, discord.Client): """Represents a discord bot. @@ -48,9 +53,10 @@ class Bot(GroupMixin, discord.Client): command_prefix The command prefix is what the message content must contain initially to have a command invoked. This prefix could either be a string to - indicate what the prefix should be, or a callable that takes in a - :class:`discord.Message` as its first parameter and returns the prefix. - This is to facilitate "dynamic" command prefixes. + 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. 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 @@ -71,7 +77,7 @@ class Bot(GroupMixin, discord.Client): def _get_prefix(self, message): prefix = self.command_prefix if callable(prefix): - return prefix(message) + return prefix(self, message) else: return prefix