如何解决我有一个充满项目的 JSON,我想要一种方法来自动将项目添加到嵌入页面,但它会为每个项目发送新的嵌入内容
我的代码:
// 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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。