在discord.js中,可以通过使用setTimeout函数来实现不反应的冷却时间。下面是一个示例代码:
const Discord = require('discord.js');
const client = new Discord.Client();
// 设置冷却时间为5秒
const cooldownTime = 5000;
// 用于存储冷却结束时间的对象
const cooldowns = new Discord.Collection();
client.on('message', message => {
// 检查消息是否来自机器人或者不是指定的命令前缀
if (message.author.bot || !message.content.startsWith('!')) return;
// 获取命令和参数
const args = message.content.slice(1).trim().split(/ +/);
const command = args.shift().toLowerCase();
// 检查是否在冷却中
if (cooldowns.has(command)) {
const cooldownEndTime = cooldowns.get(command);
if (Date.now() < cooldownEndTime) {
// 如果在冷却中,发送一条提示消息并返回
return message.reply(`该命令正在冷却中,请稍后再试!`);
}
}
// 执行命令逻辑
// 将当前命令加入冷却列表
cooldowns.set(command, Date.now() + cooldownTime);
// 设置冷却结束后自动删除冷却时间
setTimeout(() => cooldowns.delete(command), cooldownTime);
});
client.login('YOUR_DISCORD_TOKEN');
在上面的代码中,我们首先定义了一个cooldowns对象用于存储每个命令的冷却结束时间。当收到一条消息时,我们首先检查该消息是否来自机器人或者不是指定的命令前缀。然后,我们检查该命令是否在冷却中,如果是,则发送一条提示消息并返回。
如果命令不在冷却中,我们执行命令的逻辑,并将该命令加入冷却列表中,设置冷却结束后自动删除冷却时间。
请注意,上述代码仅为示例,你需要根据自己的实际需求进行适当的修改。
上一篇:不返回最小值,而返回最大值