Discord.js встроенное изображение не работает. (Не удалось интерпретировать «{‘url’: ‘https://cdn.nekos.life/boobs/boobs105.gif ‘}» как строку.)

#javascript #node.js #discord #discord.js

#javascript #node.js #Discord #discord.js

Вопрос:

Мой command.js

основано на некоторых других ботах, таких как HarutoHiroki Bot с открытым исходным кодом на Github и Nekos.документация по жизни

 
    const Discord = require('discord.js');
    const client = require('nekos.life');
    const neko = new client();
    
    module.exports.run = async (bot, message, args) => {
      if (message.channel.nsfw === true) {
          link = await neko.nsfw.boobs()
          console.log(link)
          const embed = new Discord.MessageEmbed()
              .setAuthor(`Some neko boobs`)
              .setColor('#00FFF3')
              .setImage(link)
              .setFooter(`Bot by`);
              message.channel.send(embed);
        } 
      else {
        message.channel.send("This isn't NSFW channel!")
      }
    };
    
    module.exports.config = {
        name: "boobs",
        description: "",
        usage: "*boobs",
        accessableby: "Members",
        aliases: []
    }

  

Ошибка:

 
    > node .
    (node:25052) ExperimentalWarning: Conditional exports is an experimental feature. This feature could change at any time
    Logged in and connected as Bot#1234
    { url: 'https://cdn.nekos.life/boobs/boobs105.gif' }
    (node:25052) UnhandledPromiseRejectionWarning: DiscordAPIError: Invalid Form Body
    embed.image.url: Could not interpret "{'url': 'https://cdn.nekos.life/boobs/boobs105.gif'}" as string.
        at RequestHandler.execute (C:UsersUserDocumentsGitHubBotnode_modulesdiscord.jssrcrestRequestHandler.js:170:25)
        at processTicksAndRejections (internal/process/task_queues.js:97:5)
    (node:25052) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)(node:25052) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

  

Мой вопрос

как это исправить? (Я пробовал день отверстия, но не смог заставить его работать, нужна помощь как можно скорее)

Ответ №1:

Я исправил это:

 const Discord = require('discord.js');
const client = require('nekos.life');
const neko = new client();

module.exports.run = async (bot, message, args) => {
  if (message.channel.nsfw === true) {
      link = await neko.nsfw.boobs()
      const embed = new Discord.MessageEmbed()
          .setAuthor(`Some neko boobs`)
          .setColor('#00FFF3')
          .setImage(link.url)
          .setFooter(`Bot by`);
          message.channel.send(embed);
    } 
  else {
    message.channel.send("This isn't NSFW channel!")
  }
};

module.exports.config = {
    name: "boobs",
    description: "",
    usage: "*boobs",
    accessableby: "Members",
    aliases: []
}
  

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

1. Пожалуйста, всегда добавляйте немного объяснений к своим ответам, чтобы каждый мог понять, что именно вы изменили.

Ответ №2:

Похоже, что neko.nsfw.boobs() возвращает object , а не string . Попробуйте это вместо:

 const { url } = await neko.nsfw.boobs(); // get only the URL, not the whole object
const embed = new Discord.MessageEmbed()
 .setAuthor(`Some neko boobs`)
 .setColor('#00FFF3')
 .setImage(link.url)
 .setFooter(`Bot by`);
message.channel.send(embed);
  

Вот пример фрагмента кода:

 const link = {
  url: 'https://cdn.nekos.life/boobs/boobs105.gif'
};

console.log(link); // this will not give the link. it will give the whole object

/* using object destructuring, you can use brackets to capture one 
   property of an array. in this case, the url.
   
   Object Destructuring - https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
*/
const {
  url
} = link;

console.log(url); // this will give *only* the link
console.log(link.url); // another method to give only the link