TypeError:无法读取未定义的属性“ get”,该怎么办?

时间:2020-07-26 22:11:53

标签: node.js discord.js

run: async (client, message, args) => {
    const { channel } = message.member.voice;

    const permissions = channel.permissionsFor(message.client.user);
    if (!permissions.has("CONNECT"))
        return message.reply("Je n'est pas les permissions de rejoindre votre channel.");
    if (!permissions.has("SPEAK"))
        return message.reply("Je ne peux pas parler dans ce channel vocal.");

    const search = args.join(" ");
    const videoPattern = /^(https?:\/\/)?(www\.)?(youtube\.com|youtu\.?be)\/.+$/gi;
    const playlistPattern = /^.*(list=)([^#\&\?]*).*/gi;
    const url = args[0];
    const urlValid = videoPattern.test(args[0]);

    const serverQueue = message.client.queue.get(message.guild.id);
                          ^^^^^ÊRROR HERE^^^^^^
    const queueConstruct = {
        textChannel: message.channel,
        channel,
        connection: null,
        songs: [],
        loop: false,
        volume: 50,
        playing: true
    };

    let songInfo = null;
    let song = null;

    if (urlValid) {
        try {
            songInfo = await ytdl.getInfo(url);
            song = {
                title: songInfo.title,
                url: songInfo.video_url,
                duration: songInfo.length_seconds,
            };
        } catch (error) {
            if (error.message.includes("copyright")) {
                return message
                    .reply("⛔ Cette vidéo est copyright, elle ne peut donc être jouée. ⛔")
                    .catch(console.error);
            } else {
                console.error(error);
            }
        }
    } else {
        try {
            const results = await youtube.searchVideos(search, 1);
            songInfo = await ytdl.getInfo(results[0].url);
            song = {
                title: songInfo.title,
                url: songInfo.video_url,
                duration: songInfo.length_seconds,
            };
        } catch (error) {
            console.error(error);
        }
    }

    if (serverQueue) {
        serverQueue.songs.push(song);
        return serverQueue.textChannel
            .send(`✅ **${song.title}** a été ajoutée a la queue par ${message.author}`)
            .catch(console.error);
    } else {
        queueConstruct.songs.push(song);
    }

    if (!serverQueue) message.client.queue.set(message.guild.id, queueConstruct);

当代码正常启动时,它应该播放一些音乐,但是当我运行代码时,它并没有按预期运行,它告诉我get未定义... 你能帮我吗?

我不明白为什么会那样做,所以知道它能起作用...如果您帮助我,它将非常有用! 没有全部代码,因为否则该网站将向我询问更多详细信息...

1 个答案:

答案 0 :(得分:0)

每当您要访问对象中不存在的属性时,都会出现此错误。您确定queue中存在此message.client属性吗?根据{{​​3}},在客户端对象中没有可通过消息对象访问的名为queue的属性。为了确保安全,请登录message.client来通过该对象查找可用的属性。