如何用Python和discord.py获取Discord服务器所有成员的用户ID?
获取Discord服务器所有成员ID的正确方法
你的代码存在几个关键问题,下面是修正后的实现方案:
原代码问题分析
- 错误使用
ctx.members:成员列表属于服务器对象(guild),而非上下文(ctx),应调用ctx.guild.members - 遍历方式错误:不需要通过
range(member_count)生成索引循环,直接遍历成员集合即可 - 未确保获取全部成员:默认情况下
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
相关产品推荐
相关产品推荐

