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

如何使用discord.py获取所连接Discord服务器的成员名称

问题原因

  • 你使用的discord.py 1.5及以上版本默认关闭了成员特权网关意图,没有权限拉取服务器全量成员列表
  • 初始化Client时没有配置对应的成员权限,所以guild.members仅能拿到机器人自身的缓存数据,你当前输出的{"Security"}就是机器人自己的用户名

解决步骤

  1. 先进入Discord开发者后台的机器人设置页面,找到Privileged Gateway Intents板块,开启Server Members Intent开关
  2. 修改代码,初始化Client时显式声明启用成员意图,修改后的代码如下:
import discord
import os

# 声明启用默认意图+成员意图
intents = discord.Intents.default()
intents.members = True

client = discord.Client(intents=intents)

def get_member_names():
    for guild in client.guilds:
        for member in guild.members:
            yield member.name

@client.event
async def on_ready():
  print("We have logged in as {0.user}".format(client))
  people = set(get_member_names())
  print(people)

@client.event
async def on_message(message):
  if message.author == client.user:
    return

  print(message.content[0] == '>')


client.run(os.environ["BOT_PASSWORD"])
  • 如果你的服务器成员数量超过1000,还需要主动调用guild.chunk()拉取全量成员,可直接替换on_ready逻辑:
@client.event
async def on_ready():
  print("We have logged in as {0.user}".format(client))
  people = set()
  for guild in client.guilds:
      # 主动拉取当前服务器全量成员数据
      async for member in guild.chunk():
          people.add(member.name)
  print(people)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:48:02