无法读取未定义的属性“队列”

问题描述

嘿,我正在尝试使用 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 版本。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...