每日命令冷却|不和谐

时间:2020-10-30 14:38:17

标签: 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 个答案:

答案 0 :(得分:0)

因此@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

尝试一下,idk如果可行,因为您使用齿轮,我不会。