Bug fixes & update (v3.0.0)

This commit is contained in:
Zerio
2020-12-12 00:34:12 +01:00
parent 76ef847189
commit df45502d7b
48 changed files with 438 additions and 342 deletions

View File

@@ -1,11 +0,0 @@
exports.run = async (client, message) => {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);
client.player.clearQueue(message);
message.channel.send(`${client.emotes.success} - The queue has just been **removed** !`);
};

48
commands/core/help.js Normal file
View File

@@ -0,0 +1,48 @@
module.exports = {
name: 'help',
aliases: ['h'],
category: 'Core',
utilisation: '{prefix}help <command name>',
execute(client, message, args) {
if (!args[0]) {
const infos = message.client.commands.filter(c => c.category == 'Infos').map((c) => '`' + c.name + '`').join(', ');
const music = message.client.commands.filter(c => c.category == 'Music').map((c) => '`' + c.name + '`').join(', ');
message.channel.send({
embed: {
color: 'ORANGE',
author: { name: 'Help pannel' },
footer: { text: 'This bot uses a Github project made by Zerio (ZerioDev/Music-bot)' },
fields: [
{ name: 'Bot', value: infos },
{ name: 'Music', value: music },
{ name: 'Filters', value: '`bassboost`, `8D`, `vaporwave`, `nightcore`, `phaser`, `tremolo`, `vibrato`, `reverse`, `treble`, `normalizer`, `surrounding`, `pulsator`, `subboost`, `karaoke`, `flanger`, `gate`, `haas`, `mcompand`' },
],
timestamp: new Date(),
description: `To use filters, ${client.config.prefix}filter (the filter). Example : ${client.config.prefix}filter 8D.`,
},
});
} else {
const command = message.client.commands.get(args.join(" ").toLowerCase()) || message.client.commands.find(c => c.aliases && c.aliases.includes(args.join(" ").toLowerCase()));
if (!command) return message.channel.send(`${client.emotes.error} - I did not find this command !`);
message.channel.send({
embed: {
color: 'ORANGE',
author: { name: 'Help pannel' },
footer: { text: 'This bot uses a Github project made by Zerio (ZerioDev/Music-bot)' },
fields: [
{ name: 'Name', value: command.name, inline: true },
{ name: 'Category', value: command.category, inline: true },
{ name: 'Aliase(s)', value: command.aliases.length < 1 ? 'None' : command.aliases.join('\n'), inline: true },
{ name: 'Utilisation', value: command.utilisation.replace('{prefix}', client.config.prefix), inline: true },
],
timestamp: new Date(),
description: 'Find information on the command provided.\nMandatory arguments `[]`, optional arguments `<>`.',
}
});
};
},
};

View File

@@ -1,23 +0,0 @@
exports.run = async (client, message, args) => {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);
if (!args[0]) return message.channel.send(`${client.emotes.error} - Please specify a valid filter to enable or disable !`);
const filterToUpdate = Object.values(client.filters).find((f) => f.toLowerCase() === args[0].toLowerCase());
if (!filterToUpdate) return message.channel.send(`${client.emotes.error} - This filter doesn't exist !`);
const filterRealName = Object.keys(client.filters).find((f) => client.filters[f] === filterToUpdate);
const queueFilters = client.player.getQueue(message).filters
const filtersUpdated = {};
filtersUpdated[filterRealName] = queueFilters[filterRealName] ? false : true;
client.player.setFilters(message, filtersUpdated);
if (filtersUpdated[filterRealName]) message.channel.send(`${client.emotes.music} - I'm **adding** the filter to the music, please wait... Note : the longer the music is, the longer this will take.`);
else message.channel.send(`${client.emotes.music} - I'm **disabling** the filter on the music, please wait... Note : the longer the music is playing, the longer this will take.`);
};

View File

