问题描述
我的代码:
// Getting My Obj
const storeOptions = require('../util/storeOption.json')
const options = Object.keys(storeOptions)
// Looping through them all
for (const x of options) {
const option = {
name: `${storeOptions[x].emoji} ${storeOptions[x].name}`,value: `${storeOptions[x].cost}\n${storeOptions[x].description}`
}
const embed = new MessageEmbed()
.setAuthor(message.author.tag,message.author.displayAvatarURL())
.setDescription('Here is our store!\n\n**Shop Items**')
.addFields(option)
message.channel.send(embed)
}
我希望所有字段都在单个嵌入中,但它会向新字段发送垃圾邮件,并且字段中只有一个对象。
解决方法
它会为每个项目发送新的嵌入内容,因为您要声明嵌入内容并将其发送到 for 循环内的通道。
此外,您正在使用 addFeilds
,您可以通过一次提供对象数组(带有名称和值)来一次设置多个字段。 Check this for reference
我建议您在 for 循环之前声明 MessageEmbed
并将 addFeild
声明为每次迭代的嵌入。
const storeOptions = require('../util/storeOption.json')
const options = Object.keys(storeOptions)
// Declare embed before for loop starts
const embed = new MessageEmbed()
.setAuthor(message.author.tag,message.author.displayAvatarURL())
.setDescription('Here is our store!\n\n**Shop Items**')
for (const x of options) {
const option = {
name: `${storeOptions[x].emoji} ${storeOptions[x].name}`,value: `${storeOptions[x].cost}\n${storeOptions[x].description}`
}
// Add Feild to embed
embed.addField(option)
}
return message.channel.send(embed);