用户从开始时间起每 X 小时创建一次计划
User created schedules every X hours from start time
我正在尝试在 discord.js 中编写一个 discord 机器人,它允许用户安排从一天中给定的开始时间 (0-23) 开始每 X(1-730) 小时发生一次付款。我想通过节点计划使用 cron 时间,但如果用户想要每 77 小时一次怎么办?
目前,我从命令保存到数据库的对象是:
const jobParams =
{ name: 'Job Title',
currencyName: 'Credits',
interval: '77',
amount: '30',
startHour: 5,
member: '119351283999047682',
role: null };
这里的最终目标是让系统在启动时安排作业,每 77 小时(每 3 天 5 小时)为提供的成员提供 30 "Credits",从下一个 0500 开始计数.支付交易准备就绪。
用户还需要能够按需取消作业。
您可以尝试使用 node-schdule https://www.npmjs.com/package/node-schedule
我个人没有使用过它,但你似乎可以安排一些回调在你的时间段后发生。
来自页面上的示例
var schedule = require('node-schedule');
var j = schedule.scheduleJob('42 * * * *', function(){
console.log('The answer to life, the universe, and everything!');
});
然后您可以围绕调度程序构建一些 API 来创建/销毁调度。
您可以在 cron times 中使用步骤。 */77
类似于 "every 77th." 使用此概念,您可以每 77 小时通过 另一个 作业启动一个 cron 作业 运行 在下一个早上 5 点(只有一次)。
const { CronJob } = require('cron');
const foo = () => console.log('Hello, world!');
const job = new CronJob('0 */77 * * *', foo);
new CronJob('0 5 * * *', () => {
job.start();
this.stop();
}, null, true);
或者,您可以在每早上 5 点启动一次 cron 作业,并设置一个超时以在 77 小时内执行您的代码。
const job = new CronJob('0 5 * * *', () => setTimeout(foo, 1000 * 60 * 60 * 77), null, true);
我正在尝试在 discord.js 中编写一个 discord 机器人,它允许用户安排从一天中给定的开始时间 (0-23) 开始每 X(1-730) 小时发生一次付款。我想通过节点计划使用 cron 时间,但如果用户想要每 77 小时一次怎么办?
目前,我从命令保存到数据库的对象是:
const jobParams =
{ name: 'Job Title',
currencyName: 'Credits',
interval: '77',
amount: '30',
startHour: 5,
member: '119351283999047682',
role: null };
这里的最终目标是让系统在启动时安排作业,每 77 小时(每 3 天 5 小时)为提供的成员提供 30 "Credits",从下一个 0500 开始计数.支付交易准备就绪。
用户还需要能够按需取消作业。
您可以尝试使用 node-schdule https://www.npmjs.com/package/node-schedule
我个人没有使用过它,但你似乎可以安排一些回调在你的时间段后发生。
来自页面上的示例
var schedule = require('node-schedule');
var j = schedule.scheduleJob('42 * * * *', function(){
console.log('The answer to life, the universe, and everything!');
});
然后您可以围绕调度程序构建一些 API 来创建/销毁调度。
您可以在 cron times 中使用步骤。 */77
类似于 "every 77th." 使用此概念,您可以每 77 小时通过 另一个 作业启动一个 cron 作业 运行 在下一个早上 5 点(只有一次)。
const { CronJob } = require('cron');
const foo = () => console.log('Hello, world!');
const job = new CronJob('0 */77 * * *', foo);
new CronJob('0 5 * * *', () => {
job.start();
this.stop();
}, null, true);
或者,您可以在每早上 5 点启动一次 cron 作业,并设置一个超时以在 77 小时内执行您的代码。
const job = new CronJob('0 5 * * *', () => setTimeout(foo, 1000 * 60 * 60 * 77), null, true);