@@ -1,18 +0,0 @@
exports.run = async (client, message) => {
message.channel.send({
embed: {
color: 'ORANGE',
author: { name: 'Help pannel' },
footer: { text: 'This bot uses a Github project made by Zerio (ZerioDev/Music-bot)' },
fields: [
{ name: 'Bot', value: '`ping`' },
{ name: 'Music', value: '`play`, `pause`, `resume`, `queue`, `clear-queue`, `shuffle`, `np`, `loop`, `volume`, `skip`, `stop`, `filter`, `w-filters`' },
{ name: 'Filters', value: '`bassboost`, `8D`, `vaporwave`, `nightcore`, `phaser`, `tremolo`, `vibrato`, `reverse`, `treble`, `normalizer`, `surrounding`, `pulsator`, `subboost`, `karaoke`, `flanger`, `gate`, `haas`, `mcompand`' },
],
timestamp: new Date(),
description: `To use filters, ${client.config.prefix}filter (the filter). Example : ${client.config.prefix}filter 8D.`,
},
});
};

10
commands/infos/debug.js Normal file
View File

@@ -0,0 +1,10 @@
module.exports = {
name: 'debug',
aliases: [],
category: 'Infos',
utilisation: '{prefix}debug',
execute(client, message) {
message.channel.send(`${client.emotes.success} - Robot connected in **${client.voice.connections.size}** channels !`);
},
};

10
commands/infos/ping.js Normal file
View File

@@ -0,0 +1,10 @@
module.exports = {
name: 'ping',
aliases: [],
category: 'Infos',
utilisation: '{prefix}ping',
execute(client, message) {
message.channel.send(`${client.emotes.success} - Ping : **${client.ws.ping}ms** !`);
},
};

View File

@@ -1,17 +0,0 @@
exports.run = async (client, message) => {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);
const repeatMode = client.player.getQueue(message).repeatMode;
if (repeatMode) {
client.player.setRepeatMode(message, false);
return message.channel.send(`${client.emotes.success} - Repeat mode **disabled** !`);
} else {
client.player.setRepeatMode(message, true);
return message.channel.send(`${client.emotes.success} - Repeat mode **enabled** !`);
};
};

View File

@@ -0,0 +1,16 @@
module.exports = {
name: 'clear-queue',
aliases: ['cq'],
category: 'Music',
utilisation: '{prefix}clear-queue',
execute(client, message) {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);
client.player.clearQueue(message);
message.channel.send(`${client.emotes.success} - The queue has just been **removed** !`);
},
};

28
commands/music/filter.js Normal file
View File

@@ -0,0 +1,28 @@
module.exports = {
name: 'filter',
aliases: [],
category: 'Music',
utilisation: '{prefix}filter [filter name]',
execute(client, message, args) {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);
if (!args[0]) return message.channel.send(`${client.emotes.error} - Please specify a valid filter to enable or disable !`);
const filterToUpdate = Object.values(client.filters).find((f) => f.toLowerCase() === args[0].toLowerCase());
if (!filterToUpdate) return message.channel.send(`${client.emotes.error} - This filter doesn't exist !`);
const filterRealName = Object.keys(client.filters).find((f) => client.filters[f] === filterToUpdate);
const queueFilters = client.player.getQueue(message).filters;
const filtersUpdated = {};
filtersUpdated[filterRealName] = queueFilters[filterRealName] ? false : true;
client.player.setFilters(message, filtersUpdated);
if (filtersUpdated[filterRealName]) message.channel.send(`${client.emotes.music} - I'm **adding** the filter to the music, please wait... Note : the longer the music is, the longer this will take.`);
else message.channel.send(`${client.emotes.music} - I'm **disabling** the filter on the music, please wait... Note : the longer the music is playing, the longer this will take.`);
},
};

20
commands/music/loop.js Normal file
View File

@@ -0,0 +1,20 @@
module.exports = {
name: 'loop',
aliases: ['lp'],
category: 'Music',
utilisation: '{prefix}loop',
execute(client, message) {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);
if (client.player.getQueue(message).repeatMode) {
client.player.setRepeatMode(message, false);
return message.channel.send(`${client.emotes.success} - Repeat mode **disabled** !`);
} else {
client.player.setRepeatMode(message, true);
return message.channel.send(`${client.emotes.success} - Repeat mode **enabled** !`);
};
},
};

View File

