Выводит две ошибки вместо одной (cooldown)

Делаю вывод cooldown'а в командах и уведомления к ним:
Первая команда:

@commands.command()
@commands.cooldown(1, 30, commands.BucketType.member)
async def work(self, ctx):
    ...

@commands.Cog.listener("on_command_error")
async def cooldown_message_work(self, ctx, error):
    if isinstance(error , commands.CommandOnCooldown):
        member = ctx.message.author.mention
        await ctx.send(f"{member} you can only use this command once every 30 seconds! Try again in {int(error.retry_after)} seconds.")

Вторая команда:

@commands.command()
@commands.cooldown(1, 1200, commands.BucketType.member)
async def bake(self, ctx):
    ...

@commands.Cog.listener("on_command_error")
async def cooldown_message_bake(self, ctx, error):
    if isinstance(error , commands.CommandOnCooldown):
        member = ctx.message.author.mention
            m = (int(error.retry_after)//60)%60
            await ctx.send(f"{member} you can only use this command once every 20 minutes! Try again in {m} minutes.")

Проблема когда срабатывает cooldown в первой команде то и у второй тоже. введите сюда описание изображения

Как сделать что бы отправляло только один раз для одной команди?


Ответы (1 шт):

Автор решения: xZartsust

Нашел ответ методом тыка! Нужно использовать cog_command_error

async def cog_command_error(self, ctx, error):
    if isinstance(error, commands.CommandOnCooldown):
        member = ctx.message.author.mention
        m = (int(error.retry_after) // 60) % 60
            await ctx.send(f"{member} you can only use this command once every 20 minutes! Try again in {m} minutes.")

Без @commands.Cog.listener("on_command_error")

→ Ссылка