Задать вопрос
@dreameddd

Как сделать задержку на команду в боте дискорд?

Как сделать задержку на команду? Чтобы при попытке прописать команду снова выводилось сообщение, что нужно сколько-то подождать.
  • Вопрос задан
  • 1513 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Allan-BlackWell
@Allan-BlackWell
Ничтожество :D
У discord.py это уже предусмотрено, вы можете добавить декоратор:
@commands.cooldown(1, (Время задержки), commands.BucketType.user)


Для вывода необходимо использовать событие:
async def on_command_error(ctx, error):
    if isinstance(error, commands.CommandOnCooldown):
        embed = discord.Embed( 
            title = 'Команда на задержке.', 
            description = f'Повторить через `{error.retry_after :.0f} секунд', 
            colour = discord.Color.red() 
        )

        return await ctx.send(embed = embed)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
TTATPuOT
@TTATPuOT
https://code.patriotovsky.ru/
После применения команды сохраняете в базе timestamp. Далее, при повторном применении, вычислятете timestamp того момента, когда минимум команда должна была использована первый раз. Если это время больше того, что в базе - выполняете команду. Иначе - выводите сообщение.

Реализацию вы вольны придумать самостоятельно. Но вам точно нужно где-либо сохранять id пользователя, id команды (если команд несколько) и timestamp последнего использования. База, файл или память - выбирать вам.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы