【问题标题】:Discord.js copying another bot's embedDiscord.js 复制另一个机器人的嵌入
【发布时间】:2020-09-22 21:04:48
【问题描述】:

我想复制另一个机器人的嵌入并重新发送,同时只将图像更改为缩略图。我已经能够用缩略图替换图像,获取作者姓名和页脚,以及描述字段。但我不知道如何获取字段和值。我要复制的消息中有很多字段和值。我需要找出确切的数量吗?这是我目前所拥有的:

            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)

这可行,但是字段只是说“未定义”。所以我需要一种方法来获取所有字段并让它准确地重新发布它所说的内容。另外我不确定如何获取作者图标。

我希望我的问题是有道理的,如果这是一个菜鸟问题,我很抱歉,我对 js 不是很有经验。

【问题讨论】:

  • 也许尝试将描述、页脚和字段作为字符串?

标签: javascript node.js bots discord discord.js


【解决方案1】:

MessageEmbed.fields 是一个数组,因此您应该遍历每个元素并一个一个地添加它们:您可以使用for 循环或使用Array.forEach() 方法来添加它们。
这是一个例子:

// let's say we have a receivedEmbed and yourEmbed
receivedEmbed.fields.forEach(({ name, value, inline }) => {
  yourEmbed.addField(name, value, true)
})

发生的情况是,您正在循环遍历每个 field,获取 namevalueinline 属性(即使您决定不使用最后一个属性,它'因为知道它存在),并将这些相同的字段添加到您自己的嵌入中。
另一种方法是使用for 循环:

for (let field of receivedEmbed.fields) {
  yourEmbed.addField(field.name, field.value, field.inline)
}

如果你使用 discord.js@v12,你也可以使用addFields 方法:

yourEmbed.addFields(receivedEmbed.fields)

【讨论】:

    猜你喜欢
    • 2021-07-11
    • 2020-09-08
    • 2020-09-15
    • 2020-08-04
    • 2020-07-18
    • 2018-09-25
    • 2021-09-18
    • 2021-05-08
    • 2020-11-22
    相关资源
    最近更新 更多