Я пытаюсь сделать LoFi Radio для Discord. Всякий раз, когда бот выходит в онлайн, он присоединяется к каждому каналу с именем lofi на сервере (это очень плохо закодировано и не будет работать, если на одном известном мне сервере больше двух каналов lofi, я исправлю его позже). событие fini sh диспетчера вещания вызывается только один раз. Я хочу, чтобы он воспроизводил новую случайную песню каждый раз, когда останавливается последняя, но он воспроизводит только одну, когда она выходит в онлайн, и одну после этой песни, тогда диспетчер установлен на null
, что меня смущает.
Код:
var fs = require('fs');
var client = new Client();
var files = fs.readdirSync("./mp3/");
var broadcast;
var curSong;
var dispatcher;
client.on("ready", () => {
console.log(`------------${client.user.tag}------------\n`);
curSong = `./mp3/${files[Math.floor(Math.random() * files.length)]}`;
broadcast = client.voice.createBroadcast();
broadcast.play(curSong);
broadcast.dispatcher.on("finish", () => {
curSong = `./mp3/${files[Math.floor(Math.random() * files.length)]}`;
broadcast.play(curSong);
client.user.setPresence({ activity: { name: curSong.split("/")[2].replace(".mp3", ""), type: "STREAMING", url: "https://twitch.tv/TwitchChannel" }, status: "Online" });
});
client.user.setPresence({ activity: { name: curSong.split("/")[2].replace(".mp3", ""), type: "STREAMING", url: "https://twitch.tv/TwitchChannel" }, status: "Online" });
client.channels.cache.array().forEach((chnl) => {
if(chnl.name.toLowerCase() == "lofi") {
chnl.join().then(connection => {
connection.play(broadcast);
});
}
});
});