discord.js mysql cooldown
Как сделать кулл даун? пример: Пользователь пишет daily данные записываются в дб и создается кулдаун например на 12 часов. если он пишет команду например через 1 час ему должно выдать что ввести эту команду можно будет снова 11.02.2020 в 22:17
Ответы (1 шт):
Автор решения: Cipher
→ Ссылка
Для вашего вопроса существует множество вариантов реализации и разные варианты будут иметь разную сложность проработки.
Если говорить абстрактно, вам необходимо выполнить следующие шаги для реализации задачи:
- Каждая ваша команда должна вызываться из отдельного файла ( Например через Command Helper)
- Каждой команде необходимо присвоить некий ID, для идентификации ее в БД.
- Следующим шагом будет определение структуры вашей базы данных: Вы можете задать Cooldown статично, например как один из параметров
command Handler, или же сделать соответствующую таблицу в БД и создать логику настройки данного Cooldown через комманду. Первый вариант более простой для для начальной реализации. - Создаете Базу данных, в которой вы будуте хранить ваши cooldown с примерно таким набором полей
(guild_id, user_id, command_id, end)Где:
guild_id- ID сервера,user_id- ID пользователя,command_id- ID комманды,end- время в форматеtimestampпосле которого можно использовать комманду снова.
- При использование команды делаете селект по указанным параметрам, если значение БД не найдены, комманду можно использовать и в БД необходимо сделать Insert с указанными выше параметрами.
- Если какой-то результат найден, сравниваем даты, в случае если
new Date().getTime()меньшеend, выводим ошибку, если больше - разрешаем использование команды и устанавливаем новый cooldown (в полеendзначениеnew Date().getTime()+ cooldown в секундах)