如何使漫游器通过一个命令回复多个命令。标签之类的示例。
browsers = ['chrome', 'mozilla', 'ie', 'safari']
@bot.command(pass_context=True)
async def chrome(ctx):
msg = "about Chrome. {0.author.mention}".format(ctx.message)
await bot.say(msg)
@bot.command(pass_context=True)
async def mozilla(ctx):
msg = "about Mozilla. {0.author.mention}".format(ctx.message)
await bot.say(msg)
@bot.command(pass_context=True)
async def safari(ctx):
msg = "about Safari. {0.author.mention}".format(ctx.message)
await bot.say(msg)
因此,最后,如果用户键入?browsers
命令,它应该发送browsers
列表中的所有命令答复。如果键入?chrome
或?mozilla
或?safari
答案 0 :(得分:2)
这是我能找到的唯一方法,但这有点尴尬。
@bot.command(pass_context=True)
async def chrome(ctx):
msg = "about Chrome. {0.author.mention}".format(ctx.message)
await bot.say(msg)
@bot.command(pass_context=True)
async def mozilla(ctx):
msg = "about Mozilla. {0.author.mention}".format(ctx.message)
await bot.say(msg)
@bot.command(pass_context=True)
async def safari(ctx):
msg = "about Safari. {0.author.mention}".format(ctx.message)
await bot.say(msg)
@bot.group(pass_context=True)
async def browsers(ctx):
if ctx.invoked_subcommand is None:
for command in browsers.walk_commands():
await command.invoke(ctx)
browsers.add_command(chrome)
browsers.add_command(mozilla)
browsers.add_command(safari)
我非常怀疑,这是一种更干净的方法,您可以使用@browsers.command()
定义命令,然后还可以直接调用它们,但我找不到它。