Ежедневная перезарядка команд | discord.py

#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, а я нет.