@@ -0,0 +1,44 @@
module.exports = {
name: 'nowplaying',
aliases: ['np'],
category: 'Music',
utilisation: '{prefix}nowplaying',
execute(client, message) {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);
const track = client.player.nowPlaying(message);
const filters = [];
Object.keys(client.player.getQueue(message).filters).forEach((filterName) => {
if (client.player.getQueue(message).filters[filterName]) filters.push(filterName);
});
message.channel.send({
embed: {
color: 'RED',
author: { name: track.title },
footer: { text: 'This bot uses a Github project made by Zerio (ZerioDev/Music-bot)' },
fields: [
{ name: 'Channel', value: track.author, inline: true },
{ name: 'Requested by', value: track.requestedBy.username, inline: true },
{ name: 'From playlist', value: track.fromPlaylist ? 'Yes' : 'No', inline: true },
{ name: 'Views', value: track.views, inline: true },
{ name: 'Duration', value: track.duration, inline: true },
{ name: 'Filters activated', value: filters.length, inline: true },
{ name: 'Volume', value: client.player.getQueue(message).volume, inline: true },
{ name: 'Repeat mode', value: client.player.getQueue(message).repeatMode ? 'Yes' : 'No', inline: true },
{ name: 'Currently paused', value: client.player.getQueue(message).paused ? 'Yes' : 'No', inline: true },
{ name: 'Progress bar', value: client.player.createProgressBar(message, { timecodes: true }), inline: true }
],
thumbnail: { url: track.thumbnail },
timestamp: new Date(),
},
});
},
};

18
commands/music/pause.js Normal file
View File

@@ -0,0 +1,18 @@
module.exports = {
name: 'pause',
aliases: [],
category: 'Music',
utilisation: '{prefix}pause',
execute(client, message) {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);
if (client.player.getQueue(message).paused) return message.channel.send(`${client.emotes.error} - The music is already paused !`);
client.player.pause(message);
message.channel.send(`${client.emotes.success} - Song ${client.player.getQueue(message).playing.title} **paused** !`);
},
};

14
commands/music/play.js Normal file
View File

@@ -0,0 +1,14 @@
module.exports = {
name: 'play',
aliases: ['p'],
category: 'Music',
utilisation: '{prefix}play [name/URL]',
execute(client, message, args) {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!args[0]) return message.channel.send(`${client.emotes.error} - Please indicate the title of a song !`);
client.player.play(message, args.join(" "));
},
};

18
commands/music/queue.js Normal file
View File

@@ -0,0 +1,18 @@
module.exports = {
name: 'queue',
aliases: [],
category: 'Music',
utilisation: '{prefix}queue',
execute(client, message) {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
const queue = client.player.getQueue(message);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No songs currently playing !`);
message.channel.send(`**Server queue - ${message.guild.name} ${client.emotes.queue}**\nCurrent : ${queue.playing.title} | ${queue.playing.author}\n\n` + (queue.tracks.map((track, i) => {
return `**#${i + 1}** - ${track.title} | ${track.author} (requested by : ${track.requestedBy.username})`
}).slice(0, 5).join('\n') + `\n\n${queue.tracks.length > 5 ? `And **${queue.tracks.length - 5}** other songs...` : `In the playlist **${queue.tracks.length}** song(s)...`}`));
},
};

18
commands/music/resume.js Normal file
View File

@@ -0,0 +1,18 @@
module.exports = {
name: 'resume',
aliases: [],
category: 'Music',
utilisation: '{prefix}resume',
execute(client, message) {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);
if (!client.player.getQueue(message).paused) return message.channel.send(`${client.emotes.error} - The music is already playing !`);
client.player.resume(message);
message.channel.send(`${client.emotes.success} - Song ${client.player.getQueue(message).playing.title} **resumed** !`);
},
};

16
commands/music/shuffle.js Normal file
View File

@@ -0,0 +1,16 @@
module.exports = {
name: 'shuffle',
aliases: ['sh'],
category: 'Music',
utilisation: '{prefix}shuffle',
execute(client, message) {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);
client.player.shuffle(message);
return message.channel.send(`${client.emotes.success} - Queue shuffled **${client.player.getQueue(message).tracks.length}** song(s) !`);
},
};

