0

我目前正在创建一个不和谐的机器人。我希望它具有的功能之一是发送“预定消息”,该公会的管理员将能够设置发送时间。
我正在使用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()INSIDE 内运行的函数cron.schedule,它可以工作,但我不确定为什么当在cron.scheduleinside时.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 中使用它。

4

0 回答 0