javascript - 如何以可以停止和重新启动的方式制作 setInterval 函数?
问题描述
我一直在尝试为我的 discord.js v12 机器人创建一个与 Disboard 协同工作的功能。基本上,这是一个提醒功能,每两个小时ping一个特定的角色,以提醒他们撞服务器。我一直在尝试解决!d 碰撞,机器人通过 clearInterval 停止 setInterval 函数,并再次启动 setInterval 函数。但是,我收到一条错误消息,指出脚本中未定义某个对象。
这是我的代码:
client.on('message', async message => {
if (message.content === (`${prefix}setReminder`)) {
message.channel.send("Interval has been set! Members will be reminded to bump the server every two hours!")
var role = message.guild.roles.cache.find(role => role.name === "bumping ping")
let intervalOne = setInterval(() => {
message.channel.send(`${role} chop-chop! It's time to bump! `)
}, 7200000);
}
});
client.on('message', async message => {
if (message.content === "!d bump") {
message.channel.send("Thank you for bumping the server. Please check back two hours later to bump the server again.")
clearInterval(intervalOne)
.then(setInterval(intervalOne)) | message.channel.send("I have successfully restarted the timer. You will get notified in two hours' time!")
}
});
解决方案
这个怎么样:
module.exports = (client, message) => {
if(message.content === '!d bump') {
const pingRole = message.guild.roles.cache.find(role => role.name === 'bumping ping');
message.channel.send('Thank you for bumping the server. Please check back two hours later to bump the server again.')
setTimeout(() => message.channel.send(`${pingRole} chop-chop! It's time to bump! `), 7200000);
}
};
这对你来说足够了吗?
推荐阅读
- postgresql - 如何从 Postgresql 表中的 timstamp 字段中获取星期几的间隔?
- elasticsearch - Logstash un-gzip 阵列日志配置
- audio - 自动淡出音频
- java - Apache POI:来自 AWT 颜色输入的索引颜色
- html - 将 px 转换为 em - 文本变得比原始文本小
- cython - 在 Cython 中读取二进制文件
- php - wordpress has_post_thumbnail if/else 语句不起作用
- node.js - 从节点 lambda 调用时未从 AWS RDS 获得任何结果
- azure - 使用 microsoft graph 验证联系信息以获取电子邮件
- bluetooth-lowenergy - BluetoothLEAdvertisementWatcher 不返回服务数据 UUID