You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用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

火山引擎 最新活动