跨多个渠道获取消息

时间:2019-05-22 13:21:11

标签: javascript node.js discord.js

我当前正在尝试获取公会中的所有消息,但是.fetchMessages方法仅适用于特定渠道。

我已经尝试使用.forEach函数,但这样做时遇到了多个错误。

async function intervalFunc() {
  var mainGuild = client.guilds.get("562324876330008576");
  var messagesArray = [];
  await mainGuild.channels.forEach(channel => {
    if (channel.type == "text") {
      channel.fetchMessages({ limit: 20 }).then(msg => {
        messagesArray.push(msg);
      });
    }
  });
  console.log(messagesArray.length)
  //....
}

预期输出至少为几百,但输出0

1 个答案:

答案 0 :(得分:0)

您需要将await放在异步操作上:

async function intervalFunc() {
  var mainGuild = client.guilds.get("562324876330008576");
  var messagesArray = [];

  for(channel in mainGuild.channels) {
    if(channel.type == "text") {
      const messages = await channel.fetchMessages({limit: 20});
      messagesArray = [
        ...messagesArray,
        ...messages,
      ];      
    }
  }

  console.log(messagesArray.length);
}

因此,这里它将等待ferchMessages以异步方式返回值,然后进行下一次迭代。