Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 修复不和谐音乐机器人队列_Javascript_Node.js_Discord_Discord.js - Fatal编程技术网

Javascript 修复不和谐音乐机器人队列

Javascript 修复不和谐音乐机器人队列,javascript,node.js,discord,discord.js,Javascript,Node.js,Discord,Discord.js,我在上面看的视频大约是9个月前拍摄的,现在排队已经不起作用了。 它所做的只是播放一首新歌,而不是排队,停止命令也不起作用。 我对Javascript真的很陌生,我找不到任何问题,但我确信这是个问题 这不会产生任何错误 我想大部分问题都是由于过时的代码造成的,但我不确定。 如果有人能帮上忙,那就太棒了 bot.on('message', message => { if (!message.content.startsWith(PREFIX)) return; let arg

我在上面看的视频大约是9个月前拍摄的,现在排队已经不起作用了。 它所做的只是播放一首新歌,而不是排队,停止命令也不起作用。 我对Javascript真的很陌生,我找不到任何问题,但我确信这是个问题 这不会产生任何错误

我想大部分问题都是由于过时的代码造成的,但我不确定。 如果有人能帮上忙,那就太棒了

bot.on('message', message => {

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


    switch(args[0]) {



        case 'play':

                if(usedCommandRecently4.has(message.author.id)){
                    message.reply("Your using this command to fast!");
                } else{
                    function play(connection, message){
                        var server = servers[message.guild.id];

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

                        server.queue.shift();

                        message.channel.send("``Music Bot v1.2`` \n Adding song to queue!");

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

                    if(!args[1]){
                        message.channel.send("``Music Bot v1.2`` \n you need to provide a link!!");
                        return;
                    }

                    if(!message.member.voice.channel){
                        message.channel.send("``Music Bot v1.2`` \n 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.voice.channel.join().then(function(connection){

                        play(connection, message);

                    })

                    usedCommandRecently4.add(message.author.id);
                    setTimeout(() => {
                        usedCommandRecently4.delete(message.author.id)
                    }, 10000);
                }

            break;

            case 'skip':

                if(usedCommandRecently3.has(message.author.id)){
                    message.reply("Your using this command to fast!");
                } else{
                    var server = servers[message.guild.id];
                    if(server.dispatcher) server.dispatcher.end();
                    message.channel.send("``Music Bot v1.2`` \n Skipping the current song!")

                    usedCommandRecently3.add(message.author.id);
                    setTimeout(() => {
                        usedCommandRecently3.delete(message.author.id)
                    }, 3000);
                }

            break;

            case 'stop':
                var server = servers[message.guild.id];
                if(message.guild.voiceConnection){
                    for(var i = server.queue.length -1; i >=0; i--){
                        server.queue.splice(i, 1);
                    }

                    server.dispatcher.end();
                    message.channel.send("``Music Bot v1.2`` \n Ending the queue and Leaving the voice channel! \n This bot is in early development! \n if you have any problems with it dm Justice#6770!")
                    console.log('stopped the queue')
                }
            }

            if(message.guild.connection) message.guild.voiceConnection.disconnect();

})停止命令可能已中断,因为
message.guild.voiceConnection
已不存在

您需要改用
message.guild.voice.connection

关于队列问题,您的
play
功能似乎总是在移动队列,并在任何情况下播放新歌。你应该试着挪动那辆车

server.queue.shift();
server.dispatcher = connection.play(ytdl(server.queue[0], {filter: "audioonly"}));
按照这个确切的顺序,在
server.dispatcher.on(“end”,function(){/…
事件以查看是否有任何变化:)

我用这个顺序解决了队列问题,这个代码的问题是当你向队列中添加一首歌时,第一首歌从头开始,我不知道如何解决这个小问题

“游戏”案例:

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

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



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

        }         

在未定义的情况下,它会给我一个提示。stop命令也可以工作now@CIA哦,很抱歉,你现在需要播放这首歌^你可以粘贴
server.dispatcher=connection.play(ytdl(server.queue[0],{filter:“audioonly”}));
就在
play(connection,message);
line:)之前,每次播放(connection,message)都会尝试;仍然没有排队如果你能解释一下你到底想让它去哪里,那就太神奇了。我想到了
if(!message.guild.voiceConnection)message.member.voice.channel.join()。然后(函数(连接){
,但由于您尝试过,我现在真的不知道如何帮助您…您可能想查看更新的教程添加新音乐不会为我重新启动歌曲,但谢谢!这修复了我的队列!