Discord.js v14:如何为已有Embed添加字段且不丢失原有属性?
解决Discord.js v14中Embed添加字段后丢失原有属性的问题
- 直接使用
new EmbedBuilder(msg.embeds[0])无法完整继承原Embed的所有属性,需改用EmbedBuilder.from()方法基于现有Embed创建新的构建器实例。 - v14的
EmbedBuilder不支持直接用fields.push()修改字段,必须通过官方提供的addFields()方法添加字段。
修正后的代码如下:
const { EmbedBuilder } = require('discord.js'); // 用from方法完整继承原Embed的所有属性 let embed = EmbedBuilder.from(msg.embeds[0]); // 添加新字段 embed.addFields({ name: '\u200B', value: `${emoji} ${role}`, inline: false }); // 编辑消息并添加反应 msg.edit({ embeds: [embed] }); msg.react(emoji);
说明
EmbedBuilder.from()会深度复制原Embed的颜色、描述、已有字段等全部属性,避免直接构造实例导致的属性丢失。addFields()是v14官方指定的字段添加方式,仅在原有字段列表末尾追加新内容,不会清除其他属性。
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

