如何获取我的Discord机器人所在服务器的用户昵称列表
操作前提
- 你需要先在Discord开发者后台开启机器人的Server Members Intent权限:进入Discord Developer Portal找到对应机器人应用,打开「Bot」选项卡,在Privileged Gateway Intents分类下开启
Server Members Intent开关并保存,没有该权限无法拉取完整的服务器成员列表。 - 确保机器人在目标服务器内拥有「查看成员」的权限。
代码实现(以discord.py v2.x为例)
核心逻辑是通过已有的服务器ID获取服务器实例,遍历实例下的members集合,取display_name字段即可拿到用户在当前服务器的自定义昵称,无自定义昵称时会自动返回用户的全局用户名。
import discord from discord.ext import commands # 启用成员访问所需的Intent intents = discord.Intents.default() intents.members = True # 初始化机器人,命令前缀可自定义 bot = commands.Bot(command_prefix="!", intents=intents) @bot.event async def on_ready(): # 替换为你要查询的服务器ID target_guild_id = 替换为实际服务器ID guild = bot.get_guild(target_guild_id) if not guild: print("未找到对应服务器,请检查ID是否正确") return # 收集成员昵称列表 nick_list = [] for member in guild.members: nick_list.append(f"昵称:{member.display_name},用户ID:{member.id}") # 输出结果,可按需写入文件或做其他处理 print(f"服务器「{guild.name}」的成员列表:") for nick in nick_list: print(nick) # 替换为你的机器人Token bot.run("你的机器人Token")
其他语言SDK逻辑参考
如果使用JavaScript的discord.js库,逻辑完全一致:
- 初始化时开启
GuildMembersintent - 用服务器ID获取Guild实例
- 遍历
guild.members.cache集合,取displayName字段即可得到成员昵称
常见问题排查
- 拉取到的成员数和实际服务器人数不符:优先检查
Server Members Intent是否开启,代码中是否显式声明启用了成员相关的intent,机器人权限是否配置正确。
内容的提问来源于stack exchange,提问作者Metehan Erzincanlı
相关产品推荐
相关产品推荐

