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

JS开发的Discord音乐机器人启动报错,如何排查解决?

问题修复方案

你的报错由以下几个可复现的问题导致,按顺序修改即可解决:

1. 修正HTML转义字符错误

你代码中所有的双引号都被转义为了HTML实体",属于语法错误,直接全局替换所有"为标准双引号"即可。

2. 补全discord.js必填的网关意图配置

当前discord.js v13及以上版本要求必须显式声明机器人所需的网关权限,原无参初始化new Discord.Client()的写法已失效。
按你使用的版本替换对应初始化代码:

若使用discord.js v13

const { Client, Intents } = require('discord.js');
const client = new Client({
  intents: [
    Intents.FLAGS.GUILDS,
    Intents.FLAGS.GUILD_VOICE_STATES,
    Intents.FLAGS.GUILD_MESSAGES,
    Intents.FLAGS.MESSAGE_CONTENT
  ]
});

若使用discord.js v14

const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildVoiceStates,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent
  ]
});

同时需要进入Discord开发者平台的机器人管理页,在「Bot」选项卡下开启Message Content Intent开关,否则机器人无法读取消息内容触发命令。

3. 调整事件注册位置

你当前将所有distube.on事件监听代码写在了message事件回调内部,每次收到消息都会重复注册事件,会导致内存泄漏、事件重复触发。把所有distube事件监听代码移到message事件外部,和ready事件平级即可。

4. 修正模板字符串语法

ready事件中的日志用了单引号包裹模板字符串,内部变量不会被解析,把单引号替换为反引号:

client.on("ready", () => {
    console.log(`${client.user.tag} va venir faire mousser tout ça!`);
});

5. 版本匹配校验

确保disTube版本和discord.js版本匹配:

  • disTube v3.x 对应 discord.js v13.x
  • disTube v4.x 对应 discord.js v14.x
    跨版本安装会出现未知接口报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:24:00