Используйте декоратор
@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'ы между перезапусками - в таком случае, скорее всего придётся создавать свою реализацию. Самый простейший вариант - сохранять текущее время в виде целого числа и сравнивать с текущим временем при следующем выполнении