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

时间:2019-06-16 18:38:17

标签: node.js discord webhooks discord.js

我正在尝试使用Node.js访问不和谐的Webhook,以获取简单消息(目前)。

我在这里和其他地方已经看过几次尝试,但是对它们并不太了解,也无法自己复制。通读docs并在线搜索后,我发现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));

我唯一获得的输出是状态代码为400的响应对象。唯一获得其他信息的时间是删除该方法时,然后得到的代码200并没有太大帮助。 我的有效负载是完全错误的还是URL或fetch语法出错?

2 个答案:

答案 0 :(得分:1)

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

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

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

webhook.send('Hello world.')
  .catch(console.error);

答案 1 :(得分:0)

您的请求中有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));