import { Command, CommandoMessage, CommandoClient } from 'discord.js-commando'; import { MessageEmbed } from 'discord.js'; //@ts-ignore import emoji from 'emoji-random'; module.exports = class ShuffleVoice extends Command { constructor(client: CommandoClient) { super(client, { name: 'shuffle', group: 'voice', memberName: 'shuffle', description: 'Shuffles the current track queue.', guildOnly: true, examples: ['uwu!shuffle'], clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], throttling: { usages: 5, duration: 30 }, }); } run(msg: CommandoMessage) { var voiceChannel = msg.member.voice.channel; if (!voiceChannel) return msg.reply('Please join channel and try again. ' + emoji.random()); //@ts-ignore if (typeof msg.guild.musicData.songDispatcher == 'undefined' || //@ts-ignore msg.guild.musicData.songDispatcher == null) { return msg.reply('There isn\'t any audio playing right now. ' + emoji.random()); } //@ts-ignore if (msg.guild.musicData.queue.length < 1) return msg.say('There aren\'t any songs in the current queue. ' + emoji.random()); //@ts-ignore shuffleQueue(msg.guild.musicData.queue); //@ts-ignore const titleArray = []; //@ts-ignore msg.guild.musicData.queue.map(obj => { titleArray.push(obj.title); }); var queueEmbed = new MessageEmbed() .setColor(0xF97DAE) .setTitle('New Music Queue ' + emoji.random()); for (let i = 0; i < titleArray.length; i++) { //@ts-ignore queueEmbed.addField(`${i + 1}:`, `${titleArray[i]}`); } return msg.say(queueEmbed); } }; function shuffleQueue(queue: any) { for (let i = queue.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [queue[i], queue[j]] = [queue[j], queue[i]]; } }