"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const ytdl_core_1 = __importDefault(require("ytdl-core")); const discord_js_commando_1 = require("discord.js-commando"); const discord_js_1 = require("discord.js"); const simple_youtube_api_1 = __importDefault(require("simple-youtube-api")); const config_json_1 = __importDefault(require("../../config.json")); const youtube = new simple_youtube_api_1.default(config_json_1.default['yt-api-key']); const emoji_random_1 = __importDefault(require("emoji-random")); module.exports = class PsychoVoice extends discord_js_commando_1.Command { constructor(client) { super(client, { name: 'psycho', group: 'voice', memberName: 'psycho', description: 'Plays Psycho by Mase.', guildOnly: true, clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], examples: ['uwu!psycho'] }); } run(msg, { query }) { return __awaiter(this, void 0, void 0, function* () { const voiceChannel = msg.member.voice.channel; if (!voiceChannel) return msg.say('Please join a channel and try again. ' + emoji_random_1.default.random()); const id = 'fnd_HSmAODs'; const video = yield youtube.getVideoByID(id).catch(function () { return msg.say('There was a problem getting the video you provided. ' + emoji_random_1.default.random()); }); msg.guild.musicData.queue.push(this.constructSongObj(video, voiceChannel)); if (msg.guild.musicData.isPlaying == false || typeof msg.guild.musicData.isPlaying == 'undefined') { msg.guild.musicData.isPlaying = true; return this.playSong(msg.guild.musicData.queue, msg); } else if (msg.guild.musicData.isPlaying == true) { return msg.say(`${video.title} added to queue. ` + emoji_random_1.default.random()); } var that = this; msg.channel .awaitMessages(function (msg) { return (msg.content > 0 && msg.content < 6) || msg.content === 'exit'; }, { max: 1, time: 60000, errors: ['time'] }) .then(function (response) { const videoIndex = parseInt(response.first().content); if (response.first().content === 'exit') return songEmbed.delete(); youtube .getVideoByID(videos[videoIndex - 1].id) .then(function (video) { msg.guild.musicData.queue.push(that.constructSongObj(video, voiceChannel)); if (msg.guild.musicData.isPlaying == false) { msg.guild.musicData.isPlaying = true; if (songEmbed) { songEmbed.delete(); } that.playSong(msg.guild.musicData.queue, msg); } else if (msg.guild.musicData.isPlaying == true) { if (songEmbed) { songEmbed.delete(); } return msg.say(`${video.title} added to queue. ` + emoji_random_1.default.random()); } }) .catch(function () { if (songEmbed) { songEmbed.delete(); } return msg.say('An error has occured when trying to get the video ID from YouTube. ' + emoji_random_1.default.random()); }); }); }); } playSong(queue, msg) { const classThis = this; queue[0].voiceChannel .join() .then(function (connection) { const dispatcher = connection .play(ytdl_core_1.default(queue[0].url, { quality: 'highestaudio', highWaterMark: 1024 * 1024 * 10 })) .on('start', function () { msg.guild.musicData.songDispatcher = dispatcher; const volume = 100 / 100; msg.guild.musicData.volume = volume; dispatcher.setVolume(msg.guild.musicData.volume); const videoEmbed = new discord_js_1.MessageEmbed() .setThumbnail(queue[0].thumbnail) .setColor(0xFFCC4D) .addField('Now playing:', queue[0].title) .addField('Duration:', queue[0].duration); if (queue[1]) videoEmbed.addField('Next song:', queue[1].title); msg.say(videoEmbed); msg.guild.musicData.nowPlaying = queue[0]; return queue.shift(); }) .on('finish', function () { if (queue.length >= 1) { return classThis.playSong(queue, msg); } else { msg.guild.musicData.isPlaying = false; msg.guild.musicData.nowPlaying = null; msg.guild.musicData.songDispatcher = null; return msg.guild.me.voice.channel.leave(); } }) .on('error', function (e) { msg.say('Can\'t play song ' + emoji_random_1.default.random()); console.error(e); msg.guild.musicData.queue.length = 0; msg.guild.musicData.isPlaying = false; msg.guild.musicData.nowPlaying = null; msg.guild.musicData.songDispatcher = null; return msg.guild.me.voice.channel.leave(); }); }) .catch(function (e) { console.error(e); return msg.guild.me.voice.channel.leave(); }); } constructSongObj(video, voiceChannel) { let duration = this.formatDuration(video.duration); if (duration == '00:00') duration = 'Live Stream'; return { url: `https://www.youtube.com/watch?v=${video.raw.id}`, title: video.title, duration, thumbnail: video.thumbnails.high.url, voiceChannel }; } formatDuration(durationObj) { const duration = `${durationObj.hours ? (durationObj.hours + ':') : ''}${durationObj.minutes ? durationObj.minutes : '00'}:${(durationObj.seconds < 10) ? ('0' + durationObj.seconds) : (durationObj.seconds ? durationObj.seconds : '00')}`; return duration; } }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHN5Y2hvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3ZvaWNlL3BzeWNoby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLDBEQUE2QjtBQUM3Qiw2REFBOEM7QUFDOUMsMkNBQW1EO0FBQ25ELDRFQUF5QztBQUV6QyxvRUFBdUM7QUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSw0QkFBTyxDQUFDLHFCQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNsRCxnRUFBaUM7QUFFakMsTUFBTSxDQUFDLE9BQU8sR0FBRyxNQUFNLFdBQVksU0FBUSw2QkFBTztJQUM5QyxZQUFZLE1BQU07UUFDZCxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ1YsSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsT0FBTztZQUNkLFVBQVUsRUFBRSxRQUFRO1lBQ3BCLFdBQVcsRUFBRSx1QkFBdUI7WUFDcEMsU0FBUyxFQUFFLElBQUk7WUFDZixpQkFBaUIsRUFBRSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1lBQ2hGLGVBQWUsRUFBRSxDQUFDLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQztZQUMxRCxRQUFRLEVBQUUsQ0FBQyxZQUFZLENBQUM7U0FDM0IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNLLEdBQUcsQ0FBQyxHQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUU7O1lBQzdCLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUM5QyxJQUFJLENBQUMsWUFBWTtnQkFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsdUNBQXVDLEdBQUcsc0JBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBRTVGLE1BQU0sRUFBRSxHQUFHLGFBQWEsQ0FBQztZQUN6QixNQUFNLEtBQUssR0FBRyxNQUFNLE9BQU8sQ0FB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