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

使用undici通过POST请求调用Discord API发送频道消息返回400错误的问题排查

解决Discord API发送消息返回400错误的问题

你这明显是踩了Discord API的基础格式坑啦!返回400(Bad Request)基本就是服务器读不懂你的请求,核心问题有两个:

  • 请求体格式不对:Discord的/channels/{channel_id}/messages接口要求POST的请求体是JSON对象,不是直接传字符串。你得把消息内容塞进content字段里,不能直接把字符串当body发。
  • 缺了关键请求头:你的headers里没加Content-Type: application/json,服务器根本不知道你发的是JSON数据,自然没法解析。

给你改好的代码,直接用就行:

await request(`https://discord.com/api/v9/channels/${channel_id}/messages`, {
  method: "POST",
  // 把字符串content包装成JSON对象再序列化
  body: JSON.stringify({ content: content }),
  headers: {
    authorization: `Bot ${token}`,
    accept: "*/*",
    // 必须加这个头,告诉服务器请求体是JSON格式
    "Content-Type": "application/json"
  },
});

另外再提两个要排查的点,以防还有隐藏问题:

  1. 确认Bot Token是对的,而且Bot已经被邀请到目标服务器,同时在目标频道拥有Send Messages权限。
  2. 检查消息内容有没有违反Discord规则:比如长度超2000字符、包含违规内容之类的。

先把前两个格式问题解决,应该就能正常发消息了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 13:37:30