TypeError:无法读取未定义的属性“ play”

时间:2020-11-09 00:54:20

标签: node.js discord.js

this.dispatcher[guildID] = this.connection[guildID].play(ytdl(Queue[msg.guild.id][playing[msg.guild.id]]),{highWaterMark: 1<<25 });

当我在Discord Js上使用此代码并执行它时,它将显示此错误代码

TypeError:无法读取未定义的属性“播放”

在此之前,我使用了以下代码: if(playing[msg.guild.id] == undefined)setTimeout(function(){music.Musicplay(msg,msg.guild.id);},500);

2 个答案:

答案 0 :(得分:0)

更多信息将非常有帮助,因为很难确定一小段代码中正在发生的事情,但是似乎您正在尝试通过不和谐的语音通道播放文件。

因为我们看不到您的JavaScript太多,因此无法确定很多,但是您可能从未定义过“ play”版本吗?那就是错误的含义。

答案 1 :(得分:0)

这是我的AddMusic和PlayMusic代码

play(msg)
    {
        if (this.connection[msg.guild.id] == undefined)
        {
            this.join(msg);
        }
        //In the string, leave the URL!
        const musicURL = msg.content.replace(`${prefix}play `,'');
        if(Queue[msg.guild.id] == undefined)
            {
                Queue[msg.guild.id] = [musicURL];
            }
        else
            {
                Queue[msg.guild.id][Queue[msg.guild.id].length] = musicURL;
            }
        
            getInfo(musicURL).then(info => {
                const Embed = new Discord.MessageEmbed()
                .setTitle("Added: "+info.items[0].title)
                .setURL(musicURL)
                .setColor('#2fffff')
                msg.channel.send(Embed);
            });
        
            ytdl.getInfo(musicURL,function(err,info)
            {
                if(err)
                    {
                        const Embed = new Discord.MessageEmbed()
                        .setTitle("The song has been added, but the title information cannot be obtained!")
                        .setURL(musicURL)
                        .setColor('#FF0000')
                        msg.channel.send(Embed);
                    }
                else
                    {
                        const Embed = new Discord.MessageEmbed()
                        .setTitle("Added: "+info.videoDetails.title)
                        .setURL(musicURL)
                        .setColor('#2fffff')
                        msg.channel.send(Embed);
                    }
            })
        console.log(msg.guild.id);
        console.log(Queue[msg.guild.id]);
        
        if(playing[msg.guild.id] == 0)
            {
                if(Queue[msg.guild.id].length != 0)
                   {
                        playing[msg.guild.id] = Queue[msg.guild.id].length-1;
                   }
                setTimeout(function(){music.Musicplay(msg,msg.guild.id);},500);
            }
        if(playing[msg.guild.id] == undefined)
            setTimeout(function(){music.Musicplay(msg,msg.guild.id);},500);
    }
    
    Musicplay(msg,guildID)
    {
        if(playing[msg.guild.id] == undefined)
            {
                playing[msg.guild.id] = 0;
            }
        
        ytdl.getInfo(Queue[guildID][playing[guildID]],function(info)
        {
            msg.channel.send('Currently playing:'+ Queue[guildID][playing[guildID]]);
        });
        
        console.log(Queue[guildID][playing[guildID]]);
        this.dispatcher[guildID] = this.connection[guildID].play(ytdl(Queue[msg.guild.id][playing[msg.guild.id]]),{highWaterMark: 1<<25 });
        this.dispatcher[guildID].on('finish', () =>
        {
            if(Queue[msg.guild.id].length <= playing[msg.guild.id])
                {
                    playing[msg.guild.id] += 1;
                    this.Musicplay(msg);
                }
            else
                {
                    playing[msg.guild.id] = 0;
                }
            
        });
    }

这是错误代码

this.dispatcher[guildID] = this.connection[guildID].play(ytdl(Queue[msg.guild.id][playing[msg.guild.id]]),{highWaterMark: 1<<25 });