const { Command } = require('discord.js-commando'); const { MessageEmbed } = require('discord.js'); const emoji = require('emoji-random'); module.exports = class ShuffleVoice extends Command { constructor(client) { super(client, { name: 'shuffle', group: 'voice', memberName: 'shuffle', description: 'Shuffles the soundtrack queue.', guildOnly: true, examples: ['msb!shuffle'] }); } run(msg) { var voiceChannel = msg.member.voice.channel; if (!voiceChannel) return msg.reply('Join a channel and try again. ' + emoji.random()); if ( typeof msg.guild.musicData.songDispatcher == 'undefined' || msg.guild.musicData.songDispatcher == null ) { return msg.reply('The soundtrack isn\'t playing right now. ' + emoji.random()); } if (msg.guild.musicData.queue.length < 1) return msg.say('This is the only song in the soundtrack queue. ' + emoji.random()); shuffleQueue(msg.guild.musicData.queue); const titleArray = []; msg.guild.musicData.queue.map(obj => { titleArray.push(obj.title); }); var queueEmbed = new MessageEmbed() .setColor(0xF97DAE) .setTitle('New Soundtrack Queue ' + emoji.random()) .setFooter(`Bot developed and administrated by sin#1337.`, this.client.users.cache.get('217348698294714370').avatarURL()); for (let i = 0; i < titleArray.length; i++) { queueEmbed.addField(`${i + 1}:`, `${titleArray[i]}`); } return msg.say(queueEmbed); } }; function shuffleQueue(queue) { 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]]; } }