【问题标题】:issues on error handler with nextcord packagenextcord 包的错误处理程序问题
【发布时间】:2021-11-05 15:49:36
【问题描述】:

我这里有这段代码,它应该使用 nextcord.py 包处理不和谐机器人的命令错误。问题是,每次我进入这些错误时,它只会在输出中给我 MissingRequiredArgument 错误和 else 语句 我检查了调试,变量错误没有任何问题,它采用错误的类的方法,但问题是当它传入 if 语句时,它只是忽略了 isinstance()

@load.error
async def load_error(ctx : commands.Context, error : commands.CommandError):
    """
    "Handle load errors
    :param ctx: context
    :param error: Errors(ExtensionNotFound, ExtensionAlreadyLoaded, NoEntryPoint, ExtensionFailed)
    :return: None
    """
    if isinstance(error, commands.ExtensionNotFound):
        message = "Message"
    elif isinstance(error, commands.MissingRequiredArgument):
        message = "message"
    elif isinstance(error, commands.ExtensionAlreadyLoaded):
        message = "Message"
    elif isinstance(error, commands.NoEntryPointError):
        message = "Message"
    elif isinstance(error, commands.ExtensionFailed):
        message = "message"
    else:
        message = "message"
    await ctx.send(message, delete_after=5)
    await ctx.message.delete(delay=5)

【问题讨论】:

  • 尝试在 nextcord discord 服务器中询问

标签: python error-handling discord.py chatbot


【解决方案1】:

好的,我解决了,这是新代码

@load.error
async def load_error(ctx : commands.Context, error : commands.CommandError):
    """
    "Handle load errors
    :param ctx: context
    :param error: Errors(ExtensionNotFound, ExtensionAlreadyLoaded, NoEntryPoint, ExtensionFailed)
    :return: None
    """
    if isinstance(error.__cause__, commands.ExtensionNotFound):
        message = f"L'estensione {error.__cause__.name.strip('cogs.')} non può essere importata, hai inserito il nome giusto?"
    elif isinstance(error, commands.MissingRequiredArgument):
        message = "Devi inserire il nome del file da importare"
    elif isinstance(error.__cause__, commands.ExtensionAlreadyLoaded):
        message = f"L'estensione {error.__cause__.name.strip('cogs.')} è già stata caricata, non c'è bisogno di ricaricarla"
    elif isinstance(error.__cause__, commands.NoEntryPointError):
        message = f"Non ho trovato nessun setup nell'estensione {error.__cause__.name.strip('cogs.')}"
    elif isinstance(error.__cause__, commands.ExtensionFailed):
        message = f"C'è stato un errore nell'importare l'estenzione {error.__cause__.name.strip('cogs.')}"
    else:
        message = f"{error} C'è stato un errore durante l'esecuzione del comando"
    await ctx.send(message, delete_after=5)
    await ctx.message.delete(delay=5)

基本上我必须指定错误对象的 cause 方法来获取错误的实例 此外,这似乎对 MissingRequiredArgument 错误没有必要

【讨论】:

    猜你喜欢
    • 2013-08-26
    • 1970-01-01
    • 2017-09-19
    • 2014-07-31
    • 2016-08-18
    • 2010-10-02
    • 2019-08-11
    • 1970-01-01
    • 2017-07-20
    相关资源
    最近更新 更多