如何使用 Discord.js 发布到 Discord Webhook(代码 400 错误请求)?

jac*_*kik 1 webhooks node.js discord discord.js

我正在尝试使用 Nodejs 访问不和谐的 Webhook 来获取简单消息(目前)。

我在这里和其他地方看过几次尝试,但不太理解它们或无法自己复制它们。阅读文档在线搜索,我发现node-fetch在我看来原则上应该工作得很好,而且看起来更简单。

const fetch = require('node-fetch');
          var webhook = {
            "id":"my webhook id",
            "token":"my webhook token"
          };
          var URL = `https://discordapp.com/api/webhooks/${webhook.id}/${webhook.token}`;

          fetch(URL, {
            "method":"POST",
            "payload": JSON.stringify({
              "content":"test"
            })
          })
            .then(res=> console.log(res));
Run Code Online (Sandbox Code Playgroud)

我得到的唯一输出是状态代码为 400 的响应对象。我唯一得到其他内容的时候是当我删除该方法时,然后我得到代码 200,这没有多大帮助...我的有效负载是否完全错误或者我在 URL 或 fetch 语法方面犯了错误?

slo*_*ful 6

您可以使用 Discord.js 中内置的 POST 请求,而不是发出自己的 POST 请求,WebhookClient如下所示...

const id = '';
const token = '';

const webhook = new Discord.WebhookClient(id, token);

webhook.send('Hello world.')
  .catch(console.error);
Run Code Online (Sandbox Code Playgroud)


Gru*_*tzy 5

您的请求中有 2 个小错误导致错误 400 :

  • 标头中没有 Content-Type
  • payload属性必须替换为body

    var URL = `https://discordapp.com/api/webhooks/${webhook.id}/${webhook.token}`;
    fetch(URL, {
         "method":"POST",
         "headers": {"Content-Type": "application/json"},
         "body": JSON.stringify({
            "content":"test"
          })
    
        })
        .then(res=> console.log(res))
        .catch(err => console.error(err));
    
    Run Code Online (Sandbox Code Playgroud)