如何使用JavaScript发送Webhook?含Discord Webhook报错求助
用JavaScript发送Discord Webhook完全可行!
没问题!JavaScript绝对可以用来发送Webhook,给Discord服务器发消息更是不在话下~ 先看看你代码里的几个小问题,再给你正确的实现方式。
你的代码为啥没成功?
你的代码主要有这几个问题:
- Discord Webhook的payload结构错了:你把
{"content":"Hi"}赋值给了text,又把这个text放到了payload的text字段里,相当于嵌套了一层,Discord根本识别不了这个格式。 - 请求的内容类型没设置对:你没有指定
contentType: 'application/json',Discord不知道你发的是JSON格式的数据。 - 数据处理方式不对:你把JSON转成字符串后放到
payload参数里,这不符合Discord Webhook的要求。
正确的实现方式
方法1:用jQuery(和你原来的代码风格一致)
// 替换成你的Discord Webhook URL const webhookUrl = 'https://discord.com/api/webhooks/xxx/xxx'; // 构造正确的payload const payload = { content: 'Hi from jQuery!' }; $.ajax({ url: webhookUrl, type: 'POST', // 告诉服务器我们发的是JSON contentType: 'application/json', // 把payload转成JSON字符串发送 data: JSON.stringify(payload), success: function() { console.log('消息发送成功啦!'); }, error: function(err) { console.error('发送失败了:', err); } });
方法2:用原生JavaScript(更通用,无需jQuery)
现在很多项目都不用jQuery了,用原生fetch方法更方便:
const webhookUrl = 'https://discord.com/api/webhooks/xxx/xxx'; const payload = { content: 'Hi from native JavaScript!' }; fetch(webhookUrl, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(payload), }) .then(response => { if (response.ok) { console.log('消息发送成功!'); } else { console.error('发送失败,状态码:', response.status); } }) .catch(error => { console.error('请求出错了:', error); });
额外小技巧:发送带嵌入的消息
如果想发更美观的嵌入消息,只要在payload里加embeds数组就行:
const payload = { content: '这是一条带嵌入的消息', embeds: [ { title: '我的第一个嵌入消息', description: '这里可以写详细的描述内容', color: 16776960 // 黄色的十进制颜色值,你可以自己换其他颜色 } ] };
注意事项
- 一定要保管好你的Webhook URL,别泄露给别人,不然陌生人能随便往你的服务器发消息。
- Discord限制单条消息的
content字段最多2000字符,太长会发送失败。 - 如果发送失败,可以打开浏览器的控制台看错误信息,通常能找到问题原因(比如URL错了、权限不够)。
内容的提问来源于stack exchange,提问作者Adit Luhadia




