You need to enable JavaScript to run this app. 如何获取我的Discord机器人所在服务器的用户昵称列表
优惠活动
大模型
产品
解决方案
定价
更多

如何获取我的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库,逻辑完全一致:

  1. 初始化时开启GuildMembers intent
  2. 用服务器ID获取Guild实例
  3. 遍历guild.members.cache集合,取displayName字段即可得到成员昵称
常见问题排查
  • 拉取到的成员数和实际服务器人数不符:优先检查Server Members Intent是否开启,代码中是否显式声明启用了成员相关的intent,机器人权限是否配置正确。

内容的提问来源于stack exchange,提问作者Metehan Erzincanlı

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 04:54:03