Javascript 修复不和谐音乐机器人队列
我在上面看的视频大约是9个月前拍摄的,现在排队已经不起作用了。 它所做的只是播放一首新歌,而不是排队,停止命令也不起作用。 我对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
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()。然后(函数(连接){
,但由于您尝试过,我现在真的不知道如何帮助您…您可能想查看更新的教程添加新音乐不会为我重新启动歌曲,但谢谢!这修复了我的队列!