How to get all users with a role in Discord.js in a array(如何将Discord.js中具有角色的所有用户放入数组)
问题描述
我正在尝试获得所有具有特定角色的成员。例如,在我的ID为872029521484873779的不一致服务器中有Gurdian的角色。我想要一个数组中所有在我的服务器中将Gurdian作为角色的用户名的列表。我的代码如下
let nameList= msg.guild.roles.cache.get('role_id').members.map(m=>m.user.tag);
但是,在结果中,它只返回nameList
中的一个用户,而有9个用户具有分配给他们的角色。我在这里做错了什么,只给我带来了1个用户,而不是数组中9个用户组成的睡觉。我不熟悉Discord.js
推荐答案
发生这种情况是因为未缓存成员。因此,您只能看到一个人的日志记录,因为缓存中只有一个人。要解决此问题,您可以通过执行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正在检查用户是否存储在本地。获取成员时,它们也会自动存储在缓存中。这篇关于如何将Discord.js中具有角色的所有用户放入数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何将Discord.js中具有角色的所有用户放入数组
基础教程推荐
- 响应更改 div 大小保持纵横比 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 动态更新多个选择框 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 我什么时候应该在导入时使用方括号 2022-01-01
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- 在for循环中使用setTimeout 2022-01-01