Как опубликовать в Discord Webhook с Discord.js (код 400 Bad Request)? - PullRequest
0 голосов
/ 16 июня 2019

Я пытаюсь получить доступ к несоответствующему Webhook, используя Nodejs для простых сообщений (пока).

Я смотрел на несколько попыток здесь и в других местах, но не совсем понял их или смог сам их воспроизвести. Прочитав документы и выполнив поиск в Интернете, я обнаружил 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 или синтаксисом выборки?

Ответы [ 2 ]

1 голос
/ 16 июня 2019

Вместо того, чтобы делать свой собственный запрос POST, вы можете использовать WebhookClient, встроенный в Discord.js, например, так ...

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

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

webhook.send('Hello world.')
  .catch(console.error);
0 голосов
/ 17 июня 2019

В вашем запросе есть 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));
    
...