如何用Discord.py从用户名(如duviz#0)获取用户ID?
如何在discord.py中将用户名(如duviz#0)转换为用户ID
情况1:获取当前服务器内的成员ID
如果目标用户在机器人所在的服务器中,可直接用Guild.get_member_named()方法,传入完整的「用户名# discriminator」格式字符串,拿到成员对象后提取ID:
# 示例:从命令上下文获取服务器对象 member = ctx.guild.get_member_named("duviz#0") if member: user_id = member.id print(f"用户ID:{user_id}") else: print("该用户不在当前服务器中")
情况2:获取全局用户(好友或共享服务器用户)
Discord API限制机器人仅能获取自己好友或已加入服务器的用户信息。你可以先拆分用户名和 discriminator,再遍历客户端缓存的用户列表匹配:
# 拆分用户名和后缀数字 username, discrim = "duviz#0".split("#") # 遍历缓存用户 for user in client.users: if user.name == username and user.discriminator == discrim: user_id = user.id print(f"用户ID:{user_id}") break else: print("未找到该用户(可能不在好友列表或共享服务器中)")
注意事项
- 机器人需要具备服务器成员相关权限,才能访问服务器成员列表。
- 若目标用户不在机器人的任何服务器或好友列表中,无法通过discord.py直接获取其ID,这是Discord API的硬性限制。
内容的提问来源于stack exchange,提问作者Duviz 2
相关产品推荐
相关产品推荐

