Discord机器人开发:无法获取Embed描述文本问题求助
解决Discord.js中EmbedBuilder无法获取description的问题
在Discord.js v14及以上版本中,EmbedBuilder采用构建器模式实现,你直接通过maintenanceEmbed.description访问描述文本会返回undefined——因为设置的属性并不直接暴露为实例的顶级属性,而是存储在内部的data对象中,或者可以通过对应的get方法获取。
方法一:访问data属性获取描述
修改发送消息的代码,直接读取构建器的data.description:
await chatChannel.send({ content: `>>> 🟠 ${maintenanceEmbed.data.description}`});
方法二:使用getDescription()方法
EmbedBuilder提供了专门的getter方法来获取描述内容:
await chatChannel.send({ content: `>>> 🟠 ${maintenanceEmbed.getDescription()}`});
方法三:提前存储描述文本(更推荐)
把描述内容先存成独立变量,后续直接复用这个变量,既避免依赖构建器内部结构,代码可读性也更高:
if (interaction.options.getString('statut') === 'maintenance') { const attachmentImage = new AttachmentBuilder("./src/database/img/info.png"); // 提前存储描述文本 const maintenanceDesc = `Le serveur fermera ces portes dans quelques instants pour cause de maintenance. ${commentaire}`; const maintenanceEmbed = new EmbedBuilder() .setColor("#FAA619") .setAuthor({ name: "Maintenance", iconURL: "attachment://info.png" }) .setDescription(maintenanceDesc); await statutChannel.send({ files: [attachmentImage], embeds: [maintenanceEmbed] }); // 直接复用变量 await chatChannel.send({ content: `>>> 🟠 ${maintenanceDesc}`}); };
以上三种方法都能解决你遇到的问题,其中第三种方法更利于后续维护和扩展。
内容的提问来源于stack exchange,提问作者Maxence
相关产品推荐
相关产品推荐

