在 Discord js 中的特定时间戳发送消息
Send a message at a specific timestamp in Discord js
我是 discord js 的新手,正在尝试让我的机器人在特定时间发送消息(通过时间戳设置)。
client.on('ready', function(e)
{
console.log(`Logged in as ${client.user.tag}!`)
let scheduledMessage = new cron.CronJob('0 10 15 * * *', () => {
const guild = client.guilds.cache.get('ID');
const channel = client.channels.cache.get('ID');
const exampleEmbed = new MessageEmbed()
.setColor('#ebdc05')
.setTitle('Another ten minutes')
channel.send({ embeds: [exampleEmbed] });
});
scheduledMessage.start()
});
我发现了这个在 15:10:00 发送消息的方法。我的问题是我需要机器人每 31 小时发送一次消息。
我也找到了写'0 0 */31 * * *'而不是'0 10 15 * * *'的方法。这行得通,每 31 小时会发送一条消息,但我担心我的机器人有时会在 31 小时后发送消息,然后在时间后添加秒和分钟,在某个时候它会发送在 15:12:00 或某处留言
所以我想出了一个想法,只做一个时间戳,加上时间总是 31 小时,然后让机器人在准确的时间戳发送消息。遗憾的是,我没有发现任何问题。
这可能吗?
编辑:时间戳变量会很有用,因为我可以很容易地减去和添加时间,还可以在嵌入中显示它。
您使用的 cron
库的要点是您可以明确地告诉它分钟和秒——在您的例子中,0。
它不会累积错误。除非它非常糟糕,否则 cron
库会为您做“找出下一个时间戳”的事情。
cron 字符串 0 0 */31 * * *
表示“每 31 小时一次,时间看起来像 XX:00:00”。因此它永远不会 运行 在 15:12:00 — 或者 15:10:00 就此而言。你说的是“运行 在这一分钟和第二秒”,所以它会。
免责声明:我尝试阅读 https://github.com/kelektiv/node-cron to confirm this myself, but it's pretty convoluted. https://github.com/node-cron/node-cron/tree/master/src 的代码更容易阅读,而且它确实每秒都在检查时间戳。
我是 discord js 的新手,正在尝试让我的机器人在特定时间发送消息(通过时间戳设置)。
client.on('ready', function(e)
{
console.log(`Logged in as ${client.user.tag}!`)
let scheduledMessage = new cron.CronJob('0 10 15 * * *', () => {
const guild = client.guilds.cache.get('ID');
const channel = client.channels.cache.get('ID');
const exampleEmbed = new MessageEmbed()
.setColor('#ebdc05')
.setTitle('Another ten minutes')
channel.send({ embeds: [exampleEmbed] });
});
scheduledMessage.start()
});
我发现了这个在 15:10:00 发送消息的方法。我的问题是我需要机器人每 31 小时发送一次消息。
我也找到了写'0 0 */31 * * *'而不是'0 10 15 * * *'的方法。这行得通,每 31 小时会发送一条消息,但我担心我的机器人有时会在 31 小时后发送消息,然后在时间后添加秒和分钟,在某个时候它会发送在 15:12:00 或某处留言
所以我想出了一个想法,只做一个时间戳,加上时间总是 31 小时,然后让机器人在准确的时间戳发送消息。遗憾的是,我没有发现任何问题。
这可能吗?
编辑:时间戳变量会很有用,因为我可以很容易地减去和添加时间,还可以在嵌入中显示它。
您使用的 cron
库的要点是您可以明确地告诉它分钟和秒——在您的例子中,0。
它不会累积错误。除非它非常糟糕,否则 cron
库会为您做“找出下一个时间戳”的事情。
cron 字符串 0 0 */31 * * *
表示“每 31 小时一次,时间看起来像 XX:00:00”。因此它永远不会 运行 在 15:12:00 — 或者 15:10:00 就此而言。你说的是“运行 在这一分钟和第二秒”,所以它会。
免责声明:我尝试阅读 https://github.com/kelektiv/node-cron to confirm this myself, but it's pretty convoluted. https://github.com/node-cron/node-cron/tree/master/src 的代码更容易阅读,而且它确实每秒都在检查时间戳。