使用discord.js v13开发fact命令时出现[object Object]输出问题
解决Discord.js v13 Fact命令输出[object Object]的问题
问题根源
你传递给@iamtraction/google-translate的是整个API返回的JSON对象(res),但这个翻译库需要接收字符串类型的输入内容。直接传入对象会导致翻译逻辑处理异常,最终无法正确生成翻译文本,出现[object Object]的错误输出。
修正方案
- 从API返回结果中提取
text字段(这才是需要翻译的事实内容) - 调整代码结构,避免
await和.then()混用,让异步逻辑更清晰
修正后的代码
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 res = await response.json(); // 仅传入事实文本进行翻译 const translated = await translate(res.text, { to: 'uk' }); // 发送翻译后的嵌入消息 interaction.reply({ embeds: [ new MessageEmbed() .setTitle('Факт') .setDescription(translated.text) .setColor('RANDOM') ] }); } };
关键修改点
- 把
translate(res, { to: 'uk' })改为translate(res.text, { to: 'uk' }),确保传入翻译函数的是需要处理的字符串内容 - 移除
.then()链式调用,改用await处理异步操作,代码结构更直观易维护
内容的提问来源于stack exchange,提问作者FORAGEMON
相关产品推荐
相关产品推荐

