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