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

Discord音乐机器人无法连接语音频道且无报错问题求助

问题根因排查&修复方案

1. 核心错误点

  • 事件监听名称不兼容:discord.js v13+ 已废弃message事件,替换为messageCreate,原写法下指令根本无法触发,自然无反应无报错
  • 语音连接参数错误:
    • 你错误使用了不存在的属性message.channelid、message.guildid,正确属性名是驼峰格式
    • 你传入的是文字频道ID,实际需要传入触发指令的用户所在的语音频道ID
  • 缺失错误捕获逻辑:没有对语音连接、音频流、播放器添加错误监听,导致运行出错也没有日志输出
  • 潜在依赖缺失:语音播放需要配套安装opus编码库,如@discordjs/opus或libsodium-wrappers,未安装也会导致连接失败无报错

2. 代码修正

修正Main.js事件监听部分

找到原代码的client.on ('message', message=>{行,替换为:

client.on ('messageCreate', message=>{

其余Main.js内容保持不变即可。

修正aimesus.js指令代码

完整修正后的代码如下:

const ytdl = require('ytdl-core');

module.exports ={
    name:'aimesus',
    description:'aaaaaaaaaaaam',
    async execute(message, args){
        // 先判断用户是否在语音频道
        if(!message.member.voice.channel) return message.reply('你需要先加入一个语音频道');
        try {
            const { joinVoiceChannel, createAudioPlayer, createAudioResource, generateDependencyReport, VoiceConnectionStatus, entersState } = require('@discordjs/voice');
            const url = 'https://www.youtube.com/watch?v=NevKVKbCNy4&ab_channel=NTDM'
            const stream = ytdl(url, {filter: 'audioonly', highWaterMark: 1<<25});
            const player = createAudioPlayer();
            const resource = createAudioResource(stream);
            const connection = joinVoiceChannel({
                // 修正为用户所在的语音频道ID
                channelId: message.member.voice.channel.id,
                // 修正为正确的服务器ID取值
                guildId: message.guild.id,
                adapterCreator: message.guild.voiceAdapterCreator,
                selfDeaf: false
            })
            // 等待语音连接成功后再操作
            await entersState(connection, VoiceConnectionStatus.Ready, 30e3);
            connection.subscribe(player);
            player.play(resource);
            
            console.log(generateDependencyReport());

            // 添加错误监听
            connection.on('error', err => console.error('语音连接错误:', err));
            player.on('error', err => console.error('播放器错误:', err));
            stream.on('error', err => console.error('音频流加载错误:', err));
        } catch (err) {
            console.error('指令运行错误:', err);
            message.reply('播放失败,请查看控制台日志');
        }
    }
}

3. 额外检查项

  • 确保已安装语音编码依赖:运行npm install @discordjs/opus libsodium-wrappers安装必要依赖
  • 检查Discord开发者后台已给机器人开启了Voice相关权限,服务器内邀请机器人时也勾选了语音连接、语音说话权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:54:02