当前位置: 首页 > 知识库问答 >
问题:

命令Cooldown错误处理程序没有捕获错误!已经测试了一切

穆正青
2023-03-14

我已经看了其他类似的问题修复不工作这是我的代码。

 @bot.event
async def on_command_error(ctx, error):

    if isinstance(error, commands.CommandOnCooldown):
        await ctx.send("Command On Cooldown. Sorry fo rugly text. I will fix it - Kwuartz")
        m, s = divmod(error.retry_after, 60)
        h, m = divmod(m, 60)
        d, h = divmod(h, 60)

        if int(h) == 0 and int(m) == 0:
            embed = discord.Embed(colour=0x1ABC9C)
            embed.title = "**Command Cooldown:**"
            embed.description = f"**Why this happened:**\nThis command is on a cooldown of **{int(s)} seconds** on a per user basis."
            await ctx.send(embed = embed)

        elif int(d) == 0 and int(h) == 0 and int(m) != 0:
            embed = discord.Embed(colour=0x1ABC9C)
            embed.title = "**Command Cooldown:**"
            embed.description = f"**Why this happened:**\nThis command is on a cooldown of **{int(m)} minutes** and **{int(s)} seconds** on a per user basis."
            await ctx.send(embed = embed)

        elif int(d) == 0 and int(h) != 0:
            embed = discord.Embed(colour=0x1ABC9C)
            embed.title = "**Command Cooldown:**"
            embed.description = f"**Why this happened:**\nThis command is on a cooldown of **{int(h)} hours**, **{int(m)} minutes** and **{int(s)} seconds** on a per user basis."
            await ctx.send(embed = embed)

        else:
            embed = discord.Embed(colour=0x1ABC9C)
            embed.title = "**Command Cooldown:**"
            embed.description = f"**Why this happened:**\nThis command is on a cooldown of **{int(d)} days**, **{int(h)} hours**, **{int(m)} minutes** and **{int(s)} seconds** on a per user basis."
            await ctx.send(embed = embed)

    elif isinstance(error, commands.CommandNotFound):
        embed = discord.Embed(colour=0x1ABC9C)
        embed.title = "**Command Error:**"
        embed.description = f":x: **Why this happened:**\nThe command you specified does not exist."
        await ctx.send(embed = embed)

    else:
        raise error

附言:我是新来的,所以可能会犯愚蠢的错误。抱歉!如果有必要我会附上更多代码

控制台输出:

忽略on_消息回溯中的异常(上次调用):文件“C:\Users\OnlyMe\AppData\Roaming\Python\Python38\site packages\discord\client.py”,第333行,在on_运行事件等待coro(*args,**kwargs)文件“C:\Users\OnlyMe\PythonProjects\Atom\ebimpresst\main_setup.py”中,第158行,在on_消息等待bot中。process_命令(消息)文件“C:\Users\OnlyMe\AppData\Roaming\Python\Python38\site packages\discord\ext\commands\bot.py”,第940行,in process_命令等待self。调用(ctx)文件“C:\Users\OnlyMe\AppData\Roaming\Python38\site packages\discord\ext\commands\bot.py”,调用等待ctx中的第907行。命令调度错误(ctx,exc)文件“C:\Users\OnlyMe\AppData\Roaming\Python38\site packages\discord\ext\commands\core.py”,第422行,在调度错误等待注入(cog,ctx,error)文件“C:\Users\OnlyMe\AppData\Roaming\Python38\site packages\discord\ext\commands\core.py”,第71行,在包装的ret=wait coro(*args,**kwargs)文件中“C:\Users\OnlyMe\PythonProjects\Atom\pulsebot\cogs\moderation\u命令。py”,第225行,在清除错误引发错误文件“C:\Users\OnlyMe\AppData\Roaming\Python38\site packages\discord\ext\commands\bot”中。py”,第903行,在invoke wait ctx.command.invoke(ctx)文件“C:\Users\OnlyMe\AppData\Roaming\Python\Python38\site packages\discord\ext\commands\core”中。py”,第851行,在调用等待self.prepare(ctx)文件“C:\Users\OnlyMe\AppData\Roaming\Python\Python38\site packages\discord\ext\commands\core”中。py”,第785行,在准备自我。准备冷却(ctx)文件“C:\Users\OnlyMe\AppData\Roaming\Python\Python38\site packages\discord\ext\commands\core”中。py”,第773行,在“准备”冷却时间中提高命令冷却时间(桶,重试后)discord.ext.commands.errors.commandoncoldown:您正在冷却。请在9.53秒后重试

