为什么节点cron不在forEach()中运行?

时间:2018-10-26 03:17:14

标签: node.js foreach cron discord.js node-cron

我当前正在创建一个不和谐的机器人。我希望它具有的功能之一是发送“计划的消息”,为此行会的管理员可以设置发送消息的时间。
我将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);
  });
});

现在,我无法在cron中运行top函数,因为我需要首先从.forEach()中获取变量banquetTime,否则我将不会能够在cron中使用它。

0 个答案:

没有答案