我尝试了以下代码:
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)。
答案 0 :(得分:1)
您可以简单地使用channel.guild
而不是尝试自己找到行会。为了将来参考,要跳过循环中的值,可以使用continue
而不是return
。