调用Discord API执行Webhook返回404错误是什么原因
Discord Webhook 执行接口返回404排查方案
Webhook创建完成后即时生效,不需要等待同步时间,以下是高频触发原因,按排查优先级排序:
- 首先核对HTTP请求方法:执行Webhook发消息的接口只接受
POST请求,如果你误用GET、DELETE等其他方法请求该地址,Discord不会返回方法错误提示,会直接返回404状态码,属于最高发的低级错误。 - 检查JSON解析的字段路径:你贴的创建接口返回结构里存在两个
id字段,一个是Webhook自身的id,一个是嵌套在user对象里的创建者用户id,很多人写解析逻辑时字段路径写错,误取用户id拼接URL,必然返回404。 - 检查URL拼接细节:拼接完成的URL不要在末尾多加斜杠、空格或者其他冗余路径,正确的执行接口URL最后一段就是Webhook token,没有额外后缀。你可以先给拼好的URL直接发
GET请求做有效性验证:该查询接口不需要携带任何鉴权信息,如果GET请求都返回404,说明你持有的id和token组合对应的Webhook资源不存在。 - 先跑通最小请求排除业务代码问题:跳过自己写的业务封装逻辑,直接用curl发送最基础的测试请求,排除代码里的序列化、请求头配置错误:
curl -X POST "替换为你拼接完成的完整Webhook URL" \ -H "Content-Type: application/json" \ -d '{"content": "测试消息"}'
如果上述请求可以正常发送消息,说明URL本身完全有效,问题出在你的代码逻辑里:重点检查Content-Type请求头和你传递的请求体格式是否匹配、所用的HTTP框架是否自动给URL追加了后缀、请求体是否被异常转义。
- 确认Webhook资源未被销毁:哪怕创建接口返回成功,只要后续出现Webhook所属频道被删除、创建Webhook的机器人被移出服务器、服务器管理员手动删除了该Webhook的情况,就算id和token完全正确,请求也会返回404。
- 排除网络拦截问题:部分企业网络、公共网络会拦截Discord API请求,返回的404是网络网关的自定义拦截页,并非Discord官方的响应,切换网络环境(比如手机热点、境外服务器命令行)测试即可排除这类问题。
内容的提问来源于stack exchange,提问作者Simon
相关产品推荐
相关产品推荐

