You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 20:02:39