discord.js v12升级v17自定义Embed类报错求助
Discord.js v12 升级到 v17 嵌入类报错解决方案
问题根源
Discord.js v13 及更高版本(包括 v17)已完全移除了 MessageEmbed 类,替换为 EmbedBuilder。你原来的代码继承了已不存在的 MessageEmbed,因此触发 TypeError。
解决步骤
1. 正确导入 EmbedBuilder
根据项目模块类型选择对应导入方式:
- ES 模块(使用
import):import { EmbedBuilder } from 'discord.js'; - CommonJS(使用
require):const { EmbedBuilder } = require('discord.js');
2. 修改自定义嵌入类代码
将继承对象从 MessageEmbed 改为 EmbedBuilder,保留原有默认颜色逻辑:
// 确保 EMBED_COLOR 已提前定义(例如 const EMBED_COLOR = '#0099ff';) client.embed = class Embed extends EmbedBuilder { constructor(data) { super(data); this.setColor(EMBED_COLOR); } };
或使用类字段写法(需确保 Node.js 版本支持该语法):
client.embed = class Embed extends EmbedBuilder { color = EMBED_COLOR; };
3. 调整消息发送方式
v17 发送嵌入消息时,需将嵌入实例放在 embeds 数组中:
const customEmbed = new client.embed() .setTitle('示例标题') .setDescription('示例描述'); channel.send({ embeds: [customEmbed] });
内容的提问来源于stack exchange,提问作者Delta_Bravo92
相关产品推荐
相关产品推荐

