在给定时间内发送消息(Discord.js)

时间:2020-05-18 15:35:34

标签: javascript node.js discord.js

我想在X小时/天之内做一些事情。因此,例如,我想在每个星期一的8:00 AM发送一条消息。我不信任托管,我的BOT重新启动了很多次。我该怎么办?

2 个答案:

答案 0 :(得分:1)

您可以使用node-schedule来做到这一点。

或者您可以创建自己的调度程序来存档此目的。 在数据库中创建类似这样的时间表结构:

{
  "nextRun": "2017-01-02T12:00:00Z",
  "payload": { /* something for the job */ },
}

在调度程序中,设置间隔以经常从数据库中检查调度。如果nextRun与当前时间匹配,请执行作业,然后计算并更新nextRun

答案 1 :(得分:0)

只要您的机器人在这段时间之前运行了一点,就可以设置

function sendMessage(){
    // ...
}
bot.on('ready', ()=>{
    // ...
    let now = new Date();
    let target = new Date()
    target.setDate(now.getDate() + ((7-now.getDay())%7+1)); // next Monday
    target.setHours(8); // eight o'clock
    target.setMinutes(0); target.setSeconds(0); target.setMilliseconds(0);
    setTimeout(sendMessage, target.now() - now.now());
});

您可能要仔细检查一些日期检查时间,下一个星期一的日期是Getting the date of next Monday