Я пытаюсь сделать мой код максимально чистым / читабельным, но когда я пытаюсь расположить мой код в разных файлах, это дает мне неопределенную переменную error. Я новичок в node js, поэтому любая помощь / Совет будет признателен.
Основной. js файл, в котором все должно выполняться:
client.on("message", message => {
if (!message.content.startsWith(`${clientSettings.prefix}`)) return;
var link = message.content.substring(1).split(" ");
switch (link[0]) {
case `play`:
musicBot.Main(link[1], message);
break;
case `skip`:
musicBot.Skip(message);
break;
}
})
Основной файл класса музыкального бота:
module.exports = class MusicBot {
Main(link, message) {
if (!link) return message.channel.send("Ubacite link!");
if (!message.member.voiceChannel) return message.channel.send("Morate da budete u voice!");
if (!musicQueue[message.guild.id]) musicQueue[message.guild.id] = {
queue: []
}
server = musicQueue[message.guild.id];
server.queue.push(link);
if (!message.guild.voiceConnection) message.member.voiceChannel.join().then(function (connection) {
musicPlay(connection, message, server);
})
}
Skip(message) {
musicSkip(server, message);
}
}
Воспроизведение. js команда:
const ytdl = require("ytdl-core");
module.exports = function play(connection, message, server) {
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();
}
});
}
И пропустить. js команда:
module.exports = function skip(server, message) {
if (!message.member.voiceChannel) return message.channel.send("Morate da budete u voice!");
if (server.dispatcher) server.dispatcher.end();
}
Ошибка, которую я получаю:
Ошибка типа: не удается прочитать свойство 'queue' undefined при воспроизведении (/home/ubuntu/Desktop/DiscordClean/MusicBot/commands/play.js:5:59) в StreamDispatcher. (/home/ubuntu/Desktop/DiscordClean/MusicBot/commands/play.js:11:13)
Команда Play работает до тех пор, пока я не пытаюсь пропустить песню, а затем дает мне ошибка
Я пытался передать значение от MusicMain.js
до Play.js
, но оно не работает.