discord.py命令冷却报错时如何将剩余秒数转换为分钟或小时格式
discord.py 命令冷却时间格式化实现方案
核心逻辑是将error.retry_after返回的浮点型剩余秒数做单位转换,根据数值大小自动匹配小时、分钟、秒的输出格式。
以下是修改后的全局命令错误处理代码,可直接替换原有逻辑:
@client.event async def on_command_error(ctx,error): if isinstance(error , commands.CommandOnCooldown): # 取整剩余秒数避免小数显示 remaining_sec = int(error.retry_after) # 自动匹配时间单位 if remaining_sec >= 3600: time_display = f"{remaining_sec // 3600}小时" elif remaining_sec >= 60: time_display = f"{remaining_sec // 60}分钟" else: time_display = f"{remaining_sec}秒" await ctx.send(f'{ctx.author.mention}**hold your horses buddy <:iac_namaste:841266597318361098>**') await ctx.send(f'请{time_display}后再试')
如果需要更精细的多单位显示(例如剩余1小时20分钟30秒),可以替换时间转换部分的逻辑:
remaining_sec = int(error.retry_after) hours = remaining_sec // 3600 minutes = (remaining_sec % 3600) // 60 seconds = remaining_sec % 60 time_parts = [] if hours: time_parts.append(f"{hours}小时") if minutes: time_parts.append(f"{minutes}分钟") if seconds: time_parts.append(f"{seconds}秒") time_display = "".join(time_parts)
内容的提问来源于stack exchange,提问作者Hiresh Verma
相关产品推荐
相关产品推荐