共有1个答案

瞿和硕
2023-03-14

如果要以小时、分钟、秒、的格式获取时间,则可以使用模运算符:

d = math.floor(error.retry_after / 60 / 60 / 24) 
h = math.floor(error.retry_after / 60 / 60) 
m = math.floor(error.retry_after / 60) 
s = error.retry_after % 60

如果命令错误上的没有捕获所有内容,那是因为它只适用于命令错误。

请说明您的问题,以便更容易解决。

这就是我的代码工作时的样子:

if isinstance(error, commands.CommandOnCooldown):
    retryAfter = [math.floor(error.retry_after / 360), math.floor(error.retry_after / 60), error.retry_after % 60]
    await ctx.send('You cannot use command `%s%s` for %s hours, %s minutes, and %.2f seconds.' % (
    str(bot.command_prefix), str(ctx.command), retryAfter[0], retryAfter[1], retryAfter[2]))
    print('Command "%s" is on a %.3f second cooldown' % (ctx.command, error.retry_after))

 类似资料:
  • 错误码分析 (OTG-ERR-001) 栈追踪分析 (OTG-ERR-002)

  • 我试图在app.js中使用以下方式使用 捕获所有并发错误包括事件处理程序错误: 灵感来自:你能用尝试/捕获块捕获 React.js 应用的所有错误吗? 我的问题是,当弹出错误不再呈现,似乎 react 从根元素中卸载了所有内容,因此没有呈现任何内容,因此持有路由没有呈现,因此呈现。 你知道为什么react会卸载所有东西吗?

  • 我现在必须学习通过fire base编写移动应用程序web服务。我点击了这个链接:https://firebase-php.readthedocs.io/en/stable/ 在我的核心网站中,我创建web服务文件夹,然后创建我的fire。php文件。这个文件代码在这里, 我得打电话给我的支持档案:https://github.com/kreait/firebase-php/ 但我还是得到了一个:

  • 问题内容: 如何使用 自定义* 错误处理程序处理 解析 和 致命 错误? * 问题答案: 简单答案:不能。参见手册: 用户定义的函数无法处理以下错误类型:E_ERROR,E_PARSE,E_CORE_ERROR,E_CORE_WARNING,E_COMPILE_ERROR,E_COMPILE_WARNING,以及在调用set_error_handler()的文件中引发的大多数E_STRICT。 对

  • Go 没有像 Java 和 .NET 那样的 try/catch 异常机制:不能执行抛异常操作。但是有一套 defer-panic-and-recover 机制(参见 13.2-13.3 节)。 Go 的设计者觉得 try/catch 机制的使用太泛滥了,而且从底层向更高的层级抛异常太耗费资源。他们给 Go 设计的机制也可以 “捕捉” 异常,但是更轻量,并且只应该作为(处理错误的)最后的手段。 G

  • 我们经常会看到很多程序员大部分的"编程"时间都花费在检查bug和修复bug上。无论你是在编写修改代码还是重构系统,几乎都是花费大量的时间在进行故障排除和测试,外界都觉得我们程序员是设计师,能够把一个系统从无做到有,是一项很伟大的工作,而且是相当有趣的工作,但事实上我们每天都是徘徊在排错、调试、测试之间。当然如果你有良好的习惯和技术方案来直面这些问题,那么你就有可能将排错时间减到最少,而尽可能的将时