Discord webhook发送带按钮消息出现JSON语法错误问题求助
问题根因
你代码里的paramsJSON对象缺少闭合的右大括号},属于基础语法错误,这就是导致JSON序列化失败、接口返回错误的核心原因。你发送不带按钮的消息没问题,是因为当时你写的对象结构是完整闭合的,新增components字段后漏补了对象的闭合符号。
修复方案
在components数组的结束括号后补充params对象的闭合右大括号即可,修复后的完整代码如下:
const request = new XMLHttpRequest(); request.open("POST", "/* the url of the bot */"); request.setRequestHeader('Content-type', 'application/json'); const params = { "embeds": [ { "title": "test", "description": "test", "color": 65474 } ], "components": [ { "type": 1, "components": [ { "type": 2, "style": 5, "label": "kaas", "url": "/* url website */" } ] } ] } request.send(JSON.stringify(params));
额外校验点
如果修复语法问题后按钮仍不显示,可以检查以下配置:
- 确保你使用的webhook有权限发送组件消息,默认官方webhook都支持发送链接型按钮
- 按钮的url字段必须填入合法的完整HTTP/HTTPS链接,不能留空或者填入不符合格式的内容
- 如果使用非链接型的交互按钮(style不为5),必须补充
custom_id字段,否则会被接口拒绝
内容的提问来源于stack exchange,提问作者bijenmanlol
相关产品推荐
相关产品推荐

