Home > Enterprise >  I'm getting [object Object] instead of output
I'm getting [object Object] instead of output

Time:07-21

So, I have a command that should send random fact and translate it from English to Ukrainian, but instead of getting a random fact, it's just showing [object Object]. Here is my code, I'm on discord.js v13.

const { MessageEmbed } = require('discord.js');
const fetch = require('node-fetch');
const translate = require('@iamtraction/google-translate');
module.exports = {
  name: 'fact',
  description: 'Випадковий факт',
  category: 'Fun',
  async run({ interaction, bot }) {
    const response = await fetch('https://uselessfacts.jsph.pl/random.json?language=en');
await response.json().then(async res => {
const translated = await translate(res, { to: 'uk' });
      interaction.reply({
        embeds: [new MessageEmbed().setTitle('Факт').setDescription(translated.text).setColor('RANDOM')]
      });
    });
  }
};

CodePudding user response:

It's because the API returns an object and you implicitly convert it to a string. This object has a text property, so you should use await translate(res.text, { to: 'uk' }).

Also, you should not mix thens with async/await. Just pick one:

const { MessageEmbed } = require('discord.js');
const fetch = require('node-fetch');
const translate = require('@iamtraction/google-translate');
module.exports = {
  name: 'fact',
  description: 'Випадковий факт',
  category: 'Fun',
  async run({ interaction, bot }) {
    const response = await fetch(
      'https://uselessfacts.jsph.pl/random.json?language=en',
    );
    const { text } = await response.json();
    const translated = await translate(text, { to: 'uk' });
    interaction.reply({
      embeds: [
        new MessageEmbed()
          .setTitle('Факт')
          .setDescription(translated.text)
          .setColor('RANDOM'),
      ],
    });
  },
};
  • Related