#discord.py
#discord.py
Вопрос:
Итак, в настоящее время я пытаюсь выполнить перезарядку, где отображается оставшееся время в часах и минутах. Я рассчитал минуты и секунды, но я в тупике по часам. Вот мой код
@commands.command(aliases=["claim"])
@commands.cooldown(1, 86400, commands.BucketType.user)
(some code here)
@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 = str(cd // 3600)
minutes = str(cd % 60)
embed.add_field(
name="u200b",
value=
f"Slow down will ya?n Wait for `{self.leadingZero(hours)}hours{self.leadingZero(minutes)}minutes`"
)
await ctx.send(embed=embed)
Ответ №1:
Так @daily.error
что все будет работать отлично. Но я предпочитаю использовать on_command_error
, потому что он покажет вам ошибку для каждой отдельной команды. Будет проще просто сделать это
@client.event
async def on_command_error(ctx, error):
if isinstance(error, commands.CommandOnCooldown):
wait ctx.send("You're on cooldown.")
return
else:
raise error
Примечание: raise error
позволит печатать все остальные ошибки в терминале.
Но для этого кода он будет отображаться только в секундах, что не то, что вы ищете.
@client.event
async def on_command_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 = str(cd // 3600)
minutes = str(cd % 60)
embed.add_field(
name="u200b",
value=
f"Slow down will ya?n Wait for `{hours} hours {minutes} minutes`"
)
await ctx.send(embed=embed)
else:
raise error
Попробуйте это, проверьте, сработает ли это, потому что вы используете cogs, а я нет.