Python Bot中的子命令

时间:2018-05-27 01:30:29

标签: python python-3.x discord discord.py

如何在python bot中创建子命令。

   @bot.group(pass_context=True)
        async def First(ctx):
            if ctx.invoked_subcommand is None:
                await bot.say('Invalid sub command passed...')

        @First.command(pass_context=True)
        async def Second(ctx):
            msg = 'Finally got success {0.author.mention}'.format(ctx.message)
            await bot.say(msg)

2 个答案:

答案 0 :(得分:2)

您也需要将Second作为一个群组。

@bot.group(pass_context=True)
async def First(ctx):
    if ctx.invoked_subcommand is None:
        await bot.say('Invalid sub command passed...')

@First.group(pass_context=True)
async def Second(ctx):
    if ctx.invoked_subcommand is Second:
        await bot.say('Invalid sub command passed...')

@Second.command(pass_context=True)
async def Third(ctx):
    msg = 'Finally got success {0.author.mention}'.format(ctx.message)
    await bot.say(msg)

答案 1 :(得分:1)

子命令是属于组的命令。要创建一个组,请使用以下命令: (用你称之为客户端/机器人的任何东西替换客户端)

@client.group(invoke_without_command=True)
async def parent_command(ctx):
    await ctx.send("Parent command!")

要为该组发出命令,请执行以下操作:

@parent_command.command()
async def child_command(ctx):
    await ctx.send("Child command!")

invoke_without_command=True 将使得当您运行子命令时,父命令不会调用或运行(如果您调用它,则触发;))

您也可以分组,只需阅读上面的答案以获得更好的解释。