Strictly to say, you can't. Since discord.py's command names ends with space, as defined in views.py. There are, however, a few options: re write how discord.py views handle messages (I wouldn't recommend this), use on_message
and message.content.startswith
, or use groups.
Since on_message
is fairly straight forward to use, I will instead show you how you can "hack" the group
syntax to allow command name with spaces.
class chain_command:
def __init__(self, name, **kwargs):
names = name.split()
self.last = names[-1]
self.names = iter(names[:-1])
self.kwargs = kwargs
@staticmethod
async def null():
return
def __call__(self, func):
from functools import reduce
return reduce(lambda x, y: x.group(y)(self.null), self.names, bot.group(next(self.names))(self.null)).command(self.last, **self.kwargs)(func)
@chain_command("mobile phones", pass_context=True)
async def mobile_phones(ctx):
msg = "Pong. {0.author.mention}".format(ctx.message)
await bot.say(msg)
In discord:
me: <prefix>mobile phones
bot: Pong. @me
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…