Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const ytdl = require('ytdl-core');
- const { MessageEmbed } = require("discord.js")
- const {
- cyan,
- gold,
- magenta
- } = require("./colors.json");
- const fs = require('fs');
- async function playMsgWithReact(message, song, queue) {
- return new Promise((resolve, reject) => {
- const winlogger = message.client.winlogger;
- if (!song ||!queue) reject("Wrong arguments")
- let embedsong = new MessageEmbed();
- embedsong.setAuthor("Now Playing", `${message.author.displayAvatarURL()}`, `${song.url}`);
- embedsong.setColor(cyan);
- embedsong.setDescription(`${song.title}`);
- if (song.thumbnail) {
- embedsong.setThumbnail(song.thumbnail.url);
- }
- embedsong.setFooter(`Added by ${message.author.username}`);
- queue.textChannel.send(embedsong)
- .then(msg => {
- msg.react("⏸️").then(() => msg.react("⏭️"));
- const filter = (reaction, user) => {
- return ['⏸️', '⏭️'].includes(reaction.emoji.name) && user.id === message.author.id;
- };
- const collector = msg.createReactionCollector(filter, {
- max: 1,
- time: 60000,
- errors: ['time']
- });
- collector.on('collect', (reaction) => {
- if (reaction.emoji.name === "⏸️") {
- queue.playing = false;
- queue.connection.dispatcher.pause(true);
- } else {
- queue.connection.dispatcher.destroy(`Skip ${1}`);
- }
- })
- }).catch(collected => {
- winlogger.log('info',collected)
- });
- resolve(embedsong)
- });
- }
- async function Player(message, queueConstruct, serverQueue,connection) {
- return async(song, file, play) => {
- return new Promise((resolve, reject) => {
- try {
- setTimeout( function() {
- if (!file) {
- const winlogger = message.client.winlogger;
- const queue = message.client.queue.get(message.guild.id);
- try {
- if (!song) {
- message.guild.voice.channel.leave();
- message.client.queue.delete(message.guild.id);
- reject("no song");
- }
- if (!connection){
- winlogger.log('info',connection)
- reject("no connection")
- }
- try {
- dispatch(connection, song, queue, play, message, queueConstruct).then(dispatcher => {
- if (dispatcher){
- dispatcher.setVolumeLogarithmic(queue.volume / 5);
- serverQueue.connection.dispatcher = dispatcher;
- resolve(dispatcher);
- }else{
- reject("no song")
- }
- })
- } catch (error) {
- winlogger.log('info',error)
- }
- } catch (error) {
- winlogger.log('info',error);
- }
- }
- },250)
- } catch (error) {
- winlogger.log('info',error);
- }
- });
- };
- }
- // ["-af", "apulsator=hz=0.128"] 8D audio
- // ["-af", "asetrate=44100*1.25"] nightcore
- const encoder = require("./struct/encoder.js")
- exports.Player = Player;
- async function dispatch(connection, song, queue, play, message, queueConstruct) {
- const winlogger = message.client.winlogger;
- if (!song) return;
- let encoded
- try{
- encoded = encoder(song.url, {
- quality: "highestaudio",
- highWaterMark: 1<<25,
- filter: "audioonly",
- opusEncoded: true,
- encoderArgs: queue.bassbost === true && ['-af', 'bass=g=10:f=110:w=0.6'] || []
- })
- }catch(err){
- winlogger.log('info',err)
- queue.songs.shift();
- play(queue.songs[0],null,play).catch(err => winlogger.log('info',err));
- if (queue.songs[0]) {
- playMsgWithReact(message, queueConstruct.songs[0], queueConstruct).catch(err => winlogger.log('info',err));
- }
- return;
- }
- try {
- return connection.play(await encoded,{highWaterMark: 1,type: 'opus'})
- .on('start', () => {
- winlogger.log('info',"Started playing song.");
- try {
- message.client.songsPlayed.findOne({where: {name: "amount"}}).then(tag =>{
- tag.increment('total')
- updateSongs(tag,winlogger);
- })
- } catch (error) {
- winlogger.log('info',error)
- }
- })
- .on('finish', reason => {
- queue.songs.shift();
- play(queue.songs[0],null,play).catch(err => winlogger.log('info',err));
- if (queue.songs[0]) {
- playMsgWithReact(message, queueConstruct.songs[0], queueConstruct).catch(err => winlogger.log('info',err));
- }
- // switch (reason.includes("Skip")) {
- // case true:
- // var fixedstr = reason.replace(/^\D+/g, '');
- // queue.songs.shift();
- // play(queue.songs[0]).catch(err => winlogger.log('info',err));
- // queue.textChannel.send(`Skipped ${fixedstr} song(s).`);
- // playMsgWithReact(message, queueConstruct.songs[0], queueConstruct).catch(err => winlogger.log('info',err));
- // break;
- // case false:
- // queue.songs.shift();
- // play(queue.songs[0]).catch(err => winlogger.log('info',err));
- // if (queue.songs[0]) {
- // playMsgWithReact(message, queueConstruct.songs[0], queueConstruct).catch(err => winlogger.log('info',err));
- // }
- // break;
- // }
- })
- .on('error', error => {
- winlogger.log('info',`song error: ${error}`)
- queue.songs.shift();
- play(queue.songs[0],null,play).catch(err => winlogger.log('info',err));
- if (queue.songs[0]) {
- playMsgWithReact(message, queueConstruct.songs[0], queueConstruct).catch(err => winlogger.log('info',err));
- }
- })
- .on('debug',info => {
- winlogger.log('info',info)
- })
- } catch (error) {
- winlogger.log('error',error)
- queue.songs.shift();
- play(queue.songs[0],null,play).catch(err => winlogger.log('info',err));
- if (queue.songs[0]) {
- playMsgWithReact(message, queueConstruct.songs[0], queueConstruct).catch(err => winlogger.log('info',err));
- }
- return;
- }
- }
- function updateSongs(tag,winlogger) {
- try {
- var stream = fs.createWriteStream("../public_html/api/songsplayed.txt");
- stream.once('open', () => {
- stream.write(`${tag.get('total') + 1}`);
- stream.end();
- });
- } catch (error) {
- winlogger.log('info',error)
- }
- }
- function SpotifyFormat (src){
- // http://open.spotify.com/track/06TYfe9lyGQA6lfqo5szIi, https://embed.spotify.com/?uri=spotify:track:78z8O6X1dESVSwUPAAPdme
- var spRegEx = /https?:\/\/(?:embed\.|open\.)(?:spotify\.com\/)(?:playlist\/|\?uri=spotify:track:)((\w|-){22})/;
- function getIDfromRegEx ( src, regExpy ){
- return (src.match(regExpy)) ? RegExp.$1 : null;
- }
- return getIDfromRegEx( src, spRegEx);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement