Ошибка при попытке закодировать музыкальный проигрыватель для бота Discord - PullRequest
0 голосов
/ 20 декабря 2018

Итак, я пытаюсь закодировать бота Discord с помощью discord.js-commando в коде Visual Studio.Я пытаюсь кодировать музыкальный проигрыватель, и я могу заставить бота присоединиться к голосовому каналу.При вводе URL, который я хочу воспроизвести, терминал выдаёт мне эту ошибку:

(node:17316) DeprecationWarning: Collection#filterArray: use 
Collection#filter instead
(node:17316) UnhandledPromiseRejectionWarning: TypeError: Cannot read 
property '524399562249601026' of undefined
at Play 
(C:\Users\Vincent\Documents\AstralBot\commands\music\join_channel.js:6:24)
at message.member.voiceChannel.join.then.connection 
(C:\Users\Vincent\Documents\AstralBot\commands\music\join_channel.js:48:25)
at process._tickCallback (internal/process/next_tick.js:68:7)
(node:17316) UnhandledPromiseRejectionWarning: Unhandled promise rejection. 
This error originated either by throwing inside of an async function without 
a catch block, or by rejecting a promise which was not handled with 
.catch(). (rejection id: 1)
(node:17316) [DEP0018] DeprecationWarning: Unhandled promise rejections are 
deprecated. In the future, promise rejections that are not handled will 
terminate the Node.js process with a non-zero exit code.

Это код:

const commando = require('discord.js-commando');
const YTDL = require('ytdl-core');

function Play(connection, message)
{
    var server = server[message.guild.id]
    server.dispatcher = connection.playStream(YTDL(server.queue[0], {filter: "audioonly"}));
    server.queue.shift();
    server.dispatcher.on("end", function(){
        if(server.queue[0])
        {
            Play(connection, message);
        }
        else
        {
            connection.disconnect();
        }
    });
}

class JoinChannelCommand extends commando.Command
{
    constructor(client)
    {
        super(client,{
            name: 'play',
            group: 'music',
            memberName: 'play',
            description: 'Plays whatever you link from YouTube.'
        });
    }

    async run(message, args)
    {
        if(message.member.voiceChannel)
        {
            if(!message.guild.voiceConnection)
            {
                if(!servers[message.guild.id])
                {
                    servers[message.guild.id] = {queue: []}
                }
                message.member.voiceChannel.join()
                    .then(connection =>{
                        var server = servers[message.guild.id];
                        message.reply("Successfully joined!")
                        server.queue.push(args);
                        Play(connection, message);
                    })
            }
            else
            {
                message.reply("You must first join a voice channel before inputting the command.")
            }
        }
    }
}

module.exports = JoinChannelCommand;

Я немного новичок в этомтак что любая помощь будет оценена, спасибо.

1 Ответ

0 голосов
/ 20 декабря 2018

Проблема возникает в var server = server[message.guild.id], говоря, что она не может прочитать свойство 524399562249601026 из undefined.Так что в этом контексте server не определено.

Глядя на другие фрагменты своего кода, я думаю, что вы сделали опечатку в том, что она должна быть servers[...] вместо server[...].

...