且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何将Discord.js中具有角色的所有用户放入数组

更新时间:2023-11-30 12:12:10

发生这种情况是因为未缓存成员。因此,您只能看到一个人的日志记录,因为缓存中只有一个人。要解决此问题,您可以通过执行msg.guild.members.fetch()来获取所有成员,然后使用msg.guild.roles.cache.get("roleid").members.map(m => m.user.tag)获取实际输出。请注意,如果您使用的是V13,则需要GUILD_MEMBERS意图。

从公会获取成员会将其存储在缓存中。因此,当您执行role.members操作时,您将获得具有此角色的成员。

如果您不提取成员,则信息将不准确。Discord.js将用户存储在缓存中。当机器人在线时,只要有人发送消息、更新他们的个人资料或任何有关自己的信息,就会发生这种情况。因此,如果重新启动机器人,缓存中将没有人。

为什么提取不同于缓存?

FETCH直接从Discorde获取信息,而Cache正在检查用户是否存储在本地。获取成员时,它们也会自动存储在缓存中。