node.js - 节点调度器重复
问题描述
我和一个朋友正在尝试使用 Node Scheduler 让一个不和谐的机器人在某些日子(基本上是假期日历)宣布事情。我们希望它发布一条预设消息,但它似乎随机发布消息次数。
var Hb = schedule.scheduleJob('* 6 14 20 4 *', function(){
bot.channels.get('435858985501982720').send('new message 3');
});
这是我们的测试代码,有谁知道出了什么问题?
编辑:我们确实想要特定的分钟,如果这有任何影响的话。
解决方案
的第一个参数schedule.scheduleJob
是一个字符串,表示函数应该何时触发,采用 cron 格式。根据您尝试运行该功能的文档:
- 每一秒
- 整点 6 分钟
- 第 14 小时(下午 2 点)
- 每月第 20 天
- 第四个月(四月)
- 一周的每一天
也就是每年 4 月 20 日下午 2:06 的每一秒。
我将使用文档提供的格式重写 cron 字符串:
* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ │
│ │ │ │ │ └ day of week (0 - 7) (0 or 7 is Sun)
│ │ │ │ └───── month (1 - 12)
│ │ │ └────────── day of month (1 - 31)
│ │ └─────────────── hour (0 - 23)
│ └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)
例如在每年圣诞节的中午运行:
schedule.scheduleJob('0 0 12 25 12 *', function(){
bot.channels.get('435858985501982720').send('new message 3');
});
推荐阅读
- nginx - 如何使用 nginx 将链接重定向到某个位置
- filemaker - FileMaker Go 的销售点 API iOS 回调
- laravel - Chrome 扩展获取功能不发送 cookie
- python-3.x - Python Seaborn:如何在箱线图可视化中添加均值?
- fortran - Fortran77 程序不执行
- firefox - Firefox Container Tabs 和 Microsoft Teams:我应该将哪些域添加到容器中?
- vue.js - 导航上的 Vue url 更改
- javascript - Web midi API 和多个同步笔记
- ios - 如何使用 Xcode 模拟海拔?
- assembly - 如何在裸机 ARM 组件中使用键盘?