1
0
mirror of https://github.com/musix-org/musix-oss synced 2024-09-20 14:01:55 +00:00
musix-oss/struct/funcs/play.js

37 lines
1.6 KiB
JavaScript
Raw Normal View History

2020-02-05 20:02:53 +00:00
module.exports = async function (guild, song, client, seek, play) {
const Discord = require('discord.js');
const ytdl = require('ytdl-core');
const getThumb = require('video-thumbnail-url');
2020-03-14 16:38:02 +00:00
const queue = client.queue.get(guild.id);
2020-02-05 20:02:53 +00:00
if (!song) {
2020-03-14 16:38:02 +00:00
queue.voiceChannel.leave();
2020-02-05 20:02:53 +00:00
client.queue.delete(guild.id);
return;
}
2020-03-14 16:38:02 +00:00
const dispatcher = queue.connection
.play(await ytdl(song.url, { filter: "audio", highWaterMark: 1 << 25, volume: false, begin: seek }), { seek: 0, bitrate: 1024, passes: 10, volume: 1, bassboost: queue.bass })
2020-03-04 20:27:14 +00:00
.on("finish", () => {
2020-03-14 16:38:02 +00:00
client.dispatcher.finish(client, queue.endReason, guild);
2020-02-05 20:02:53 +00:00
});
dispatcher.on('start', () => {
dispatcher.player.streamingData.pausedTime = 0;
});
2020-02-06 20:06:40 +00:00
dispatcher.on('error', error => {
2020-03-14 16:38:02 +00:00
client.dispatcher.error(client, error, guild);
2020-02-06 20:06:40 +00:00
});
2020-03-14 16:38:02 +00:00
dispatcher.setVolume(queue.volume / 10);
2020-02-05 20:02:53 +00:00
if (client.global.db.guilds[guild.id].startPlaying || play) {
2020-03-14 16:38:02 +00:00
const data = await Promise.resolve(ytdl.getInfo(queue.songs[0].url));
2020-02-05 20:02:53 +00:00
const songtime = (data.length_seconds * 1000).toFixed(0);
2020-03-14 16:38:02 +00:00
const thumbnail = getThumb(queue.songs[0].url);
2020-02-05 20:02:53 +00:00
const embed = new Discord.MessageEmbed()
2020-03-12 11:56:31 +00:00
.setTitle(`${client.messages.startPlaying}**${song.title}**`)
2020-02-10 19:07:09 +00:00
.setDescription(`Song duration: \`${client.funcs.msToTime(songtime, "hh:mm:ss")}\``)
2020-02-05 20:02:53 +00:00
.setThumbnail(thumbnail._rejectionHandler0)
2020-02-05 20:26:18 +00:00
.setColor(client.config.embedColor)
2020-03-14 16:38:02 +00:00
queue.textChannel.send(embed);
2020-02-05 20:02:53 +00:00
}
2020-03-14 16:38:02 +00:00
queue.playing = true;
2020-02-05 20:02:53 +00:00
}