我有一个不和谐的机器人,我想执行一个meme命令。我将所有模因存储在一个json文件memes.json
中,在我的index.js中,我有一个变量来获取其数据const meme("./memes.json)"
并在嵌入代码中开始出现错误,请留下我的代码供您帮助。
const Discord = require("discord.js");
const meme = require("./memes.json")
function RandomNumbers(min, max) {
return Math.round(Math.random() * (max - min) + min);
}
client.on("message", function(message) {
const commandBody = message.content.slice(prefix.length);
const args = commandBody.split(' ');
const command = args.shift().toLowerCase();
//Other commands
}else if(command === 'meme'){
const memeNumber = RandomNumbers(1, 6)
const memeEmbed = new Discord.MessageEmbed()
.setTitle('Meme')
.setColor('#0099ff')
console.log(meme+'.'+memeNumber)
.setImage(meme+'.'+memeNumber)
message.channel.send(memeEmbed)
}
//memes.json
{
"1": "https://images7.memedroid.com/images/UPLOADED762/5e2e4a5a1d35b.jpeg",
"2": "https://i.pinimg.com/originals/9f/8a/5a/9f8a5afe202b973259d76cbd925660e6.jpg",
"3": "https://i.redd.it/3bfmb513ihd41.jpg",
"4": "https://memeplanet.files.wordpress.com/2012/08/kiss-plz.jpg",
"5": "https://i.kym-cdn.com/photos/images/newsfeed/001/780/926/b82.jpg",
"6": "https://i.pinimg.com/originals/dd/e2/df/dde2df58419e90f30d3abdcb673717f1.png"
}
我把控制台登录在那里检查它会给我什么,它给了我
[对象对象] .2
答案 0 :(得分:1)
组合两个字符串不会构成功能对象属性引用。您应该像使用数组一样使用括号语法。
console.log(meme[memeNumber])
const sampleObj = { property: true }; // sample object
const propName = 'property';
console.log(sampleObj[propName]); // brackets work fine in general, but also with variables
您永远都不要这样做,但是为了更彻底,您也可以eval
。
const sampleObj = { property: true };
const propName = 'property';
eval(`console.log(sampleObj.${propName})`);
答案 1 :(得分:0)
发生这种情况是因为您的json是一个对象,并且您尝试登录console.log(meme +'。'+ memeNumber)来执行此操作:console.log(meme.toString()+'。'+ memeNumber)其中{} .toString是[object Object]。
如果将冒号用作分隔符,则可以更有效地使用console.log()(您不会遇到此类问题),例如:console.log(meme,memeNumber)将打印存储在meme中的对象并将数字分别存储在memeNumber中。
您可以通过使用
解决问题 console.log(meme[memeNumber])
分别
.setImage(meme[memeNumber])