cooldown可以使bot在有冷却时间时以秒为单位显示冷却时间。我想要使它在分钟:秒内显示它。虽然不确定如何做到。
此代码的冷却时间为5分钟
@rob.error
async def rob_error(self, ctx, error):
if isinstance(error, commands.BadArgument):
await ctx.send("Member doesnt exist")
if isinstance(error, commands.CommandOnCooldown):
embed = discord.Embed(
title="Your on a cooldown!", color=discord.Color.blue())
embed.add_field(
name="\u200b",
value=
f"Slow down will ya?\n Wait for {round(error.retry_after)} seconds"
)
await ctx.send(embed=embed)
答案 0 :(得分:0)
如果您有秒数,则可以使用division (//)
轻松计算分钟数,而使用modulo (%)
可以计算剩余秒数。
>>> x = 83
>>> minutes = str(x // 60)
>>> seconds = str(x % 60)
>>> print(f"Minutes: {minutes} | Seconds: {seconds}")
Minutes: 1 | Seconds: 23
然后,如果需要,可以在必要时添加前导零
def leadingZero(time: str):
if len(time) > 1:
return time
return "0" + time
为了使“ 1:3”显示为“ 01:03”。
这将使您的代码最终看起来像这样:
@rob.error
async def rob_error(self, ctx, error):
if isinstance(error, commands.BadArgument):
await ctx.send("Member doesnt exist")
if isinstance(error, commands.CommandOnCooldown):
embed = discord.Embed(title="You're on a cooldown!", color=discord.Color.blue())
cd = round(error.retry_after)
minutes = str(cd // 60)
seconds = str(cd % 60)
embed.add_field(name="\u200b", value=f"Slow down will ya?\nWait for {self.leadingZero(minutes)}:{self.leadingZero(seconds)}.")
await ctx.send(embed=embed)
def leadingZero(self, time: str):
if len(time) > 1:
return time
return "0" + time
此外,我发现您实际上并没有将add_field
和ctx.send
放在is_instance
(位于下面)内,可能需要最后,应该是You're on a cooldown
,而不是Your
。