【发布时间】:2021-07-17 03:37:20
【问题描述】:
我已安排以下 cron 作业每分钟运行一次以更新嵌入中的时间。
cron.schedule('* * * * *', function () {
con.query(`SELECT * FROM events WHERE closed = 'No'`, (err, rows) => {
if (err) throw err
rows.slice().forEach(row => {
const channel = row.channel
const messageID = row.messageID
bot.channels.cache.get(channel).messages.fetch(messageID).then(message => {
const embed = message.embeds[0]
let now = Date.now()
const targetDate = new Date(`${row.event_date} ${row.event_time}:00`)
var difference = (targetDate - now) / 1000;
var days = Math.floor(difference / (3600 * 24));
var hours = Math.floor((difference - (days * (3600 * 24))) / 3600);
var minutes = Math.floor((difference - (days * (3600 * 24)) - (hours * 3600)) / 60);
let timeTill;
if (days > 0) {
timeTill = `${days} Days ${hours} Hours ${minutes} Min`
} else if (days === 0 && hours > 0) {
timeTill = `${hours} Hours ${minutes} Min`
} else if (days === 0 && hours === 0) {
timeTill = `${minutes} Min`
} else if (difference <= 0) {
timeTill = `Event Started - get with <@!${row.hostID}> to join up in-game.`
}
embed.fields[9] = {
name: 'Starts in:',
value: `${timeTill}`,
inline: false
}
message.edit(new Discord.MessageEmbed(embed));
})
})
})
})
工作得很好,但我想减轻我网站服务器的工作量,让机器人搜索所需的信息。这是我到目前为止所拥有的,但它没有做任何事情。不会出错,不要更新嵌入。没有什么。很确定我忽略了某些东西,只需要另一双眼睛告诉我那是什么。
cron.schedule('* * * * *', function () {
bot.channels.cache.filter((channel) => channel.name.endsWith('events')).forEach((channel) => {
channel.messages.cache.filter((message) => {
const embed = message.embeds[0]
let messageID;
let event_date;
let event_time;
if (!embed) {
return
} else {
if (embed.color === 65280) {
messageID = message.id
event_date = message.embeds[0].fields[0].value
event_time = message.embeds[0].fields[1].value
} else {
return
}
}
let now = Date.now()
const targetDate = new Date(`${event_date} ${event_time}:00`)
var difference = (targetDate - now) / 1000;
var days = Math.floor(difference / (3600 * 24));
var hours = Math.floor((difference - (days * (3600 * 24))) / 3600);
var minutes = Math.floor((difference - (days * (3600 * 24)) - (hours * 3600)) / 60);
let timeTill;
if (days > 0) {
timeTill = `${days} Days ${hours} Hours ${minutes} Min`
} else if (days === 0 && hours > 0) {
timeTill = `${hours} Hours ${minutes} Min`
} else if (days === 0 && hours === 0) {
timeTill = `${minutes} Min`
} else if (difference <= 0) {
timeTill = `Event Started - get with <@!${row.hostID}> to join up in-game.`
}
embed.fields[9] = {
name: 'Starts in:',
value: `${timeTill}`,
inline: false
}
message.edit(new Discord.MessageEmbed(embed))
})
})
})
【问题讨论】:
标签: cron discord.js