【问题标题】:How can I handle for a specific CommandInvokeError? [DIscord.py]如何处理特定的 CommandInvokeError? [DIScord.py]
【发布时间】:2021-08-31 16:20:31
【问题描述】:

我的一个函数可能会引发KeyError 错误。这引发了CommandInvokeError。但是,还有其他错误,例如DivisionByZero,可能会导致CommandInvokeError 被引发。我只知道一种处理错误的方法,那就是:

@cmd.error
async def cmd_error(self, ctx, error):
    if isinstance(error, commands.CommandInvokeError):
        await ctx.send("Error!")

这对于导致CommandInvokeError 的任何错误都是一样的。我怎样才能使它仅在引发KeyError 时才发送消息?

注意:这是一个齿轮

【问题讨论】:

  • 最好用try/except 块来处理这些错误

标签: error-handling discord discord.py


【解决方案1】:
@cmd.error
async def cmd_error(self, ctx, error):
    if isinstance(error, commands.CommandInvokeError):
        if isinstance(error.original, KeyError):
            await ctx.send("Error!")

你也可以用error.__cause__,没区别。

【讨论】:

  • 谢谢! PS:你的意思是我也可以使用error.__cause__?我将在代码的哪一部分实现它?
  • @Ethitlan error.__cause__ 只是error.original 的别名。所以你可以这样做:if isinstance(error.__cause__, KeyError)
  • 哦,我明白了。谢谢!
猜你喜欢
  • 2021-04-25
  • 2021-06-24
  • 2021-04-23
  • 2017-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-16
相关资源
最近更新 更多