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

如何用Python和discord.py获取Discord服务器所有成员的用户ID?

获取Discord服务器所有成员ID的正确方法

你的代码存在几个关键问题,下面是修正后的实现方案:

原代码问题分析

  1. 错误使用ctx.members:成员列表属于服务器对象(guild),而非上下文(ctx),应调用ctx.guild.members
  2. 遍历方式错误:不需要通过range(member_count)生成索引循环,直接遍历成员集合即可
  3. 未确保获取全部成员:默认情况下guild.members可能仅包含缓存的成员,需主动调用fetch_members拉取所有成员

修正后的代码

@bot.command()
async def Test1(ctx):
    # 拉取服务器所有成员(limit=None表示获取全部)
    all_members = await ctx.guild.fetch_members(limit=None).flatten()
    
    # 逐个打印成员ID
    for member in all_members:
        print(member.id)
    
    # 可选:将所有ID收集为列表
    member_id_list = [member.id for member in all_members]
    print("成员ID列表:", member_id_list)

必要的意图配置

确保你已经在代码中启用了成员特权意图:

import discord
from discord.ext import commands

# 启用必要的意图
intents = discord.Intents.default()
intents.members = True

# 初始化机器人
bot = commands.Bot(command_prefix="你的前缀", intents=intents)

同时要在Discord开发者平台的机器人设置中,开启服务器成员特权意图(Privileged Gateway Intents下的Server Members Intent)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 19:19:57