如何解决无法读取未定义的属性“队列”
嘿,我正在尝试使用 node.js 和 discord.js 测试音乐机器人。我已经把它放在 2 个服务器中,在第一个它工作正常,在第二个它让我无法读取未定义的属性“队列”,我不知道为什么。
const discord = require("discord.js");
const config = require("./config.json");
const ytdl = require("ytdl-core");
const client = new discord.Client();
const prefix = "..";
var servers = {};
client.on("message",message => {
let args = message.content.substring(prefix.length).split(" ");
function isValidURL(string) {
var res = string.match(/(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g);
return (res !== null)
};
switch(args[0]){
case "play":
function play(connection,message){
var serv = servers[message.guild.id];
serv.dispatcher = connection.play(ytdl(serv.queue[0],{filter: "audioonly"}));
serv.queue.shift();
serv.dispatcher.on("end",function(){
if(serv.queue[0]){
play(connection,message);
}else{
connection.disconnect();
}
});
}
if(!args[1]){
message.channel.send(message.author.toString() + " Devi mettere un link dopo il comando.");
return;
}else if(isValidURL(args[1]) == false){
message.channel.send(message.author.toString() + " Link non valido.");
return;
}else if(!message.member.voice.channel){
message.channel.send(message.author.toString() + " Devi essere in un canale vocale.");
return;
}else if(!servers[message.guild.id]) servers[message.channel.id] = {
queue: []
}
var server = servers[message.guild.id];
server.queue.push(args[1]);
if(!message.member.voice.connection) message.member.voice.channel.join().then(function(connection){
play(connection,message);
});
break;
}
});
client.login(config.BOT_TOKEN);
可能与服务器权限有关,但它们是相同的。所以我不知道,有什么想法吗?
解决方法
discord.js 库可能会更新为机器人不兼容的新主版本。尝试使用原始源中使用的 discord.js 版本。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。