Почему узел cron не работает внутри foreach ()?

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

можно console.log(banquetTime) перед cron?

DedaDev 26.10.2018 09:38

да, он записывает "banquetTime's" от каждой гильдии. Я попытался просто добавить числа в cron time вместо переменной banquetTime, и это даже не сработало.

Robin Sung 26.10.2018 20:59

id гильдии - это не название гильдии.

DedaDev 27.10.2018 15:22

не уверен о чем ты? guild.id работает нормально, захватывает id каждой гильдии. пожалуйста, дополните

Robin Sung 27.10.2018 23:15
banquetTime = bot.settings.get(guild.id, "banquetTime"); это строка братан, второй аргумент - это идентификатор гильдии, а не имя или что-то еще.
DedaDev 28.10.2018 17:04
0
5
160
0

Другие вопросы по теме