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

Discord.js v12使用discord-buttons时报结构扩展类继承错误如何解决

问题原因

这个错误属于Discord.js结构扩展冲突,触发原因有两个:

  • 你使用的discord-buttons是已停止维护的第三方包,仅适配discord.js v12、v13早期版本,如果你使用v13后期或v14版本的discord.js,官方已经原生支持按钮功能,版本不匹配会触发结构扩展冲突。
  • 你重复初始化了discord-buttons:错误栈显示你在index.js第35行已经执行了require('discord-buttons')(client),之后加载events/ready.js文件时,该文件第一行又再次引入并初始化了discord-buttons,两次调用扩展同一个TextChannel结构就会触发报错。

另外你提供的事件加载代码存在冗余逻辑,外层的forEach是多余的,会导致你重复加载N次事件文件(N为events目录下的文件总数),也可能加剧重复初始化的问题。

修复方案

推荐方案(适配高版本discord.js)

discord.js v13及以上版本已经原生支持按钮组件,不需要额外安装discord-buttons:

  1. 执行卸载命令:npm uninstall discord-buttons
  2. 删除所有require('discord-buttons')(client)相关代码
  3. 原有按钮逻辑替换为discord.js官方的ButtonBuilder等原生API即可
  4. 优化事件加载代码,删除多余的外层遍历:
const events = readdirSync("./events/").filter(file => file.endsWith(".js"));
for (const file of events) {
  const pull = require(`./events/${file}`);
  if (pull.name) {
    client.events.set(pull.name, pull);
  }
}

兼容方案(坚持使用旧版本discord.js和discord-buttons)

  1. 确认discord.js版本为v13.6以下的兼容版本
  2. 仅保留index.js第35行的discord-buttons初始化代码,删除events/ready.js第一行重复引入初始化discord-buttons的代码
  3. 检查代码中是否有其他手动扩展TextChannel结构的逻辑,如有需要调整避免冲突
  4. 同上优化事件加载的冗余代码

内容的提问来源于stack exchange,提问作者8less

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:45:03