我想复制另一个机器人的嵌入内容并重新发送,而只将图像更改为缩略图。我已经能够用缩略图替换图像,获取作者名称和页脚以及描述字段。但是我不知道如何获得这些领域和价值。我要复制的消息中有很多字段和值。我是否需要确切找出有多少个?这是我到目前为止的内容:
let url = e.image.url;
let desc = e.description;
let avatar = e.author.name;
//let avaimg = e.icon.url;
let field = e.fields.value;
let field2 = e.fields.name;
let foot = e.footer.text;
然后
embed
.setDescription(desc)
.setThumbnail(url)
.setFooter(foot)
.addField(field2, field, true)
.setAuthor(avatar)
return message.channel.send(embed)
,这有效,但是字段仅显示“ undefined”。因此,我需要一种方法来获取所有字段并准确地重新发布其内容。另外,我不确定如何获取作者图标。
我希望我的问题有意义,如果这是一个菜鸟问题,我很抱歉,我对js不太有经验。
答案 0 :(得分:1)
MessageEmbed.fields
是一个数组,因此您应该遍历每个元素并逐个添加它们:您可以使用for
循环或使用Array.forEach()
方法对此进行添加。 br />
这是一个示例:
// let's say we have a receivedEmbed and yourEmbed
receivedEmbed.fields.forEach(({ name, value, inline }) => {
yourEmbed.addField(name, value, true)
})
正在发生的事情是,您正在遍历每个field,抓住name
,value
和inline
属性(即使您决定不使用最后一个属性) ,因为它知道它的存在),然后将这些相同的字段添加到您自己的字段中。
一种替代方法是使用for
循环:
for (let field of receivedEmbed.fields) {
yourEmbed.addField(field.name, field.value, field.inline)
}
如果您使用discord.js@v12,则还可以使用addFields
方法:
yourEmbed.addFields(receivedEmbed.fields)