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

使用Discord API发送PUT请求添加用户至Guild问题求助

修复Discord API添加用户到服务器的PUT请求问题

问题分析

你的代码存在几个关键问题导致请求失败:

  • 请求格式不匹配:设置了Content-Type: application/json,但发送的是URL编码的字符串,Discord API要求请求体为JSON格式。
  • 错误处理逻辑错误:catch块中await err无效,无法正确返回错误信息。
  • 请求体构造冗余:无需使用URLSearchParams,直接传入JSON对象即可。

修复后的代码

app.get("/api/auth/joinguild", async (req: Request, res: Response) => {
    try {
        const guild_id = "HIDDEN";
        const user_id = "HIDDEN";
        const botToken = "HIDDEN";
        
        // 直接构造JSON格式的请求体
        const response = await axios.put(
            `https://discord.com/api/v10/guilds/${guild_id}/members/${user_id}`,
            { access_token: accessToken }, // 传入JSON对象,axios会自动处理Content-Type
            {
                headers: {
                    Authorization: `Bot ${botToken}`
                },
            }
        );
        
        res.send(response.data);
    } catch (err: any) {
        // 提取Discord返回的错误信息
        const errorData = err.response?.data || { message: "请求失败" };
        res.status(err.response?.status || 500).send(errorData);
    }
});

额外注意事项

  • 你的机器人账号必须拥有服务器的CREATE_INSTANT_INVITE权限,否则无法执行添加用户操作。
  • 用户的accessToken必须包含guilds.join授权范围,这是调用该接口的必要条件。
  • 目标服务器不能设置为私有服务器,否则即使权限正确也无法添加用户。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 12:39:24