• Как сделать так чтобы команду в discord.py можно было использовать раз в час/день/год?

    Используйте декоратор
    @commands.cooldown(rate, per, type=<BucketType.default: 0>)


    @client.command()
    @commands.cooldown(1, 60, commands.BucketType.user)  # Один раз в 60 секунд на пользователя (глобально)
    async def cmd(ctx, ...):
        ...


    Для отправки сообщения при вызове команды в cooldown'е необходимо обрабатывать исключение команд commands.CommandOnCooldown:
    @client.listen("on_command_error")
    async def cooldown_message(ctx, error):
        if isinstance(error, commands.CommandOnCooldown):
            await ctx.send(f"{ctx.command.qualified_name} можно использовать только {error.cooldown.rate} раз в {error.cooldown.per} секунд. Попробуйте через {error.retry_after} секунд.")


    Если необходимо хранить cooldown'ы между перезапусками - в таком случае, скорее всего придётся создавать свою реализацию. Самый простейший вариант - сохранять текущее время в виде целого числа и сравнивать с текущим временем при следующем выполнении
    Ответ написан
    2 комментария