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

如何用Discord Bot打印频道在线成员列表?报错求助

问题解决

你的代码存在两个关键错误,加上一个需要确认的配置点,修正后即可正常筛选在线成员:

错误1:属性名大小写错误

Python是大小写敏感语言,Member对象的状态属性是小写的status,而非大写的Status——这就是报错“Member has no attribute Status”的直接原因。

错误2:状态枚举引用错误

Status枚举直接归属discord模块,并非discord.client的子属性,因此应该用discord.Status.online,而不是discord.client.Status.online。

额外确认:确保成员意图正确启用

虽然你提到已开启全部特权网关意图,但需确保代码里显式启用了成员意图:

intents = discord.Intents.default()
intents.members = True
client = discord.Client(intents=intents)

同时要在Discord开发者后台的机器人页面,确认“服务器成员特权意图”已处于开启状态。

修正后的完整代码片段

linkchannel = int(message.channel.topic)
channel = client.get_channel(linkchannel)
members = channel.members 

names = []
for member in members:
    if member.status == discord.Status.online:
        names.append(member.name)

print(names)
# 转成换行分隔的字符串发送,比直接发列表更美观
await message.channel.send("\n".join(names) if names else "当前没有在线成员")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:50:21