[commands] Allow customising the Context class in get_context.

This commit is contained in:
Rapptz 2017-01-26 05:05:04 -05:00
parent 1e09432c45
commit 4016154529

View File

@ -555,7 +555,7 @@ class BotBase(GroupMixin):
return prefix return prefix
@asyncio.coroutine @asyncio.coroutine
def get_context(self, message): def get_context(self, message, *, cls=Context):
"""|coro| """|coro|
Returns the invocation context from the message. Returns the invocation context from the message.
@ -572,15 +572,21 @@ class BotBase(GroupMixin):
----------- -----------
message: :class:`discord.Message` message: :class:`discord.Message`
The message to get the invocation context from. The message to get the invocation context from.
cls: type
The factory class that will be used to create the context.
By default, this is :class:`Context`. Should a custom
class be provided, it must be similar enough to :class:`Context`\'s
interface.
Returns Returns
-------- --------
:class:`Context` :class:`Context`
The invocation context. The invocation context. The type of this can change via the
``cls`` parameter.
""" """
view = StringView(message.content) view = StringView(message.content)
ctx = Context(prefix=None, view=view, bot=self, message=message) ctx = cls(prefix=None, view=view, bot=self, message=message)
if self._skip_check(message.author.id, self.user.id): if self._skip_check(message.author.id, self.user.id):
return ctx return ctx