Python对命令获得不同的错误响应

时间:2018-08-08 14:27:41

标签: python-3.x discord.py

如何针对不同的命令在commands.CheckFailure中为on_command_error获得不同的错误响应。

这是我的on_command_error

@bot.event
async def on_command_error(error, ctx):
    if isinstance(error, commands.CheckFailure):
        await bot.send_message(ctx.message.channel, "don't have permission")

因此,如何使它针对引发commands.CheckFailure的另一个命令发送不同的响应。

1 个答案:

答案 0 :(得分:1)

您应该可以使用ctx.command来解决引发错误的命令:

@bot.command(pass_context=True)
@commands.check(some_check)
async def kick(ctx):
    ...

@bot.event
async def on_command_error(error, ctx):
    if isinstance(error, commands.CheckFailure):
        command = ctx.command    # command = ctx.invoked_with
        if command is bot.kick:  # if command == 'kick':
            await bot.send_message(ctx.message.channel, "don't have permission to kick")
        elif command is some_other_command:
            ...
        else:
            await bot.send_message(ctx.message.channel, "Generic message")