16
commands/music/skip.js Normal file
View File

@@ -0,0 +1,16 @@
module.exports = {
name: 'skip',
aliases: ['sk'],
category: 'Music',
utilisation: '{prefix}skip',
execute(client, message) {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);
client.player.skip(message);
message.channel.send(`${client.emotes.success} - The current music has just been **skipped** !`);
},
};

17
commands/music/stop.js Normal file
View File

@@ -0,0 +1,17 @@
module.exports = {
name: 'stop',
aliases: [],
category: 'Music',
utilisation: '{prefix}stop',
execute(client, message) {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);
client.player.setRepeatMode(message, false);
client.player.stop(message);
message.channel.send(`${client.emotes.success} - Music **stopped** into this server !`);
},
};

20
commands/music/volume.js Normal file
View File

@@ -0,0 +1,20 @@
module.exports = {
name: 'volume',
aliases: [],
category: 'Music',
utilisation: '{prefix}volume [1-100]',
execute(client, message, args) {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);
if (!args[0] || isNaN(args[0])) return message.channel.send(`${client.emotes.error} - Please enter a valid number !`);
if (Math.round(parseInt(args[0])) < 1 || Math.round(parseInt(args[0])) > 100) return message.channel.send(`${client.emotes.error} - Please enter a valid number (between 1 and 100) !`);
client.player.setVolume(message, args[0]);
message.channel.send(`${client.emotes.success} - Volume set to **${parseInt(args[0])}%** !`);
},
};

View File

@@ -0,0 +1,35 @@
module.exports = {
name: 'w-filters',
aliases: ['filters'],
category: 'Music',
utilisation: '{prefix}w-filters',
execute(client, message) {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);
const disabledEmoji = client.emotes.error;
const enabledEmoji = client.emotes.success;
const filtersStatuses = [[], []];
Object.keys(client.filters).forEach((filterName) => {
const array = filtersStatuses[0].length > filtersStatuses[1].length ? filtersStatuses[1] : filtersStatuses[0];
array.push(client.filters[filterName] + " : " + (client.player.getQueue(message).filters[filterName] ? enabledEmoji : disabledEmoji));
});
message.channel.send({
embed: {
color: 'ORANGE',
footer: { text: 'This bot uses a Github project made by Zerio (ZerioDev/Music-bot)' },
fields: [
{ name: 'Filters', value: filtersStatuses[0].join('\n'), inline: true },
{ name: '** **', value: filtersStatuses[1].join('\n'), inline: true },
],
timestamp: new Date(),
description: `List of all filters enabled or disabled.\nUse \`${client.config.prefix}filter\` to add a filter to a song.`,
},
});
},
};

View File

@@ -1,35 +0,0 @@
exports.run = async (client, message) => {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);
const track = await client.player.nowPlaying(message);
const filters = [];
Object.keys(client.player.getQueue(message).filters).forEach((filterName) => {
if (client.player.getQueue(message).filters[filterName]) filters.push(filterName);
});
message.channel.send({
embed: {
color: 'RED',
author: { name: track.title },
footer: { text: 'This bot uses a Github project made by Zerio (ZerioDev/Music-bot)' },
fields: [
{ name: 'Channel', value: track.author, inline: true },
{ name: 'Requested by', value: track.requestedBy.username, inline: true },
{ name: 'From playlist', value: track.fromPlaylist ? 'Yes' : 'No', inline: true },
{ name: 'Views', value: track.views, inline: true },
{ name: 'Duration', value: track.duration, inline: true },
{ name: 'Filters activated', value: filters.length, inline: true },
{ name: 'Progress bar', value: client.player.createProgressBar(message, { timecodes: true }), inline: true }
],
thumbnail: { url: track.thumbnail },
timestamp: new Date(),
},
});
};

View File

@@ -1,11 +0,0 @@
exports.run = async (client, message) => {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);
client.player.pause(message);
message.channel.send(`${client.emotes.success} - Song ${client.player.getQueue(message).playing.title} **paused** !`);
};

