微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我有一个充满项目的 JSON,我想要一种方法来自动将项目添加到嵌入页面,但它会为每个项目发送新的嵌入内容

如何解决我有一个充满项目的 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 举报,一经查实,本站将立刻删除。