You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取拥有某一指定角色的全部成员列表

如何通过role.members获取指定角色的全部成员列表

前置要求

首先需要在Discord开发者平台的应用配置页开启服务器成员特权意图(Server Members Intent),未开启该权限的情况下,role.members只会返回本地已缓存的部分成员,无法获取完整列表。

实现方式

方式1:直接使用role.members获取

如果本地已经缓存了服务器全量成员,可以直接调用该属性获取持有对应角色的成员集合:

// 示例:根据角色ID获取目标角色对象
const targetRole = interaction.guild.roles.cache.get("替换为目标角色ID");
if (!targetRole) return console.log("指定角色不存在");

// 遍历输出所有持有该角色的成员信息
targetRole.members.forEach(member => {
  console.log(`用户ID:${member.id},用户名:${member.user.tag}`);
});

// 如需转换为普通数组使用
const memberList = Array.from(targetRole.members.values());

方式2:全量拉取成员后筛选(更稳定)

如果服务器成员较多,本地缓存不全,建议先主动拉取全量服务器成员再按角色筛选,避免数据缺失:

// 拉取服务器全量成员列表
interaction.guild.members.fetch()
  .then(allMembers => {
    // 筛选出持有目标角色的成员
    const targetMembers = allMembers.filter(member => 
      member.roles.cache.has("替换为目标角色ID")
    );
    // 后续业务逻辑
    console.log(`持有该角色的成员总数:${targetMembers.size}`);
  })
  .catch(err => console.error("拉取成员列表失败:", err));

内容的提问来源于stack exchange,提问作者Michiko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 12:36:03