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

如何通过Discord用户名获取对应ID?discord.py及其他语言能否实现?

代码空返回问题修复

你的代码返回空存在3个可修复的错误:

  • discriminator参数不需要带#前缀,原代码中discriminator= "#1803"写法错误,正确应为discriminator="1803"
  • 函数内硬编码了用户名和鉴别器取值,没有使用传入的name_en、tag_en参数,导致所有调用只会查询固定用户Atom#1803
  • 未开启服务器成员网关意图:discord.py v2.0及以上版本默认不会拉取服务器全量成员列表,你需要先在Discord开发者后台的机器人设置页开启Server Members Intent开关,同时初始化客户端时声明对应意图:
import discord

intents = discord.Intents.default()
intents.members = True
client = discord.Client(intents=intents)

修正后功能代码

def get_user_id(name_en, tag_en, guild_id):
    guild = client.get_guild(guild_id)
    if not guild:
        return None
    user = discord.utils.get(guild.members, name=name_en, discriminator=tag_en)
    return user.id if user else None

功能实现边界说明

通过用户名查询用户ID仅支持查询当前机器人所在服务器内的成员,Discord官方API限制不允许跨服务器通过用户名查询非本服务器用户的ID,该限制为平台级规则,无论使用discord.py还是其他编程语言开发机器人都无法突破。

补充:2023年Discord已逐步下线用户名后的鉴别器机制,新版用户名全局唯一不带#后缀,适配新版系统可将匹配字段替换为global_name。

内容的提问来源于stack exchange,提问作者Ivan Polak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:06:02