Почему узел cron не работает внутри forEach ()? - PullRequest
0 голосов
/ 26 октября 2018

В настоящее время я создаю бот-диск.Одна из функций, которые я хочу иметь, - отправлять «запланированные сообщения», для которых администраторы этой гильдии смогут установить время, когда они будут отправлены.
Я использую 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.

...