尝试从频道ID获取公会

时间:2019-04-26 22:47:26

标签: node.js discord.js

我尝试了以下代码:

module.exports = async (client, channel) => {
  if (channel.type === "dm" || channel.type === "group") return;

  var guild;
  client.guilds.forEach(e => {
    e.fetchAuditLogs({type: 'CHANNEL_DELETE'})
      .then(audit => {
        if (audit.entries.first().id === channel.id) guild = e;
      });
  });
  if (!guild) return;
};

我想获取通过事件参数传递的频道ID的公会。
这是在 channelDelete 事件中,因此我无法执行client.channels.get(channel.id),因为该集合中不存在ID。我需要从审核日志中获取信息。

问题是我觉得这已经超出了API,或者可能有更好的方法,而不必遍历该机器人所在的每个公会。

此外,实际代码无法按预期运行。看起来好像在实际循环完成之前就到达了if (!guild) return;,这意味着它将始终返回。

因此,我如何使代码逐步执行,以使它不会一直返回,或者在不那么密集的情况下改进代码(如果此方法在API上很密集) / host)。

1 个答案:

答案 0 :(得分:1)

您可以简单地使用channel.guild而不是尝试自己找到行会。为了将来参考,要跳过循环中的值,可以使用continue而不是return