试图从频道 ID 获取公会
Trying to get guild from channel id
我试过这个代码:
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;
,这意味着它总是 return。
那么,我该怎么做才能让代码一步一步地流动,这样它就不会一直 return,或者改进代码不那么密集的方法(如果这个方法集中在 API/host).
您可以简单地引用 channel.guild
而不是尝试从客户端的缓存中获取公会。
为了将来参考,要在循环中跳过一个值,您应该使用 continue
而不是 return
。
我试过这个代码:
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;
,这意味着它总是 return。
那么,我该怎么做才能让代码一步一步地流动,这样它就不会一直 return,或者改进代码不那么密集的方法(如果这个方法集中在 API/host).
您可以简单地引用 channel.guild
而不是尝试从客户端的缓存中获取公会。
为了将来参考,要在循环中跳过一个值,您应该使用 continue
而不是 return
。