View File

@@ -1,5 +0,0 @@
exports.run = async (client, message) => {
message.channel.send(`${client.emotes.success} - Ping : **${client.ws.ping}ms** !`);
};

View File

@@ -1,9 +0,0 @@
exports.run = async (client, message, args) => {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!args[0]) return message.channel.send(`${client.emotes.error} - Please indicate the title of a song !`);
client.player.play(message, args.join(" "));
};

View File

@@ -1,13 +0,0 @@
exports.run = async (client, message) => {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
const queue = client.player.getQueue(message);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No songs currently playing !`);
message.channel.send(`**Server queue - ${message.guild.name} ${client.emotes.queue}**\nCurrent : ${queue.playing.title} | ${queue.playing.author}\n\n` + (queue.tracks.map((track, i) => {
return `**#${i + 1}** - ${track.title} | ${track.author} (requested by : ${track.requestedBy.username})`
}).slice(0, 5).join('\n') + `\n\n${queue.tracks.length > 5 ? `And **${queue.tracks.length - 5}** other songs...` : `In the playlist **${queue.tracks.length}** song(s)...`}`));
};

View File

@@ -1,11 +0,0 @@
exports.run = async (client, message) => {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);
client.player.resume(message);
message.channel.send(`${client.emotes.success} - Song ${client.player.getQueue(message).playing.title} **resumed** !`);
};

View File

@@ -1,11 +0,0 @@
exports.run = async (client, message) => {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);
client.player.shuffle(message);
return message.channel.send(`${client.emotes.success} - Queue shuffled **${client.player.getQueue(message).tracks.length}** song(s) !`);
};

View File

@@ -1,11 +0,0 @@
exports.run = async (client, message) => {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);
client.player.skip(message);
message.channel.send(`${client.emotes.success} - The current music has just been **skipped** !`);
};

View File

@@ -1,12 +0,0 @@
exports.run = async (client, message) => {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);
client.player.setRepeatMode(message, false);
client.player.stop(message);
message.channel.send(`${client.emotes.success} - Music **stopped** into this server !`);
};

View File

@@ -1,17 +0,0 @@
exports.run = async (client, message, args) => {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);
if (!args[0]) return message.channel.send(`${client.emotes.error} - Please enter a number !`);
if (isNaN(args[0]) || 100 < args[0] || args[0] <= 0) return message.channel.send(`${client.emotes.error} - Please enter a valid number (between 1 and 100) !`);
if (message.content.includes('-') || message.content.includes('+') || message.content.includes(',') || message.content.includes('.')) return message.channel.send(`${client.emotes.error} - Please enter a valid number !`);
client.player.setVolume(message, parseInt(args[0]));
message.channel.send(`${client.emotes.success} - Volume set to **${args.join(" ")}%** !`);
};

View File

@@ -1,30 +0,0 @@
exports.run = async (client, message) => {
if (!message.member.voice.channel) return message.channel.send(`${client.emotes.error} - You're not in a voice channel !`);
if (!client.player.getQueue(message)) return message.channel.send(`${client.emotes.error} - No music currently playing !`);
const disabledEmoji = client.emotes.error;
const enabledEmoji = client.emotes.success;
const filtersStatuses = [[], []];
Object.keys(client.filters).forEach((filterName) => {
const array = filtersStatuses[0].length > filtersStatuses[1].length ? filtersStatuses[1] : filtersStatuses[0];
array.push(client.filters[filterName] + " : " + (client.player.getQueue(message).filters[filterName] ? enabledEmoji : disabledEmoji));
});
message.channel.send({
embed: {
color: 'ORANGE',
footer: { text: 'This bot uses a Github project made by Zerio (ZerioDev/Music-bot)' },
fields: [
{ name: 'Filters', value: filtersStatuses[0].join('\n'), inline: true },
{ name: '** **', value: filtersStatuses[1].join('\n'), inline: true },
],
timestamp: new Date(),
description: `List of all filters enabled or disabled.\nUse \`${client.config.prefix}filter\` to add a filter to a song.`,
},
});
};