1
0
mirror of https://github.com/musix-org/musix-oss synced 2024-11-10 08:10:18 +00:00
musix-oss/funcs/play.js
2019-09-15 09:18:33 +03:00

29 lines
1.4 KiB
JavaScript

module.exports = async function (guild, song, client) {
const Discord = require('discord.js');
const ytdl = require('ytdl-core');
const serverQueue = client.queue.get(guild.id);
if (!song) {
serverQueue.textChannel.send(':stop_button: Music ended!');
serverQueue.voiceChannel.leave();
client.queue.delete(guild.id);
return;
}
const dispatcher = serverQueue.connection
.playStream(ytdl(song.url, { quality: `highestaudio`, filter: "audioonly" }), { seek: 0 })
.on("end", reason => {
if (reason === "Stream is not generating quickly enough.")
console.log("Song ended");
else console.log(reason);
serverQueue.songs.shift();
client.funcs.play(guild, serverQueue.songs[0], client);
});
dispatcher.setVolumeLogarithmic(serverQueue.volume / 5);
dispatcher.on("error", error => console.error(error));
const data = await Promise.resolve(ytdl.getInfo(serverQueue.songs[0].url));
const totallength = Math.floor(data.length_seconds / 60) + ':' + (data.length_seconds - (Math.floor(data.length_seconds / 60) * 60))
const embed = new Discord.RichEmbed()
.setTitle(`:musical_note: Start playing: **${song.title}**`)
.setDescription(`Song duration: \`${totallength}\``)
.setColor("#b50002")
serverQueue.textChannel.send(embed);
}