如何通过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
相关产品推荐
相关产品推荐

