В настоящее время я создаю бот-диск.Одна из функций, которые я хочу иметь, - отправлять «запланированные сообщения», для которых администраторы этой гильдии смогут установить время, когда они будут отправлены.
Я использую enmap
для получения разрешения.система конфигурации сервера и cron
для запланированного сообщения.
Вот мой код:
bot.guilds.forEach((guild) => {
let banquetTime;
banquetTime = bot.settings.get(guild.id, "banquetTime");
cron.schedule(banquetTime, () => {
bot.settings.ensure(guild.id, defaultSettings);
let banquetChannel = bot.settings.get(guild.id, "banquetChannel");
let banquetMessage = bot.settings.get(guild.id, "banquetMessage");
guild.channels
.find(channel => channel.name === banquetChannel)
.send(banquetMessage)
.catch(console.error);
});
}, {
scheduled: true,
timeZone: 'America/Los_Angeles'
});
Когда я запускаю это, ничего не происходит.Кто-нибудь знает почему?
У меня есть другая функция, в которой .forEach()
работает ВНУТРИ cron.schedule
, и она работает, но я не уверен, почему, когда cron.schedule
находится внутри .forEach()
, она не работает.
Вот код, где он работает:
cron.schedule('00 45 12,20 * * *', () => {
bot.guilds.forEach((guild) => {
bot.settings.ensure(guild.id, defaultSettings);
let expoChannel = bot.settings.get(guild.id, "expoChannel");
let expoMessage = bot.settings.get(guild.id, "expoMessage");
guild.channels
.find(channel => channel.name === expoChannel)
.send(expoMessage)
.catch(console.error);
});
});
Теперь я не могу запустить .forEach()
внутри cron для функции top, потому что мне нужно получить переменную banquetTime
из.forEach(guild)
сначала, иначе я не смогу использовать его в cron.