Initial commit
This commit is contained in:
		
							
								
								
									
										18
									
								
								commands/music/back.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								commands/music/back.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
module.exports = {
 | 
			
		||||
    name: 'back',
 | 
			
		||||
    aliases: ['previous'],
 | 
			
		||||
    utilisation: '{prefix}back',
 | 
			
		||||
    voiceChannel: true,
 | 
			
		||||
 | 
			
		||||
    async execute(client, message) {
 | 
			
		||||
        const queue = player.getQueue(message.guild.id);
 | 
			
		||||
 | 
			
		||||
        if (!queue || !queue.playing) return message.channel.send(`No music currently playing ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        if (!queue.previousTracks[1]) return message.channel.send(`There was no music played before ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        await queue.back();
 | 
			
		||||
 | 
			
		||||
        message.channel.send(`Playing the **previous** track ✅`);
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										18
									
								
								commands/music/clear.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								commands/music/clear.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
module.exports = {
 | 
			
		||||
    name: 'clear',
 | 
			
		||||
    aliases: ['cq'],
 | 
			
		||||
    utilisation: '{prefix}clear',
 | 
			
		||||
    voiceChannel: true,
 | 
			
		||||
 | 
			
		||||
    async execute(client, message) {
 | 
			
		||||
        const queue = player.getQueue(message.guild.id);
 | 
			
		||||
 | 
			
		||||
        if (!queue || !queue.playing) return message.channel.send(`No music currently playing ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        if (!queue.tracks[0]) return message.channel.send(`No music in the queue after the current one ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        await queue.clear();
 | 
			
		||||
 | 
			
		||||
        message.channel.send(`The queue has just been cleared 🗑️`);
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										33
									
								
								commands/music/filter.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								commands/music/filter.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
			
		||||
module.exports = {
 | 
			
		||||
    name: 'filter',
 | 
			
		||||
    aliases: [],
 | 
			
		||||
    utilisation: '{prefix}filter [filter name]',
 | 
			
		||||
    voiceChannel: true,
 | 
			
		||||
 | 
			
		||||
    async execute(client, message, args) {
 | 
			
		||||
        const queue = player.getQueue(message.guild.id);
 | 
			
		||||
 | 
			
		||||
        if (!queue || !queue.playing) return message.channel.send(`No music currently playing ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        const actualFilter = queue.getFiltersEnabled()[0];
 | 
			
		||||
 | 
			
		||||
        if (!args[0]) return message.channel.send(`Please specify a valid filter to enable or disable ${message.author}... try again ? ❌\n${actualFilter ? `Filter currently active ${actualFilter} (${client.config.app.px}filter ${actualFilter} to disable it).\n` : ''}`);
 | 
			
		||||
 | 
			
		||||
        const filters = [];
 | 
			
		||||
 | 
			
		||||
        queue.getFiltersEnabled().map(x => filters.push(x));
 | 
			
		||||
        queue.getFiltersDisabled().map(x => filters.push(x));
 | 
			
		||||
 | 
			
		||||
        const filter = filters.find((x) => x.toLowerCase() === args[0].toLowerCase());
 | 
			
		||||
 | 
			
		||||
        if (!filter) return message.channel.send(`This filter doesn't exist ${message.author}... try again ? ❌\n${actualFilter ? `Filter currently active ${actualFilter}.\n` : ''}List of available filters ${filters.map(x => `**${x}**`).join(', ')}.`);
 | 
			
		||||
 | 
			
		||||
        const filtersUpdated = {};
 | 
			
		||||
 | 
			
		||||
        filtersUpdated[filter] = queue.getFiltersEnabled().includes(filter) ? false : true;
 | 
			
		||||
 | 
			
		||||
        await queue.setFilters(filtersUpdated);
 | 
			
		||||
 | 
			
		||||
        message.channel.send(`The filter ${filter} is now **${queue.getFiltersEnabled().includes(filter) ? 'enabled' : 'disabled'}** ✅\n*Reminder the longer the music is, the longer this will take.*`);
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										28
									
								
								commands/music/loop.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								commands/music/loop.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
const { QueueRepeatMode } = require('discord-player');
 | 
			
		||||
 | 
			
		||||
module.exports = {
 | 
			
		||||
    name: 'loop',
 | 
			
		||||
    aliases: ['lp', 'repeat'],
 | 
			
		||||
    utilisation: '{prefix}loop <queue>',
 | 
			
		||||
    voiceChannel: true,
 | 
			
		||||
 | 
			
		||||
    execute(client, message, args) {
 | 
			
		||||
        const queue = player.getQueue(message.guild.id);
 | 
			
		||||
 | 
			
		||||
        if (!queue || !queue.playing) return message.channel.send(`No music currently playing ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        if (args.join('').toLowerCase() === 'queue') {
 | 
			
		||||
            if (queue.repeatMode === 1) return message.channel.send(`You must first disable the current music in the loop mode (${client.config.app.px}loop) ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
            const success = queue.setRepeatMode(queue.repeatMode === 0 ? QueueRepeatMode.QUEUE : QueueRepeatMode.OFF);
 | 
			
		||||
 | 
			
		||||
            return message.channel.send(success ? `Repeat mode **${queue.repeatMode === 0 ? 'disabled' : 'enabled'}** the whole queue will be repeated endlessly 🔁` : `Something went wrong ${message.author}... try again ? ❌`);
 | 
			
		||||
        } else {
 | 
			
		||||
            if (queue.repeatMode === 2) return message.channel.send(`You must first disable the current queue in the loop mode (${client.config.app.px}loop queue) ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
            const success = queue.setRepeatMode(queue.repeatMode === 0 ? QueueRepeatMode.TRACK : QueueRepeatMode.OFF);
 | 
			
		||||
 | 
			
		||||
            return message.channel.send(success ? `Repeat mode **${queue.repeatMode === 0 ? 'disabled' : 'enabled'}** the current music will be repeated endlessly (you can loop the queue with the <queue> option) 🔂` : `Something went wrong ${message.author}... try again ? ❌`);
 | 
			
		||||
        };
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										41
									
								
								commands/music/nowplaying.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								commands/music/nowplaying.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
			
		||||
const { MessageEmbed, MessageActionRow, MessageButton } = require('discord.js');
 | 
			
		||||
 | 
			
		||||
module.exports = {
 | 
			
		||||
    name: 'nowplaying',
 | 
			
		||||
    aliases: ['np'],
 | 
			
		||||
    utilisation: '{prefix}nowplaying',
 | 
			
		||||
    voiceChannel: true,
 | 
			
		||||
 | 
			
		||||
    execute(client, message) {
 | 
			
		||||
        const queue = player.getQueue(message.guild.id);
 | 
			
		||||
 | 
			
		||||
        if (!queue || !queue.playing) return message.channel.send(`No music currently playing ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        const track = queue.current;
 | 
			
		||||
 | 
			
		||||
        const embed = new MessageEmbed();
 | 
			
		||||
 | 
			
		||||
        embed.setColor('RED');
 | 
			
		||||
        embed.setThumbnail(track.thumbnail);
 | 
			
		||||
        embed.setAuthor(track.title, client.user.displayAvatarURL({ size: 1024, dynamic: true }));
 | 
			
		||||
 | 
			
		||||
        const methods = ['disabled', 'track', 'queue'];
 | 
			
		||||
 | 
			
		||||
        const timestamp = queue.getPlayerTimestamp();
 | 
			
		||||
        const trackDuration = timestamp.progress == 'Infinity' ? 'infinity (live)' : track.duration;
 | 
			
		||||
 | 
			
		||||
        embed.setDescription(`Volume **${queue.volume}**%\nDuration **${trackDuration}**\nLoop mode **${methods[queue.repeatMode]}**\nRequested by ${track.requestedBy}`);
 | 
			
		||||
 | 
			
		||||
        embed.setTimestamp();
 | 
			
		||||
 | 
			
		||||
        const saveButton = new MessageButton();
 | 
			
		||||
 | 
			
		||||
        saveButton.setLabel('Save this track');
 | 
			
		||||
        saveButton.setCustomId('saveTrack');
 | 
			
		||||
        saveButton.setStyle('SUCCESS');
 | 
			
		||||
 | 
			
		||||
        const row = new MessageActionRow().addComponents(saveButton);
 | 
			
		||||
 | 
			
		||||
        message.channel.send({ embeds: [embed], components: [row] });
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										16
									
								
								commands/music/pause.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								commands/music/pause.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
module.exports = {
 | 
			
		||||
    name: 'pause',
 | 
			
		||||
    aliases: [],
 | 
			
		||||
    utilisation: '{prefix}pause',
 | 
			
		||||
    voiceChannel: true,
 | 
			
		||||
 | 
			
		||||
    execute(client, message) {
 | 
			
		||||
        const queue = player.getQueue(message.guild.id);
 | 
			
		||||
 | 
			
		||||
        if (!queue) return message.channel.send(`No music currently playing ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        const success = queue.setPaused(true);
 | 
			
		||||
 | 
			
		||||
        return message.channel.send(success ? `Current music ${queue.current.title} paused ✅` : `Something went wrong ${message.author}... try again ? ❌`);
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										36
									
								
								commands/music/play.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								commands/music/play.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,36 @@
 | 
			
		||||
const { QueryType } = require('discord-player');
 | 
			
		||||
 | 
			
		||||
module.exports = {
 | 
			
		||||
    name: 'play',
 | 
			
		||||
    aliases: ['p'],
 | 
			
		||||
    utilisation: '{prefix}play [song name/URL]',
 | 
			
		||||
    voiceChannel: true,
 | 
			
		||||
 | 
			
		||||
    async execute(client, message, args) {
 | 
			
		||||
        if (!args[0]) return message.channel.send(`Please enter a valid search ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        const res = await player.search(args.join(' '), {
 | 
			
		||||
            requestedBy: message.member,
 | 
			
		||||
            searchEngine: QueryType.AUTO
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        if (!res || !res.tracks.length) return message.channel.send(`No results found ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        const queue = await player.createQueue(message.guild, {
 | 
			
		||||
            metadata: message.channel
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            if (!queue.connection) await queue.connect(message.member.voice.channel);
 | 
			
		||||
        } catch {
 | 
			
		||||
            await player.deleteQueue(message.guild.id);
 | 
			
		||||
            return message.channel.send(`I can't join the voice channel ${message.author}... try again ? ❌`);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        await message.channel.send(`Loading your ${res.playlist ? 'playlist' : 'track'}... 🎧`);
 | 
			
		||||
 | 
			
		||||
        res.playlist ? queue.addTracks(res.tracks) : queue.addTrack(res.tracks[0]);
 | 
			
		||||
 | 
			
		||||
        if (!queue.playing) await queue.play();
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										19
									
								
								commands/music/progress.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								commands/music/progress.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
module.exports = {
 | 
			
		||||
    name: 'progress',
 | 
			
		||||
    aliases: ['pbar'],
 | 
			
		||||
    utilisation: '{prefix}progress',
 | 
			
		||||
    voiceChannel: true,
 | 
			
		||||
 | 
			
		||||
    async execute(client, message) {
 | 
			
		||||
        const queue = player.getQueue(message.guild.id);
 | 
			
		||||
 | 
			
		||||
        if (!queue || !queue.playing) return message.channel.send(`No music currently playing ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        const progress = queue.createProgressBar();
 | 
			
		||||
        const timestamp = queue.getPlayerTimestamp();
 | 
			
		||||
 | 
			
		||||
        if (timestamp.progress == 'Infinity') return message.channel.send(`Playing a live, no data to display 🎧`);
 | 
			
		||||
 | 
			
		||||
        message.channel.send(`${progress} (**${timestamp.progress}**%)`);
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										20
									
								
								commands/music/purge.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								commands/music/purge.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
module.exports = {
 | 
			
		||||
    name: 'purge',
 | 
			
		||||
    aliases: ['purge'],
 | 
			
		||||
    utilisation: '{prefix}purge',
 | 
			
		||||
    voiceChannel: false,
 | 
			
		||||
 | 
			
		||||
    async execute(client, message, args) {
 | 
			
		||||
 | 
			
		||||
    if (isNaN(args[0]) || (args[0] < 1 || args[0] > 100)) return message.reply('Il faut spécifier un **nombre** entre 1 et 100 !');
 | 
			
		||||
 | 
			
		||||
    const messages = await message.channel.messages.fetch({
 | 
			
		||||
        limit: Math.min(args[0], 100),
 | 
			
		||||
        before: message.id,
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    message.delete();
 | 
			
		||||
    await message.channel.bulkDelete(messages);
 | 
			
		||||
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										35
									
								
								commands/music/queue.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								commands/music/queue.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
			
		||||
const { MessageEmbed } = require('discord.js');
 | 
			
		||||
 | 
			
		||||
module.exports = {
 | 
			
		||||
    name: 'queue',
 | 
			
		||||
    aliases: ['q'],
 | 
			
		||||
    utilisation: '{prefix}queue',
 | 
			
		||||
    voiceChannel: true,
 | 
			
		||||
 | 
			
		||||
    execute(client, message) {
 | 
			
		||||
        const queue = player.getQueue(message.guild.id);
 | 
			
		||||
 | 
			
		||||
        if (!queue) return message.channel.send(`No music currently playing ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        if (!queue.tracks[0]) return message.channel.send(`No music in the queue after the current one ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        const embed = new MessageEmbed();
 | 
			
		||||
        const methods = ['', '🔁', '🔂'];
 | 
			
		||||
 | 
			
		||||
        embed.setColor('RED');
 | 
			
		||||
        embed.setThumbnail(message.guild.iconURL({ size: 2048, dynamic: true }));
 | 
			
		||||
        embed.setAuthor(`Server queue - ${message.guild.name} ${methods[queue.repeatMode]}`, client.user.displayAvatarURL({ size: 1024, dynamic: true }));
 | 
			
		||||
 | 
			
		||||
        const tracks = queue.tracks.map((track, i) => `**${i + 1}** - ${track.title} | ${track.author} (requested by : ${track.requestedBy.username})`);
 | 
			
		||||
 | 
			
		||||
        const songs = queue.tracks.length;
 | 
			
		||||
        const nextSongs = songs > 5 ? `And **${songs - 5}** other song(s)...` : `In the playlist **${songs}** song(s)...`;
 | 
			
		||||
 | 
			
		||||
        embed.setDescription(`Current ${queue.current.title}\n\n${tracks.slice(0, 5).join('\n')}\n\n${nextSongs}`);
 | 
			
		||||
 | 
			
		||||
        embed.setTimestamp();
 | 
			
		||||
        embed.setFooter(message.author.avatarURL({ dynamic: true }));
 | 
			
		||||
 | 
			
		||||
        message.channel.send({ embeds: [embed] });
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										18
									
								
								commands/music/remove.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								commands/music/remove.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
module.exports = {
 | 
			
		||||
    name: 'remove',
 | 
			
		||||
    aliases: ['remove', 'rm'],
 | 
			
		||||
    utilisation: `{prefix}remove <id>`,
 | 
			
		||||
    voiceChannel: true,
 | 
			
		||||
 | 
			
		||||
    execute(client, message, args) {
 | 
			
		||||
      const queue = player.getQueue(message.guild.id);
 | 
			
		||||
        if (!queue || !args[1]) return;
 | 
			
		||||
        const trackIndex = args[1] - 1;
 | 
			
		||||
        if(!queue.tracks[trackIndex]) return;
 | 
			
		||||
        const trackName = queue.tracks[trackIndex].title;
 | 
			
		||||
        //const trackUrl = queue.tracks[trackIndex].url;
 | 
			
		||||
        queue.remove(trackIndex);
 | 
			
		||||
 | 
			
		||||
      message.reply(`It's good, ${trackName} removed ! :white_check_mark:`)
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										16
									
								
								commands/music/resume.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								commands/music/resume.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
module.exports = {
 | 
			
		||||
    name: 'resume',
 | 
			
		||||
    aliases: ['rs'],
 | 
			
		||||
    utilisation: '{prefix}resume',
 | 
			
		||||
    voiceChannel: true,
 | 
			
		||||
 | 
			
		||||
    execute(client, message) {
 | 
			
		||||
        const queue = player.getQueue(message.guild.id);
 | 
			
		||||
 | 
			
		||||
        if (!queue) return message.channel.send(`No music currently playing ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        const success = queue.setPaused(false);
 | 
			
		||||
 | 
			
		||||
        return message.channel.send(success ? `Current music ${queue.current.title} resumed ✅` : `Something went wrong ${message.author}... try again ? ❌`);
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										18
									
								
								commands/music/save.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								commands/music/save.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
module.exports = {
 | 
			
		||||
    name: 'save',
 | 
			
		||||
    aliases: ['sv'],
 | 
			
		||||
    utilisation: '{prefix}save',
 | 
			
		||||
    voiceChannel: true,
 | 
			
		||||
 | 
			
		||||
    async execute(client, message) {
 | 
			
		||||
        const queue = player.getQueue(message.guild.id);
 | 
			
		||||
 | 
			
		||||
        if (!queue || !queue.playing) return message.channel.send(`No music currently playing ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        message.author.send(`You saved the track ${queue.current.title} | ${queue.current.author} from the server ${message.guild.name} ✅`).then(() => {
 | 
			
		||||
            message.channel.send(`I have sent you the title of the music by private messages ✅`);
 | 
			
		||||
        }).catch(error => {
 | 
			
		||||
            message.channel.send(`Unable to send you a private message ${message.author}... try again ? ❌`);
 | 
			
		||||
        });
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										71
									
								
								commands/music/search.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								commands/music/search.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,71 @@
 | 
			
		||||
const { MessageEmbed } = require('discord.js');
 | 
			
		||||
const { QueryType } = require('discord-player');
 | 
			
		||||
 | 
			
		||||
module.exports = {
 | 
			
		||||
    name: 'search',
 | 
			
		||||
    aliases: ['sh'],
 | 
			
		||||
    utilisation: '{prefix}search [song name]',
 | 
			
		||||
    voiceChannel: true,
 | 
			
		||||
 | 
			
		||||
    async execute(client, message, args) {
 | 
			
		||||
        if (!args[0]) return message.channel.send(`Please enter a valid search ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        const res = await player.search(args.join(' '), {
 | 
			
		||||
            requestedBy: message.member,
 | 
			
		||||
            searchEngine: QueryType.AUTO
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        if (!res || !res.tracks.length) return message.channel.send(`No results found ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        const queue = await player.createQueue(message.guild, {
 | 
			
		||||
            metadata: message.channel
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        const embed = new MessageEmbed();
 | 
			
		||||
 | 
			
		||||
        embed.setColor('RED');
 | 
			
		||||
        embed.setAuthor(`Results for ${args.join(' ')}`, client.user.displayAvatarURL({ size: 1024, dynamic: true }));
 | 
			
		||||
 | 
			
		||||
        const maxTracks = res.tracks.slice(0, 10);
 | 
			
		||||
 | 
			
		||||
        embed.setDescription(`${maxTracks.map((track, i) => `**${i + 1}**. ${track.title} | ${track.author}`).join('\n')}\n\nSelect choice between **1** and **${maxTracks.length}** or **cancel** ⬇️`);
 | 
			
		||||
 | 
			
		||||
        embed.setTimestamp();
 | 
			
		||||
        embed.setFooter(message.author.avatarURL({ dynamic: true }));
 | 
			
		||||
 | 
			
		||||
        message.channel.send({ embeds: [embed] });
 | 
			
		||||
 | 
			
		||||
        const collector = message.channel.createMessageCollector({
 | 
			
		||||
            time: 15000,
 | 
			
		||||
            errors: ['time'],
 | 
			
		||||
            filter: m => m.author.id === message.author.id
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        collector.on('collect', async (query) => {
 | 
			
		||||
            if (query.content.toLowerCase() === 'cancel') return message.channel.send(`Search cancelled ✅`) && collector.stop();
 | 
			
		||||
 | 
			
		||||
            const value = parseInt(query.content);
 | 
			
		||||
 | 
			
		||||
            if (!value || value <= 0 || value > maxTracks.length) return message.channel.send(`Invalid response, try a value between **1** and **${maxTracks.length}** or **cancel**... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
            collector.stop();
 | 
			
		||||
 | 
			
		||||
            try {
 | 
			
		||||
                if (!queue.connection) await queue.connect(message.member.voice.channel);
 | 
			
		||||
            } catch {
 | 
			
		||||
                await player.deleteQueue(message.guild.id);
 | 
			
		||||
                return message.channel.send(`I can't join the voice channel ${message.author}... try again ? ❌`);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            await message.channel.send(`Loading your search... 🎧`);
 | 
			
		||||
 | 
			
		||||
            queue.addTrack(res.tracks[query.content - 1]);
 | 
			
		||||
 | 
			
		||||
            if (!queue.playing) await queue.play();
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        collector.on('end', (msg, reason) => {
 | 
			
		||||
            if (reason === 'time') return message.channel.send(`Search timed out ${message.author}... try again ? ❌`);
 | 
			
		||||
        });
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										22
									
								
								commands/music/seek.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								commands/music/seek.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
const ms = require('ms');
 | 
			
		||||
 | 
			
		||||
module.exports = {
 | 
			
		||||
    name: 'seek',
 | 
			
		||||
    aliases: [],
 | 
			
		||||
    utilisation: '{prefix}seek [time]',
 | 
			
		||||
    voiceChannel: true,
 | 
			
		||||
 | 
			
		||||
    async execute(client, message, args) {
 | 
			
		||||
        const queue = player.getQueue(message.guild.id);
 | 
			
		||||
 | 
			
		||||
        if (!queue || !queue.playing) return message.channel.send(`No music currently playing ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        const timeToMS = ms(args.join(' '));
 | 
			
		||||
 | 
			
		||||
        if (timeToMS >= queue.current.durationMS) return message.channel.send(`The indicated time is higher than the total time of the current song ${message.author}... try again ? ❌\n*Try for example a valid time like **5s, 10s, 20 seconds, 1m**...*`);
 | 
			
		||||
 | 
			
		||||
        await queue.seek(timeToMS);
 | 
			
		||||
 | 
			
		||||
        message.channel.send(`Time set on the current song **${ms(timeToMS, { long: true })}** ✅`);
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										18
									
								
								commands/music/shuffle.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								commands/music/shuffle.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
module.exports = {
 | 
			
		||||
    name: 'shuffle',
 | 
			
		||||
    aliases: ['sh'],
 | 
			
		||||
    utilisation: '{prefix}shuffle',
 | 
			
		||||
    voiceChannel: true,
 | 
			
		||||
 | 
			
		||||
    async execute(client, message) {
 | 
			
		||||
        const queue = player.getQueue(message.guild.id);
 | 
			
		||||
 | 
			
		||||
        if (!queue || !queue.playing) return message.channel.send(`No music currently playing ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        if (!queue.tracks[0]) return message.channel.send(`No music in the queue after the current one ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        await queue.shuffle();
 | 
			
		||||
 | 
			
		||||
        return message.channel.send(`Queue shuffled **${queue.tracks.length}** song(s) ! ✅`);
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										16
									
								
								commands/music/skip.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								commands/music/skip.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
module.exports = {
 | 
			
		||||
    name: 'skip',
 | 
			
		||||
    aliases: ['sk'],
 | 
			
		||||
    utilisation: '{prefix}skip',
 | 
			
		||||
    voiceChannel: true,
 | 
			
		||||
 | 
			
		||||
    execute(client, message) {
 | 
			
		||||
        const queue = player.getQueue(message.guild.id);
 | 
			
		||||
 | 
			
		||||
        if (!queue || !queue.playing) return message.channel.send(`No music currently playing ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        const success = queue.skip();
 | 
			
		||||
 | 
			
		||||
        return message.channel.send(success ? `Current music ${queue.current.title} skipped ✅` : `Something went wrong ${message.author}... try again ? ❌`);
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										16
									
								
								commands/music/stop.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								commands/music/stop.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
module.exports = {
 | 
			
		||||
    name: 'stop',
 | 
			
		||||
    aliases: ['dc'],
 | 
			
		||||
    utilisation: '{prefix}stop',
 | 
			
		||||
    voiceChannel: true,
 | 
			
		||||
 | 
			
		||||
    execute(client, message) {
 | 
			
		||||
        const queue = player.getQueue(message.guild.id);
 | 
			
		||||
 | 
			
		||||
        if (!queue || !queue.playing) return message.channel.send(`No music currently playing ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        queue.destroy();
 | 
			
		||||
 | 
			
		||||
        message.channel.send(`Music stopped into this server, see you next time ✅`);
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										28
									
								
								commands/music/volume.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								commands/music/volume.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
const maxVol = client.config.opt.maxVol;
 | 
			
		||||
 | 
			
		||||
module.exports = {
 | 
			
		||||
    name: 'volume',
 | 
			
		||||
    aliases: ['vol'],
 | 
			
		||||
    utilisation: `{prefix}volume [1-${maxVol}]`,
 | 
			
		||||
    voiceChannel: true,
 | 
			
		||||
 | 
			
		||||
    execute(client, message, args) {
 | 
			
		||||
        const queue = player.getQueue(message.guild.id);
 | 
			
		||||
 | 
			
		||||
        if (!queue || !queue.playing) return message.channel.send(`No music currently playing ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        const vol = parseInt(args[0]);
 | 
			
		||||
 | 
			
		||||
        if (!vol) return message.channel.send(`The current volume is ${queue.volume} 🔊\n*To change the volume enter a valid number between **1** and **${maxVol}**.*`);
 | 
			
		||||
 | 
			
		||||
        if (queue.volume === vol) return message.channel.send(`The volume you want to change is already the current one ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        //:if (vol < 0 || vol > maxVol) return message.channel.send(`The specified number is not valid. Enter a number between **1** and **${maxVol}** ${message.author}... try again ? ❌`);
 | 
			
		||||
 | 
			
		||||
        if (vol === "666") return message.channel.send('Welcome to the Hell ... but no ...');
 | 
			
		||||
 | 
			
		||||
        const success = queue.setVolume(vol);
 | 
			
		||||
 | 
			
		||||
        return message.channel.send(success ? `The volume has been modified to **${vol}**/**${maxVol}**% 🔊` : `Something went wrong ${message.author}... try again ? ❌`);
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
		Reference in New Issue
	
	Block a user