所以我要做的就是创造一个"冷却时间"就像我的不和谐机器人的系统一样,我尝试过使用数据库方法,here并不适合我。
我正在使用discord.js包。
这是我的代码:
if (msg.content.startsWith("!point")) {
var usr = msg.content.split(" ").slice(1).join(" ");
if (!usr) {
bot.sendMessage(msg, "```Error: 1\n Reason: Please state a name.```");
return;
}
if (usr == msg.author.username) {
bot.sendMessage(msg, "```Error: 3\n Reason: You're unable to point yourself.```");
return;
}
if (!db["users"][usr]) {
db["users"][usr] = 0;
}
console.log(usr + " has " + db["users"][usr]);
db["users"][usr] += 1;
console.log(usr + " now has " + db["users"][usr]);
fs.writeFileSync('database.json', JSON.stringify(db));
bot.sendMessage(msg, usr + " has received 1 point");
}
答案 0 :(得分:0)
除非冷却时间的冷却时间非常重要,否则冷却持续时间非常长,我建议使用通道或用户或服务器ID创建一个对象,具体取决于您希望应用的速率限制至。然后每次运行命令时将其设置为当前时间。像
这样的东西 rateLimitObject[msg.author.id] = "current time";
然后,只要有人运行命令,只需确保当前时间大于具有该索引的对象中的时间超过一定量。 如果你只想简单地阻止人们发送垃圾邮件,那么类似于pvpcraft中使用的命令可能更合理。 https://github.com/macdja38/pvpcraft/blob/master/middleware/rateLimits.js