如何针对不同的命令在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
的另一个命令发送不同的响应。
答案 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")