javascript - 如何使用 discord.js 进行简单的全局冷却
问题描述
所以我有一个新的不和谐机器人并且对编程很陌生,就像我有点理解它但不能自己做一样。但关于这个问题。该机器人都在 .js 中(我确实有 config.json),但我还没有让事件处理程序工作。但我的代码是。
client.on("message", (message) => {
if (message.author.bot) return;
if (message.content.includes ("John")) {
message.channel.send ("Oh yeah, that guy...");
}
}
如何获得全局冷却时间?我想要冷却时间,所以如果发生关于 John 的会议,机器人不会回复每条消息。
解决方案
最简单的事情是在侦听器之外创建一个带有时间戳的变量,并将当前时间戳与范围外的一组进行比较,如下所示
var lastReply = 0;
client.on("message", (message) => {
if (Date.now() - lastReply < 10000) return; // don't respond within 10 seconds
lastReply = Date.now();
if (message.author.bot) return;
if (message.content.includes ("John")) {
message.channel.send ("Oh yeah, that guy...");
}
}
我已将其设置为 10 秒,但您当然可以从配置中获取它,或者自己更改它。为了清楚起见(易于阅读),您还可以设置这样的值(例如,5 分钟):lastReply < 5 * 60 * 1000
推荐阅读
- amazon-mws - 如何使用亚马逊 MWS API 从卖家 ID 中获取卖家名称
- java - @Cacheable 请求字段的条件缓存
- db2 - 获取一列具有不同值的记录,同时在多条记录时替换另一列的值
- javascript - 如何使用 AngularJs 在 Django 中更新 Restfull api 列表
- c# - 使用 GraphAPI / C# 在 AzureAD 中删除应用程序角色的问题
- angular - Angular innerHTML 无法识别 HTML 标签
- jdbc - 如何将 Google Data Studio 连接到 AWS Athena?
- angular - 每当关闭浏览器选项卡/窗口时,Angular 应用程序变得不可用
- select - 在 DB2 中为 type1 或 type2 选择前 5 行
- sbt - 当构建插件的 Git 存储库无法下载时,SBT 会静默终止