使用命令的setTimeout for client

时间:2016-07-04 13:10:05

标签: javascript node.js

所以我要做的就是创造一个"冷却时间"就像我的不和谐机器人的系统一样,我尝试过使用数据库方法,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");
}

1 个答案:

答案 0 :(得分:0)

除非冷却时间的冷却时间非常重要,否则冷却持续时间非常长,我建议使用通道或用户或服务器ID创建一个对象,具体取决于您希望应用的速率限制至。然后每次运行命令时将其设置为当前时间。像

这样的东西

rateLimitObject[msg.author.id] = "current time";

然后,只要有人运行命令,只需确保当前时间大于具有该索引的对象中的时间超过一定量。 如果你只想简单地阻止人们发送垃圾邮件,那么类似于pvpcraft中使用的命令可能更合理。 https://github.com/macdja38/pvpcraft/blob/master/middleware/rateLimits.js