如何让@commands.cooldown 持续数天和数月而不是数秒 Discord.py

How to make @commands.cooldown go for days and months instead of seconds Discord.py

我想为 discord.py 经济制定每日奖励命令。我有代码,但问题是它以秒

显示
@client.command(aliases=['d'])
@commands.cooldown(1, 86400, commands.BucketType.user)
@is_registered
async def daily(ctx: commands.Context):
    random_amount = random.randint(50, 150)
    await economy.add_money(ctx.message.author.id, "wallet", random_amount)
    embed = discord.Embed(
        colour=discord.Color.from_rgb(244, 182, 89)
    )
    embed.add_field(name=f"Reward", value=f"Successfully claimed daily!")
    await ctx.send(embed=embed)

我查看了 https://discordpy.readthedocs.io/en/stable/ 中关于如何使用冷却时间的文档,但似乎没有办法让它持续数天而不是数秒。这是当您 运行 代码时发生的情况: 你正在冷却。请在 86396.55 秒后重试。 error image 如果你们中有人知道如何将其变为 1 天,将不胜感激。谢谢你。 P.S。如果有帮助,这是我用于经济系统的图书馆: https://pypi.org/project/DiscordEconomy/

您可以定义错误处理程序。只要出现冷却错误,它就会触发,即 discord.CommandOnCooldown:

@client.event
async def on_command_error(ctx, err):
    if err.__class__ is commands.CommandOnCooldown:
        cd: int = int(err.retry_after)
        # send an error message, you can customize this
        await ctx.send(f'Sorry, you are on cooldown, which ends in **{cd//86400}d {(cd//3600)%24}h {(cd//60)%60}m {cd % 60}s**.')
        return
    # more error handling...
    # You should probably uncomment this
    #await ctx.send(err)

这无需对标准冷却处理程序进行任何更改即可工作,因此您可以使用如下命令:

@client.command(name='cooldown')
@commands.cooldown(1, 100000.0, commands.BucketType.user)
async def cooldown_command(ctx):
    await ctx.send('Success!')

示例输出消息(您可以自定义显示的内容):