使用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
相关产品推荐
相关产品推荐

