Ошибка DiscordAPIError: недопустимое тело формы

#node.js #discord.js

#node.js #discord.js

Вопрос:

Я пытаюсь создать команду, которая отправляет случайное изображение (в данном случае waifu), используя API, доступный в этой конечной точке: https://waifu.pics/api/sfw/waifu

Команда, которую я выполняю test1 , вот мой код:

 if (command === 'test1') {
      const a = new Discord.MessageEmbed()
      got('https://waifu.pics/api/sfw/waifu').then(response => {
      let content = response.body;
      let Image = content.url;
      a.setTitle('test')
      a.setImage(`${Image}`)
      message.channel.send(a)
  })
}
 

Проблема, с которой я сталкиваюсь, заключается в следующей ошибке:

 embed.image.url: Scheme "undefined" is not supported. Scheme must be one of ('http', 'https').
 

Ответ №1:

Используйте этот формат для отправки встроенных сообщений

 message.channel.send({
embed: a
})
 

или

 message.channel.send({
embed: a,
content: "my content without embed"
})
 

Комментарии:

1. Пожалуйста, добавьте дополнительные подробности, чтобы расширить свой ответ, например, ссылки на рабочий код или документацию.

2. Это не отвечает на заданный вопрос, OP запросил решение для отправки встраивания с изображением из его конечной точки API, а не как отправить простое встраивание.

Ответ №2:

Вы пытаетесь setImage() использовать переменную Image , которая является необработанным ответом от API, однако конечная точка API, похоже, отправляет ответ JSON, поэтому вам нужно сначала проанализировать это и преобразовать его в массив, а затем извлечь URL-адрес из url ключа.

 if (command === 'test1') {
    got("https://waifu.pics/api/sfw/waifu").then(response => {
        let imageData = JSON.parse(response); // Parse the JSON response from the API.

        // Prepare the embed.
        let embed = new MessageEmbed()
            .setTitle("Embed Title")
            .setDescription("Embed message here!")
            .setImage(imageData.url); // Set the image.

        message.channel.send({ embeds:  });
    });
}