我重新开始使用javascript,编码和其他东西,因为我有一个激情的项目,我想为自己玩的游戏中的行会工作。因此,我想弄清楚如何让我的漫游器每天在特定时间发送一条消息,然后在5小时后将其删除。我已经尝试了多种方法,或者两种方法不能很好地协同工作,或者只是不能完全起作用。
答案 0 :(得分:2)
设置时间间隔以检查时间,然后在时间合适时发送消息
设置计时器以定期调用函数。我们还将设置一个变量来存储日期的日期,这是为了避免在同一天发送第二条消息
var day = 0;
setInterval(tick, 30000);
function tick() {};
该函数将获取今天的日期(和时间)并进行比较以查看它是否与所需时间匹配,如果匹配,它将发送消息并在5小时后将其删除。它将日期也存储到我们的day
变量中,以防止它在同一天再次发送。
function tick() {
let now = new Date();
if (day === now.getDate()) return;
if (now.toISOString().slice(11,16) === "14:30") { // 2:30PM UTC
day = now.getDate();
channel.send("This message will self-destruct in 5 hours.")
.then(msg => msg.delete(1000*60*60*5));
.catch(e => /* handle error */);
}
}
注意:
now.toISOString().slice(11,16)
来获取时间,这等同于仅使用now.getHours() + ":" + now.getMinutes()
。 (摘自this answer).delete()
一样调用.delete(1000*60*60*5)
并等待删除的毫秒数。 (摘自this answer)