Discord.py每日命令冷却:如何正确显示剩余小时与分钟?
解决Discord.py每日命令冷却提示的小时/分钟计算问题
我看到你在基于discord.py开发机器人的每日命令冷却功能时,卡在了剩余时间的小时数和分钟数计算上——咱们来快速搞定这个问题!
问题根源
你当前的代码里,minutes = str(cd % 60)这一行是错误的:cd % 60得到的是总秒数减去整数小时后剩余的秒数,而不是分钟数。这就导致你的分钟显示完全不对啦。
修正后的代码逻辑
正确的计算步骤应该是:
- 先从总剩余秒数中算出完整的小时数
- 用剩余的秒数计算完整的分钟数
下面是修正后的daily_error函数代码:
@daily.error async def daily_error(self, ctx, error): if isinstance(error, commands.CommandOnCooldown): embed = discord.Embed( title="You're on a cooldown!", color=discord.Color.blue() ) cd = round(error.retry_after) # 计算完整小时数 hours = cd // 3600 # 计算扣除小时后剩余的秒数 remaining_after_hours = cd % 3600 # 用剩余秒数计算完整分钟数 minutes = remaining_after_hours // 60 embed.add_field( name="\u200b", value= f"Slow down will ya?\n Wait for `{self.leadingZero(str(hours))}hours{self.leadingZero(str(minutes))}minutes`" ) await ctx.send(embed=embed)
额外说明
- 假设你的
leadingZero函数是用来给单个数字补前导零的(比如把5变成05),那这个部分不用改动,它能让时间显示更规整。 - 如果之后需要显示剩余秒数,你可以再加一行
seconds = remaining_after_hours % 60,然后把它加入提示文本即可。
这样修改后,冷却提示就能准确显示剩余的小时数和分钟数啦!
内容的提问来源于stack exchange,提问作者JoeTheMama
相关产品推荐
相关产品推荐

