处理 on_command_error() 事件中的 discord.py 个特定错误

Handling discord.py specific errors in on_command_error() event

我的 discord bot 使用与服务器中另一个 bot 相同的命令前缀,这导致控制台在每次有人使用另一个 bot 时发送垃圾邮件 CommandNotFound 错误。我看到另一个问题有人回答说你可以这样处理错误:

@client.event
async def on_command_error(ctx, error):
    #print(error) -- returns error description
    if (error == CommandNotFound):
        return
    raise error

但此解决方案只是抛出一个 NameError,表示未找到 CommandNotFound。在看到控制台输出显示 discord.ext.commands.errors.CommandNotFound 而不是像其他 python 特定错误那样的 CommandNotFound 之后,我也尝试了此操作。

@client.event
async def on_command_error(ctx, error):
    if (error == (discord.ext.commands.errors.CommandNotFound)):
         return
    raise error

我怎样才能做到这一点?

如果您得到 NameError,这意味着您所引用的内容在您引用它的范围内不存在(即未定义)。您需要导入 CommandNotFound:

from discord.ext.commands import CommandNotFound

然后检查一下:

@client.event
async def on_command_error(ctx, error):
    # Or, if you've already imported `commands`, you could write
    # commands.CommandNotFound here instead of explicitly importing it.
    if isinstance(error, CommandNotFound):  # Using `==` is incorrect
        return
    raise error