Как сделать перезарядку команд? - PullRequest
0 голосов
/ 06 мая 2020

Мне было интересно, как сделать Command Cool-down для одной команды, а не для всех других команд? был бы очень признателен, если бы кто-нибудь мне в этом помог. Заранее спасибо.

1 Ответ

2 голосов
/ 06 мая 2020

Вам нужно будет создать Collection(), который будет содержать пользователей, выполнивших команду, а затем иметь функцию client.setTimeout() для удаления пользователей через заданное время из Collection(), чтобы они могли использовать команды еще раз.

Вот пример из этого руководства :

const cooldowns = new Discord.Collection();

if (!cooldowns.has(command.name)) {
    cooldowns.set(command.name, new Discord.Collection());
}

const now = Date.now();
const timestamps = cooldowns.get(command.name);
const cooldownAmount = (command.cooldown || 3) * 1000;

if (timestamps.has(message.author.id)) {
    // ...
}
if (timestamps.has(message.author.id)) {
    const expirationTime = timestamps.get(message.author.id) + cooldownAmount;

    if (now < expirationTime) {
        const timeLeft = (expirationTime - now) / 1000;
        return message.reply(`please wait ${timeLeft.toFixed(1)} more second(s) before reusing the \`${command.name}\` command.`);
    }
}
...