【问题标题】:Music Bot discord.js issue音乐机器人 discord.js 问题
【发布时间】: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;

    }        

})

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案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 对不起,我的错。我已经提交了另一个答案,这次应该是正确的
    猜你喜欢
    • 2020-08-04
    • 2021-07-25
    • 2020-11-01
    • 2020-12-01
    • 2020-06-27
    • 2021-02-07
    • 2021-11-29
    • 2021-09-18
    • 2019-10-22
    相关资源
    最近更新 更多