我的discord music机器人将播放音乐,但当我尝试停止它时,它不会';行不通

我的discord music机器人将播放音乐,但当我尝试停止它时,它不会';行不通,discord,discord.js,Discord,Discord.js,当我执行play命令时,我的机器人会工作,但当我执行stop命令时,它会给我带来一系列错误。我正在使用FFmpeg和discord.js。我的代码是: const Discord=require('Discord.js'); const bot=new Discord.Client 常量ytdl=需要(“ytdl核心”) const-token='MY-API-token' 常量前缀='?'; 变量版本='1.2'; var服务器={}; bot.on('ready',()=>{ log('此b

当我执行
play
命令时,我的机器人会工作,但当我执行
stop
命令时,它会给我带来一系列错误。我正在使用
FFmpeg
discord.js
。我的代码是:

const Discord=require('Discord.js');
const bot=new Discord.Client
常量ytdl=需要(“ytdl核心”)
const-token='MY-API-token'
常量前缀='?';
变量版本='1.2';
var服务器={};
bot.on('ready',()=>{
log('此bot处于联机状态!'+版本);
})
bot.on('message',message=>{
设args=message.content.substring(PREFIX.length).split(“”);
开关(参数[0]){
“游戏”案例:
功能播放(连接、消息){
var server=servers[message.guild.id];
server.dispatcher=connection.play(ytdl(server.queue[0],{filter:“audioonly”}))
server.queue.shift();
server.dispatcher.on(“end”,函数(){
if(服务器队列[0]){
播放(连接、消息);
}否则{
连接断开();
}
});
}
如果(!args[1]){
message.channel.send(“您需要提供链接!”)
返回;
}
如果(!message.member.voice.channel){
message.channel.send(“您必须在语音频道才能播放机器人!”)
返回;
}
如果(!servers[message.guild.id])server[message.guild.id]={
队列:[]
}
var server=servers[message.guild.id];
server.queue.push(args[1]);
如果(!message.guild.voice)message.member.voice.channel.join()。那么(函数(连接){
播放(连接、消息);
})
打破
案例“跳过”:
var server=servers[message.guild.id]
if(servers.dispatcher)server.dispatcher.end()
message.channel.send(“跳过歌曲…”)
打破
“停止”案例:
if(message.guild.voice.connection){
对于(var i=server.queue.length-1;i>=0;i--){
server.queue.splice(i,1);
}
server.dispatcher.end();
message.channel.send(“结束离开语音频道的队列!”)
console.log('已停止队列')
}
if(message.guild.connection)message.guild.connection.voice.disconnect();
打破
}
});
bot.login(令牌);
当我玩的时候,它工作得很好。但当我停止播放音乐时,我会出现以下错误:

TypeError:无法读取未定义的属性“queue”
在客户端。(C:\Users\picar\Desktop\DiscordMusicBot\index.js:79:36)
在Client.emit(events.js:315:20)
在MessageCreateAction.handle(C:\Users\picar\Desktop\DiscordMusicBot\node\u modules\discord.js\src\client\actions\MessageCreate.js:31:14)
在Object.module.exports[作为消息\u CREATE](C:\Users\picar\Desktop\DiscordMusicBot\node\u modules\discord.js\src\client\websocket\handlers\MESSAGE\u CREATE.js:4:32)
在WebSocketManager.handlePacket(C:\Users\picar\Desktop\discordsmusicbot\node\u modules\discord.js\src\client\websocket\WebSocketManager.js:386:31)
在WebSocketShard.onPacket(C:\Users\picar\Desktop\DiscordMusicBot\node\u modules\discord.js\src\client\websocket\WebSocketShard.js:436:22)
在WebSocketShard.onMessage(C:\Users\picar\Desktop\DiscordMusicBot\node\u modules\discord.js\src\client\websocket\WebSocketShard.js:293:10)
在WebSocket.onMessage(C:\Users\picar\Desktop\DiscordMusicBot\node\u modules\ws\lib\event target.js:125:16)
在WebSocket.emit(events.js:315:20)
在Receiver.receiverOnMessage(C:\Users\picar\Desktop\DiscordMusicBot\node\u modules\ws\lib\websocket.js:800:20)
案例“停止”:
if(message.guild.voice.connection){
var server=servers[message.guild.id];//我认为这可能很有用
对于(var i=server.queue.length-1;i>=0;i--){
server.queue.splice(i,1);
}
server.dispatcher.end();
message.channel.send(“结束离开语音频道的队列!”)
console.log('已停止队列')
}
if(message.guild.connection)message.guild.connection.voice.disconnect();
打破
案例“停止”:
if(message.guild.voice.connection){
var server=servers[message.guild.id];//我认为这可能很有用
对于(var i=server.queue.length-1;i>=0;i--){
server.queue.splice(i,1);
}
server.dispatcher.end();
message.channel.send(“结束离开语音频道的队列!”)
console.log('已停止队列')
}
if(message.guild.connection)message.guild.connection.voice.disconnect();
打破

但之后我就不能玩了。它停止并在结束Dispatcher后尝试
删除服务器[message.guild.id]
,但之后我无法播放任何内容。它停止,然后在结束dispatcher后尝试
删除服务器[message.guild.id]