【问题标题】:Detailed cooldown for commands命令的详细冷却时间
【发布时间】:2019-03-11 14:50:28
【问题描述】:

我在一些不和谐服务器中看到他们有详细的冷却时间,并且他们可以准确地看到他们可以再次使用该命令需要多长时间 但我不知道如何添加这个,有人可以帮助我吗?

我现在有这个

const talkedRecently = new Set();
if (talkedRecently.has(msg.author.id)) {
  msg.channel.send("Wait 1 minute before getting typing this again. - " + msg.author);
} else {
  talkedRecently.add(msg.author.id);
  setTimeout(() => {
    talkedRecently.delete(msg.author.id);
  }, 60000);
}

但在这里您无法确切看到您需要等待多长时间。我想要这样:

【问题讨论】:

  • 您好,欢迎来到 SO。这不是一个可以找到为您编写代码的人的地方。而是尝试先让某些东西起作用,然后在遇到特定代码问题时再回来。谢谢。
  • stackoverflow.com/questions/3144711/… 可能需要根据需要自定义setTimeout。看看这个问题。

标签: node.js discord.js


【解决方案1】:

如果您创建一个冷却时间对象,您可以通过从冷却时间中减去日期来获得它们剩余的时间。

像这样:

//Start of code or something
var cooldowns = {}
var minute = 60000;
var hour = minute * 24;

//Set cooldown
cooldowns[message.author.id] = Date.now() + hour * 24; //Set a 24 hour cooldown

//At command check
if(cooldowns[message.author.id]){
     if(cooldowns[message.author.id] > Date.now()) delete cooldowns[message.author.id];
     else console.log("user still has " + Math.round((cooldowns[message.author.id] - Date.now)/minute) + " minutes left"
}

【讨论】:

  • 我必须在代码中的哪里添加这个以及如何为成员添加冷却时间
  • 阅读代码,它会告诉你一切。在顶部,它显示您需要的变量。在中间,它向您展示了如何“设置”冷却时间。所以你可以把它放在一个特定的命令中,或者在每次收到消息时设置它。这都是你的选择。底部是如何检查他们是否还有冷却时间的代码。
【解决方案2】:

我还没有测试过,但最简单的方法是:

const talkedRecently = new Set();
const seconds = "60";

loopnum = 0
while (loopnum <= seconds)) {
  loopnum = loopnum + 1;
  if (talkedRecently.has(msg.author.id + "-" + loopnum)) {
    msg.channel.send("Wait **" + loopnum + " **seconds before getting typing this again. - " + msg.author);
    return;
  }
}
loopnum = seconds;
while (loopnum = 0) {
  setTimeout(() => {
    if (talkedRecently.has(msg.author.id + "-" + (loopnum+1))) {
      talkedRecently.delete(msg.author.id "-" + (loopnum+1));
    }
    talkedRecently.add(msg.author.id + "-" + loopnum);
  }, 1000);
  loopnum = loopnum - 1;
}
if (talkedRecently.has(msg.author.id + "-1")) {
  talkedRecently.delete(msg.author.id "-1");
}
return;

【讨论】:

  • 它给出了很多不操作代码就无法修复的错误
猜你喜欢
  • 2021-06-17
  • 2017-11-21
  • 2021-03-11
  • 2021-04-06
  • 2021-02-16
  • 1970-01-01
  • 1970-01-01
  • 2020-05-27
  • 2017-06-13
相关资源
最近更新 更多