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

如何获取Discord用户Nitro等级?Scope与邀请流程问题咨询

解决Discord用户Nitro等级获取问题

核心问题说明

你当前用Bot令牌调用/users/{id}接口无法拿到premium_type,是因为Bot令牌代表的是机器人账号的身份,而非用户授权的身份,Discord API不会通过Bot令牌返回其他用户的非公开个人信息(包括Nitro等级)。

能不能仅用bot和applications.commands scope获取?

不行。这两个scope仅用于赋予机器人在服务器内的操作权限(比如发送消息、管理频道),完全不涉及获取用户个人隐私数据的权限,无法用来获取Nitro等级。

正确的解决方案:通过OAuth2用户授权获取

要获取用户的Nitro等级,必须让用户通过OAuth2流程授权你的应用访问其个人信息,具体步骤如下:

  1. 配置Redirect URI:在Discord开发者平台的应用设置里,找到「OAuth2」→「Redirects」,添加一个合法的URI(比如本地调试用http://localhost:8080,线上环境用你的服务器域名)。
  2. 生成用户授权链接:构造包含identify scope的OAuth2授权链接(identify scope足够获取Nitro等级),格式示例:
    https://discord.com/oauth2/authorize?client_id=你的应用ID&redirect_uri=你设置的URI&response_type=code&scope=identify
    
  3. 获取授权码并换取Access Token:用户点击链接授权后,会跳转到你设置的Redirect URI,URL中会携带code参数。你的应用需要用这个code,结合应用的client_id、client_secret和Redirect URI,向https://discord.com/api/oauth2/token发送POST请求,换取用户的Access Token。
  4. 调用API获取用户数据:用拿到的用户Access Token调用GET /users/@me接口(注意是@me,代表当前授权的用户),请求代码示例:
    import requests
    
    headers = {"Authorization": f"Bearer 用户的Access Token"}
    response = requests.get("https://discord.com/api/v8/users/@me", headers=headers)
    if response.status_code == 200:
        data = response.json()
        premium_type = data.get("premium_type")
        print(f"User has premium tier {premium_type}")
    
    返回的premium_type对应等级:
    • 0:无Nitro
    • 1:Nitro Classic
    • 2:Nitro
    • 3:Nitro Basic(新等级)

关于guilds scope的误区

你提到的guilds scope是用来获取用户加入的服务器列表的,和获取Nitro等级无关。之前的搜索信息有误,不需要这个scope来获取premium_type。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 19:45:06