音乐机器人 discord.js 问题

Posted

技术标签:

【中文标题】音乐机器人 discord.js 问题【英文标题】:Music Bot discord.js issue 【发布时间】:2020-09-22 20:39:44 【问题描述】:

我一直试图让这个代码让音乐机器人工作,我有所有的依赖项,但我认为这是因为我观看的视频来自大约 8 个月前,并且很多代码已经失效。

目前我收到一个错误 TypeError: Cannot read property 'join' of undefined。 如果有人可以帮助我解决问题并使其正常工作,那就太棒了。

bot.on('message', message => 

    if (!message.content.startsWith(PREFIX)) return;
    let args = message.content.slice(PREFIX.length).split(" ");


    switch(args[0])
        case 'play':

                function play(connection, message)
                    var server = servers[message.guild.id];

                    server.dispatcher = connection.play(ytdl(server.queue[0], filter: "audioonly"));

                    server.queue.shift();

                    server.dispatcher.on("end", function()
                        if(server.queue[0])
                            play(connection, message);
                        else 
                            connection.disconnect();
                        
                    )
                

                if(!args[1])
                    message.channel.send("you need to provide a link!");
                    return;
                

                if(!message.member.voice.channel.join)
                    message.channel.send("You must be in a voice channel to play music!");
                    return;
                

                if(!servers[message.guild.id]) servers[message.guild.id] = 
                    queue: []
                

                var server = servers[message.guild.id];

                server.queue.push(args[1]);

                if(!message.guild.voiceConnection)message.member.voiceChannel.join().then(function(connection)

                    play(connection, message);

                )

            break;

            

)

【问题讨论】:

【参考方案1】:

从 Discord v12 开始,message.member.voiceChannel.join() 可能需要更改为 message.member.voice.channel.join()

【讨论】:

@ExodusBackup 很高兴听到这个消息:)【参考方案2】:

看起来问题来自这里:

if(!message.member.voice.channel.join) message.channel.send("You must be in a voice channel to play music!"); return; 

您需要删除 .join 部分,因为 Discord.js 中不存在这样的东西

【讨论】:

不要粗鲁,但我很确定 ti 确实如此,因为当键入 join 时,它会作为 vscode 中的语音方法出现。此外,它不是导致问题的连接,它位于代码底部 @ExodusBackup 对不起,我的错。我已经提交了另一个答案,这次应该是正确的

以上是关于音乐机器人 discord.js 问题的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js 音乐机器人加入然后离开

找不到 Discord.js 音乐机器人 ffmpeg?

Discord.js 音乐机器人:TypeError:this.inputMedia.pipe 不是函数

从 twitch bot 调用 Discord.js 音乐问题找到语音频道

Discord JS 音乐机器人 - .message.member.voiceChannel.join() 不工作

不断收到 DiscordAPIError:在 Discord.js 中的音乐机器人上使用 reconlx 的分页执行队列命令时出现未知交互