Есть два бота, которые размещены на сервере Ubuntu 18.04 x64 (1 ядро) и поддерживаются PM2 (fork). https://dl4.joxi.net/drive/2020/01/07/0028/2950/1842054/54/ed0a34751d.jpg Один из них запланирован для запуска задач с использованием Cron , в примере будет - Котировки (MainBotDP).
В 9 часов утра каждого дня, выполняется скрипт, который должен отправить цитату один раз (выполняется один раз в день). Вместо этого скрипт запускается несколько раз (не всегда) и отправляет несколько кавычек.
Я заметил закономерность, которая возникает, когда я перезагружаю бот несколько раз в течение дня и на следующий день сценарий запускается в зависимости от количество перезагрузок (не уверен, наверное). Я не совсем понимаю, как решить эту ситуацию, буду благодарен за вашу помощь!
Файл конфигурации PM2
module.exports = {
apps: [
{
name: "MainBotDP",
cwd: "./digitalPilgrims/src/",
script: "index.js",
instance_var: "INSTANCE_ID",
autorestart: true,
watch: false,
max_memory_restart: "1G",
env: {
WITH_SCHEDULE: "1"
}
},
{
name: "RSSNews",
cwd: "./discordNews/",
script: "server.js",
instance_var: "INSTANCE_ID",
autorestart: true,
watch: false,
max_memory_restart: "1G",
env: {
WITH_SCHEDULE: "2"
}
}
]
};
Файл расписания Cron
const CronJob = require("cron").CronJob;
const { quoteOfDay } = require("./quote");
const { holidayNewYear } = require("./holidays");
const { monthlyGameStats } = require("./monthlyStats");
function startCrons(guild) {
if (process.env.WITH_SCHEDULE === "1") {
const cronQuote = new CronJob(
"0 0 9 * * *",
function() {
quoteOfDay(guild);
},
false,
false,
"Europe/Moscow"
);
const cronHolidayNewYear = new CronJob({
cronTime: "0 18 15 1 0 *",
onTick: function() {
holidayNewYear(guild);
},
start: false,
timeZone: "Europe/Moscow"
});
const cronMonthlyGameStats = new CronJob(
"0 10 1 * *",
function() {
monthlyGameStats(guild);
},
false,
false,
"Europe/Moscow"
);
cronQuote.start();
cronHolidayNewYear.start();
cronMonthlyGameStats.start();
}
}
module.exports = {
startCrons
};