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

如何在discord.py 2.1.0中获取文本频道指定角色的用户

解决discord.py 2.1.0获取角色成员为空的问题

问题根源

你用role.members得到空列表,本质是discord.py 2.0+版本对成员数据的访问做了限制:必须启用成员意图,同时机器人要有对应权限才能获取成员缓存。

解决方法

1. 开启Discord平台的成员意图

  • 进入你的机器人应用的Discord开发者后台
  • 切换到「Bot」页面,找到「Privileged Gateway Intents」区域
  • 开启「Server Members Intent」开关

2. 代码中配置成员意图

初始化Bot时必须传入启用成员意图的配置:

import discord
from discord.ext import commands

# 初始化意图,开启成员权限
intents = discord.Intents.default()
intents.members = True

bot = commands.Bot(command_prefix="!", intents=intents)

3. 给机器人分配「服务器成员列表」权限

在目标服务器的角色设置里,确保机器人拥有「服务器成员列表」权限,否则无法拉取成员数据。

4. (可选)过滤频道内的角色成员

如果你的需求是当前文本频道内拥有该角色的用户(而非整个服务器),需要额外过滤:

role = discord.utils.get(channel.guild.roles, id=1060070158267326565)
# 先获取服务器内所有带该角色的成员
all_role_users = role.members
# 筛选出当前频道里的成员
channel_role_users = [user for user in all_role_users if user in channel.members]
print(channel_role_users)

内容的提问来源于stack exchange,提问作者ahmet güzel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:10:28