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

调用Discord API获取成员时遇401错误,如何排查解决?

解决Discord API 401未授权错误及获取成员数的修正方案
  • Authorization头格式错误:
    Discord机器人Token的请求头必须以Bot 前缀开头,你当前代码里直接写Authorization: token不符合规范,正确格式应为:

    "header" => "Authorization: Bot 你的机器人Token"
    

    注意Bot后面有一个空格,替换为你实际的机器人Token。

  • API端点域名过时:
    旧的discordapp.com域名已被弃用,需替换为官方当前使用的discord.com,修正后的请求地址:

    'https://discord.com/api/guilds/SERVER-ID/members?limit=1000'
    
  • 开启服务器成员意图权限:
    要获取服务器成员列表,机器人必须开启服务器成员意图(Guild Members Intent):

    1. 登录Discord开发者门户,进入你的应用
    2. 切换到"Bot"页面,找到"Privileged Gateway Intents"板块
    3. 开启"Server Members Intent"开关
    4. 确保机器人已受邀加入目标服务器,且拥有View Channel等基础权限
  • 添加错误处理逻辑:
    原代码未处理请求失败的情况,比如401错误时file_get_contents会返回false,导致后续count操作报错,建议补充判断:

    <?php 
    $token = "你的机器人Token";
    $serverId = "你的服务器ID";
    $json_options = [ 
        "http" => [ 
            "method" => "GET", 
            "header" => "Authorization: Bot {$token}",
            "ignore_errors" => true // 允许获取错误响应内容
        ] 
    ];
    $json_context = stream_context_create($json_options); 
    $json_get = file_get_contents("https://discord.com/api/guilds/{$serverId}/members?limit=1000", false, $json_context); 
    
    if ($json_get === false) {
        echo "请求失败";
        exit;
    }
    
    $json_decode = json_decode($json_get, true);
    if (isset($json_decode['code']) && $json_decode['code'] === 401) {
        echo "Token无效或权限不足";
        exit;
    }
    
    echo count($json_decode); 
    ?>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:00:51