【问题标题】:How can I remove a field from an embed by editing it?如何通过编辑从嵌入中删除字段?
【发布时间】:2019-05-27 05:11:03
【问题描述】:

假设我创建了一个嵌入并将其发送到一个频道。这是嵌入:

const embed = new Discord.RichEmbed()
        .setColor(color)
        .setTitle(`${message.author.tag} wants to play.`)
        .setAuthor(message.author.tag, message.author.displayAvatarURL)
        .setDescription(game)
        .setThumbnail(icon)
        .addField(`\u200b\n**React with ${emoji} to join.**`, "Remove your reaction to leave.");

发送后,我想编辑该嵌入的标题和说明删除我在末尾添加的字段。

这是我正在尝试创建的新嵌入:

const embed = new Discord.RichEmbed(reaction.message.embeds[0])
            .setTitle("This game has ended.")
            .setDescription("You can no longer join.");

这会更改标题和描述,但我不确定如何删除我添加的字段。

【问题讨论】:

    标签: javascript discord discord.js


    【解决方案1】:

    我知道这已经 6 个月大了,但如果其他人像我一样在这里绊倒,你不应该将 embed.fields 设置为 null。这可以防止以后使用 addField 方法添加新字段。而是将其设置为一个空数组。

    embed.fields = [];
    

    【讨论】:

    • 将此作为解决方案,希望我在 6 个月前就知道这一点 :(
    【解决方案2】:

    对不起,我误会了。您可以手动设置属性,例如新嵌入对象的embed.fields, 为空。 here 是 RichEmbed 属性的文档。

    在您的具体情况下,要删除 所有字段,您可能会这样做:

    embed.fields = null;
    

    【讨论】:

    • 抱歉,我没有指定我需要保持作者、颜色和缩略图相同,所以我必须从前一个创建嵌入。
    【解决方案3】:

    使用这个:

    .spliceFields(startingIndex, numberOfFieldsToDelete, [
        {name: fieldName, value: fieldValue},
    ]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 2021-04-22
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      相关资源
      最近更新 更多