From bc2a92d56370462bcba29ed026f7996cbb0ed646 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 12 Jul 2020 17:40:06 -0300 Subject: [PATCH 001/164] Starting Aruna 4.3 development --- .Configs/mongoose.js | 1 + src/Events/guildCreate.js | 8 +++++++- src/Events/message.js | 9 ++++++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.Configs/mongoose.js b/.Configs/mongoose.js index be22a63..b5bd7a0 100644 --- a/.Configs/mongoose.js +++ b/.Configs/mongoose.js @@ -44,6 +44,7 @@ var Guild = new Schema({ ticketEnable: { type: Boolean, default: false }, autoRole: { type: Boolean, default: false }, autoRoleRole: { type: String, default: null }, + language: { type: String, default: 'PT-BR' }, isPremium: { type: Boolean, default: false }, isPartner: { type: Boolean, default: false } }); diff --git a/src/Events/guildCreate.js b/src/Events/guildCreate.js index d5a04f1..499cd17 100644 --- a/src/Events/guildCreate.js +++ b/src/Events/guildCreate.js @@ -19,7 +19,13 @@ var { database } = require('../../Configs'); exports.run = async (aruna, guild) => { - var saveG = await new database.Guilds({ _id: guild.id }); + var language = ''; + if(guild.region == 'brazil') { + language = 'PT-BR'; + } else { + language = 'EN_US'; + } + var saveG = await new database.Guilds({ _id: guild.id, language: language }); await saveG.save(); console.log('New Server Entry! :)'); }; diff --git a/src/Events/message.js b/src/Events/message.js index f0f95be..bcc4b2f 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -41,9 +41,16 @@ exports.run = async (aruna, message) => { usuario ) { if (!servidor) { + var language = ''; + if(message.guild.region == 'brazil') { + language = 'PT-BR'; + } else { + language = 'EN_US'; + } console.log('No Server!'); var saveG = await new database.Guilds({ - _id: message.guild.id + _id: message.guild.id, + language: language }); await saveG.save(); servidor = await database.Guilds.findOne({ _id: message.guild.id }); From 7d856f61fb911e93875a70a3b477853f8378bb7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 13 Jul 2020 00:30:25 -0300 Subject: [PATCH 002/164] Formatting --- .Configs/apiKeys.js | 5 +++-- .Configs/links.js | 12 ++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/.Configs/apiKeys.js b/.Configs/apiKeys.js index 3feb89b..8765214 100644 --- a/.Configs/apiKeys.js +++ b/.Configs/apiKeys.js @@ -18,6 +18,7 @@ */ -//Dbots API Keys +// Dbots API Keys module.exports = { -} \ No newline at end of file + +}; \ No newline at end of file diff --git a/.Configs/links.js b/.Configs/links.js index 727d64c..48d4c95 100644 --- a/.Configs/links.js +++ b/.Configs/links.js @@ -18,9 +18,9 @@ */ module.exports = { - supportServers: [''], - invites: [''], - donate: [''], - website: '', - trelloBoard: '' - }; \ No newline at end of file + supportServers: [''], + invites: [''], + donate: [''], + website: '', + trelloBoard: '' +}; \ No newline at end of file From 99fcea09a7352d1f48314f0cc26f303f8b5f767b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 13 Jul 2020 00:31:07 -0300 Subject: [PATCH 003/164] idk what to put here --- src/Commands/badges.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Commands/badges.js b/src/Commands/badges.js index 2e5a965..d8974fc 100644 --- a/src/Commands/badges.js +++ b/src/Commands/badges.js @@ -156,6 +156,6 @@ exports.run = async (aruna, message, args) => { exports.config = { name: 'badge', - aliases: [], + aliases: ['badges'], category: '🧰 Administração' }; \ No newline at end of file From 05f5219941aff5ba7cda011f211e4001fd55a641 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 13 Jul 2020 01:04:08 -0300 Subject: [PATCH 004/164] Shard Info --- src/Commands/bot.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Commands/bot.js b/src/Commands/bot.js index 15866f1..95a1d41 100644 --- a/src/Commands/bot.js +++ b/src/Commands/bot.js @@ -54,6 +54,9 @@ exports.run = (aruna, message) => { .addField('(📃) Canais', `${aruna.channels.size}`, true) .addField('(🖥️) Servidores', `${aruna.guilds.size}`, true) .addField('(🕹️) Usuários', `${aruna.users.size}`, true) + .addField('(💻) Seu Shard', `${aruna.shard.id}`, true) + .addField('(💠) Status do Shard', 'ONLINE', true) /** @todo status verdadeiro e-e */ + .addField('(🏓) Ping do Shard', `${aruna.ping}ms`, true) /** @todo ping do shard, não do bot */ .addField( 'Convite', `${links.invites[0] ? `[Link](${links.invites[0]})` : 'INDISPONÍVEL'}`, @@ -65,13 +68,15 @@ exports.run = (aruna, message) => { `${links.supportServers[0] ? `[Link](${links.supportServers[0]})` : 'INDISPONÍVEL'}`, true ) - .setThumbnail(`${aruna.user.displayAvatarURL}`); + .setThumbnail(`${aruna.user.displayAvatarURL}`) + .setFooter(`Informações Solicitadas por ${message.author.tag}`, message.author.avatarURL) + .setTimestamp(); message.channel.send(embed); }; exports.config = { - name: 'bot', - aliases: ['botinfo'], + name: 'botinfo', + aliases: ['bot', 'uptime'], description: 'Lista as Principais informações do bot', category: `${emojis.robot} Utilidades` }; From 8369635156fdd90111b006167c71ea4da8629257 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 13 Jul 2020 01:06:43 -0300 Subject: [PATCH 005/164] Old Bug Fixed --- .Configs/general.js | 1 + src/Events/message.js | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.Configs/general.js b/.Configs/general.js index cc4963b..40cecbc 100644 --- a/.Configs/general.js +++ b/.Configs/general.js @@ -20,6 +20,7 @@ module.exports = { prefix: '-', token: '', mongoose: '', + superUsersId: ['281515925960654848'], // Your User ID Comes Here! sharding: { totalShards: 'auto', delay: 7500 diff --git a/src/Events/message.js b/src/Events/message.js index bcc4b2f..eff5dd9 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -42,7 +42,7 @@ exports.run = async (aruna, message) => { ) { if (!servidor) { var language = ''; - if(message.guild.region == 'brazil') { + if (message.guild.region == 'brazil') { language = 'PT-BR'; } else { language = 'EN_US'; @@ -58,7 +58,11 @@ exports.run = async (aruna, message) => { if (!usuario) { console.log('No User!'); - var saveU = await new database.Users({ _id: message.author.id }); + var isSuper = false; + if (config.superUsersId.includes(message.author.id)) { + isSuper = true; + } + var saveU = await new database.Users({ _id: message.author.id, SUPER: isSuper }); await saveU.save(); usuario = await database.Users.findOne({ _id: message.author.id }); } From 1b7f6885d2b0414d25b6a98dd7a1aa48df1ddeef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 13 Jul 2020 01:07:12 -0300 Subject: [PATCH 006/164] New Prefix Change Sytem (Step 1) --- src/Commands/config.js | 12 ++++++------ src/Commands/prefix.js | 43 +++++++++++++++++++++++++----------------- 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/src/Commands/config.js b/src/Commands/config.js index 2f9cd45..06799bb 100644 --- a/src/Commands/config.js +++ b/src/Commands/config.js @@ -22,7 +22,7 @@ const { database } = require('../../Configs'); const Discord = require('discord.js'); exports.run = async (aruna, message, args) => { - var validOptions = ['rank', 'ticket', 'autorole']; + var validOptions = ['rank', 'ticket', 'autorole', 'prefix', 'prefixo']; const guild = await database.Guilds.findOne({ _id: message.guild.id }); @@ -88,9 +88,9 @@ exports.run = async (aruna, message, args) => { ) .setTimestamp(); - const dbcommand = await database.Comandos.findOne({ name: `${command}` }); + const dbCommand = await database.Comandos.findOne({ name: `${command}` }); - if (!dbcommand || dbcommand.public !== true && user.SUPER !== true) + if (!dbCommand || dbCommand.public !== true && user.SUPER !== true) return message.channel.send(error2); @@ -103,7 +103,7 @@ exports.run = async (aruna, message, args) => { } } - const todo = args[1].toLowerCase(); + const toDo = args[1].toLowerCase(); const ativo = new Discord.RichEmbed() .setColor([0, 255, 0]) @@ -119,7 +119,7 @@ exports.run = async (aruna, message, args) => { .setDescription(`O comando \`${command}\` foi desativado com sucesso!`) .setTimestamp(); - if (todo == 'ativar' && guild.verify === false || todo == 'enable' && guild.verify === true) { + if (toDo == 'ativar' && guild.verify === false || toDo == 'enable' && guild.verify === true) { if (command === 'rank') { guild.rankEnable = true; guild.save(); @@ -135,7 +135,7 @@ exports.run = async (aruna, message, args) => { return message.channel.send(ativo); } else if (guild.verify === false) return message.channel.send(yes); - if (todo == 'desativar' && guild.verify === true || todo == 'disable' && guild.verify === true) { + if (toDo == 'desativar' && guild.verify === true || toDo == 'disable' && guild.verify === true) { if (command === 'rank') { guild.rankEnable = false; guild.save(); diff --git a/src/Commands/prefix.js b/src/Commands/prefix.js index 7900699..e699f00 100644 --- a/src/Commands/prefix.js +++ b/src/Commands/prefix.js @@ -19,31 +19,32 @@ const Discord = require('discord.js'); const { database, config } = require('../../Configs'); +/** @deprecated This Will Be Removed In A future Version */ exports.run = async (aruna, message, args) => { - const server = await database.Guilds.findOne({ _id: message.guild.id }); + const guild = await database.Guilds.findOne({ _id: message.guild.id }); const nopermission = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) .setFooter(`Algo deu errado, ${message.author.username}`) .setDescription('Você não possui a permissão de `Gerenciar Servidor`') .setTimestamp(); - const error = new Discord.RichEmbed() + const prefixError = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) .setDescription( 'Insira se você deseja definir um prefixo (set) ou se deseja voltar ao padrão (remove).' ) .setTimestamp(); - const error2 = new Discord.RichEmbed() + const prefixError2 = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) .setFooter(`Algo deu errado, ${message.author.username}`) .setDescription('Você deve inserir o prefixo desejado!') .setTimestamp(); - const error3 = new Discord.RichEmbed() + const prefixError3 = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) .setFooter(`Algo deu errado, ${message.author.username}`) .setDescription('O prefixo atual já é o prefixo padrão!') .setTimestamp(); - const remove = new Discord.RichEmbed() + const prefixRemove = new Discord.RichEmbed() .setColor([0, 255, 0]) .setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL) .setFooter('Sucesso!') @@ -51,36 +52,44 @@ exports.run = async (aruna, message, args) => { `Prefixo redefinido para \`${config.prefix}\` com sucesso!` ) .setTimestamp(); - const definido = new Discord.RichEmbed() + const prefixDefinido = new Discord.RichEmbed() .setColor([0, 255, 0]) .setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL) .setFooter('Sucesso!') .setDescription(`Prefixo definido para \`${args[1]}\` com sucesso!`) .setTimestamp(); + const deprecatedWarn = new Discord.RichEmbed() + .setTitle('🚫FUNÇÃO OBSOLETA🚫') + .setDescription(`**AVISO: ESSA É UMA FUNÇÃO ANTIGA E SERÁ REMOVIDA EM BREVE.**\n + Para evitar transtornos, é recomendado usar \`${guild.prefix}config prefix \`.`) + .setColor('#fcec03') + .setFooter('Deprecated Command Warn') + .setTimestamp(); + message.channel.send(deprecatedWarn).then(msg => msg.delete(60000)); if (!message.member.hasPermission('MANAGE_GUILD')) return message.channel.send(nopermission); - if (!args[0]) return message.channel.send(error); + if (!args[0]) return message.channel.send(prefixError); if (args[0] !== 'set' && args[0] !== 'remove') - return message.channel.send(error); + return message.channel.send(prefixError); if (args[0] === 'remove') { - if (server.prefix === config.prefix) - return message.channel.send(error3); + if (guild.prefix === config.prefix) + return message.channel.send(prefixError3); - server.prefix = config.prefix; - server.save(); - message.channel.send(remove); + guild.prefix = config.prefix; + guild.save(); + message.channel.send(prefixRemove); } if (args[0] === 'set') { - if (!args[1]) return message.channel.send(error2); + if (!args[1]) return message.channel.send(prefixError2); - server.prefix = args[1]; - server.save(); - message.channel.send(definido); + guild.prefix = args[1]; + guild.save(); + message.channel.send(prefixDefinido); } }; From 97cbf7b65f19c27f481bcb926ee99516797bd9f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 13 Jul 2020 01:07:24 -0300 Subject: [PATCH 007/164] Formatting --- src/Events/guildCreate.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Events/guildCreate.js b/src/Events/guildCreate.js index 499cd17..a904977 100644 --- a/src/Events/guildCreate.js +++ b/src/Events/guildCreate.js @@ -20,7 +20,7 @@ var { database } = require('../../Configs'); exports.run = async (aruna, guild) => { var language = ''; - if(guild.region == 'brazil') { + if (guild.region == 'brazil') { language = 'PT-BR'; } else { language = 'EN_US'; From de3f1954b000f21c1867630c3c47a29ddcc1add5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 13 Jul 2020 01:07:39 -0300 Subject: [PATCH 008/164] Aruna 4.3 package --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cd2c574..0548bb4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "arunabot", - "version": "4.2.0", + "version": "4.3.0", "description": "A nova e melhorada aruna!", "main": "src/main.js", "scripts": { From f49bb2f991f9abeba6822c41dfc1d4fae7d5a44c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 13 Jul 2020 01:07:59 -0300 Subject: [PATCH 009/164] Auto Role (Step 0.5) --- src/Events/guildMemberAdd.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Events/guildMemberAdd.js b/src/Events/guildMemberAdd.js index 9cd587a..5024fed 100644 --- a/src/Events/guildMemberAdd.js +++ b/src/Events/guildMemberAdd.js @@ -25,13 +25,17 @@ const serverStatsPrincipal = { }; exports.run = async (aruna, member) => { - const user = database.Users.findOne(member.user.id); + const user = database.Users.findOne({ _id: member.user.id }); + // eslint-disable-next-line no-unused-vars + const guild = database.Guilds.findOne({ _id: member.guild.id }); if (!user) { var saveU = await new database.Users({ _id: member.user.id }); await saveU.save(); - console.log("New Member on database :)") + console.log('New Member on database :)'); } + + /* AUTOROLE MAIN GUILD*/ if (member.guild.id == serverStatsPrincipal.guildID) { member.addRole('660612149009448988', 'AutoRole'); @@ -51,4 +55,8 @@ exports.run = async (aruna, member) => { .setTimestamp(); member.send(changingMessage); } + + /* AUTOROLE FOR USERS */ + + }; From 94c5989698f60007ecb729edef4d385ff343fc80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 13 Jul 2020 16:07:24 -0300 Subject: [PATCH 010/164] Prefix in Config Command (Part 2) --- src/Commands/config.js | 45 +++++++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/src/Commands/config.js b/src/Commands/config.js index 06799bb..636beb4 100644 --- a/src/Commands/config.js +++ b/src/Commands/config.js @@ -18,21 +18,16 @@ along with this program. If not, see . */ -const { database } = require('../../Configs'); +const { config, database } = require('../../Configs'); const Discord = require('discord.js'); exports.run = async (aruna, message, args) => { - var validOptions = ['rank', 'ticket', 'autorole', 'prefix', 'prefixo']; + var validOptions = ['rank', 'ticket', 'autorole', 'autocargo', 'prefix', 'prefixo']; const guild = await database.Guilds.findOne({ _id: message.guild.id }); const user = await database.Users.findOne({ _id: message.author.id }); - const commandOff = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Este comando não está disponível no momento!') - .setTimestamp(); const nopermission = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) .setFooter(`Algo deu errado, ${message.author.username}`) @@ -55,6 +50,36 @@ exports.run = async (aruna, message, args) => { 'Este comando ainda não pode ser ativado. Desculpe pelo incoveniente.' ) .setTimestamp(); + const prefixError = new Discord.RichEmbed() + .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) + .setDescription( + 'Insira se você deseja definir um prefixo (set) ou se deseja voltar ao padrão (remove).' + ) + .setTimestamp(); + const prefixError2 = new Discord.RichEmbed() + .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) + .setFooter(`Algo deu errado, ${message.author.username}`) + .setDescription('Você deve inserir o prefixo desejado!') + .setTimestamp(); + const prefixError3 = new Discord.RichEmbed() + .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) + .setFooter(`Algo deu errado, ${message.author.username}`) + .setDescription('O prefixo atual já é o prefixo padrão!') + .setTimestamp(); + const prefixRemove = new Discord.RichEmbed() + .setColor([0, 255, 0]) + .setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL) + .setFooter('Sucesso!') + .setDescription( + `Prefixo redefinido para \`${config.prefix}\` com sucesso!` + ) + .setTimestamp(); + const prefixDefinido = new Discord.RichEmbed() + .setColor([0, 255, 0]) + .setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL) + .setFooter('Sucesso!') + .setDescription(`Prefixo definido para \`${args[1]}\` com sucesso!`) + .setTimestamp(); if (!message.member.hasPermission('MANAGE_GUILD')) return message.channel.send(nopermission); @@ -69,15 +94,17 @@ exports.run = async (aruna, message, args) => { guild.verify = guild.rankEnable; } else if (command === 'ticket') { guild.verify = guild.ticketEnable; - } else if (command === 'autoRole' || command === 'autorole') { + } else if (command === 'autocargo' || command === 'autorole') { guild.verify = guild.autoRole; + } else if (command === 'prefix' || command === 'prefixo') { + guild.verify = true; } const no = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) .setFooter(`Algo deu errado, ${message.author.username}`) .setDescription( - `Neste momento, o comando ${command} não está ativado. Para ativar, use \`\`${guild.prefix}config ${command} ativar\`\`.` + `Neste momento, o comando ${command} está desativado. Para ativar, use \`\`${guild.prefix}config ${command} ativar\`\`.` ) .setTimestamp(); const yes = new Discord.RichEmbed() From 3cbdae7d01c2fe1923935aa55a8b841a79b31595 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 13 Jul 2020 16:10:25 -0300 Subject: [PATCH 011/164] Minor Bugs Fixed --- src/Commands/config.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Commands/config.js b/src/Commands/config.js index 636beb4..32e3750 100644 --- a/src/Commands/config.js +++ b/src/Commands/config.js @@ -28,7 +28,7 @@ exports.run = async (aruna, message, args) => { const user = await database.Users.findOne({ _id: message.author.id }); - const nopermission = new Discord.RichEmbed() + const noPermission = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) .setFooter(`Algo deu errado, ${message.author.username}`) .setDescription('Você não possui a permissão de `Gerenciar Servidor`') @@ -78,11 +78,11 @@ exports.run = async (aruna, message, args) => { .setColor([0, 255, 0]) .setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL) .setFooter('Sucesso!') - .setDescription(`Prefixo definido para \`${args[1]}\` com sucesso!`) + .setDescription(`Prefixo definido para \`${args[2]}\` com sucesso!`) .setTimestamp(); if (!message.member.hasPermission('MANAGE_GUILD')) - return message.channel.send(nopermission); + return message.channel.send(noPermission); if (!args || !args[0]) return message.channel.send(error1); @@ -155,7 +155,7 @@ exports.run = async (aruna, message, args) => { activeticket.run(aruna, message); guild.ticketEnable = true; guild.save(); - } else if (command === 'autoRole' || command === 'autorole') { + } else if (command === 'autocargo' || command === 'autorole') { guild.autoRole = true; guild.save(); } @@ -169,7 +169,7 @@ exports.run = async (aruna, message, args) => { } else if (command === 'ticket') { guild.ticketEnable = false; guild.save(); - } else if (command === 'autoRole' || command === 'autorole') { + } else if (command === 'autocargo' || command === 'autorole') { guild.autoRole = false; guild.save(); } From 5ed66fb2cfb13729e5f6a36d3b25fb73b3abbd02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 13 Jul 2020 17:41:28 -0300 Subject: [PATCH 012/164] Mass Role and Mass Remove Role --- src/Commands/massremove.js | 127 +++++++++++++++++++++++++++++++++++++ src/Commands/massrole.js | 126 ++++++++++++++++++++++++++++++++++++ src/Utils/emojis.js | 3 +- 3 files changed, 255 insertions(+), 1 deletion(-) create mode 100644 src/Commands/massremove.js create mode 100644 src/Commands/massrole.js diff --git a/src/Commands/massremove.js b/src/Commands/massremove.js new file mode 100644 index 0000000..a5da8fd --- /dev/null +++ b/src/Commands/massremove.js @@ -0,0 +1,127 @@ +/* + This File is part of ArunaBot + Copyright (C) LoboMetalurgico (and contributors) 2019-2020 + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +const Discord = require('discord.js'); +const { emoji } = require('../Utils'); + +exports.run = (aruna, message, args) => { + var role = ''; + if (!args[0]) { + role = undefined; + } else { + role = + message.mentions.roles.first() || + message.guild.roles.get(args[0]) || + message.guild.roles.find(r => + r.name.toLowerCase().includes(args[0].toLowerCase()) + ) || + undefined; + } + + + const error1 = new Discord.RichEmbed() + .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) + .setFooter(`Algo deu errado, ${message.author.username}`) + .setDescription('Você não possui a permissão de `Gerenciar Cargos`!') + .setTimestamp(); + + const error2 = new Discord.RichEmbed() + .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) + .setFooter(`Algo deu errado, ${message.author.username}`) + .setDescription('Eu não possuo a permissão de `Gerenciar Cargos`!') + .setTimestamp(); + + if (!message.member.hasPermission('MANAGE_ROLES')) + return message.channel.send(error1); + if (!message.guild.members.get(aruna.user.id).hasPermission('MANAGE_ROLES')) + return message.channel.send(error2); + + const error4 = new Discord.RichEmbed() + .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) + .setFooter(`Algo deu errado, ${message.author.username}`) + .setDescription('Você deve inserir um rank para remover dos membros!') + .setTimestamp(); + + if (!role || role === undefined) return message.channel.send(error4); + + const error5 = new Discord.RichEmbed() + .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) + .setFooter(`Algo deu errado, ${message.author.username}`) + .setDescription( + `Você não pode remover o cargo \`${role.name}\` pois meu cargo é esse ou inferior a ele.` + ) + .setTimestamp(); + + const error6 = new Discord.RichEmbed() + .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) + .setFooter(`Algo deu errado, ${message.author.username}`) + .setDescription( + `Você não pode remover o cargo \`${role.name}\` pois seu cargo é esse ou inferior a ele.` + ) + .setTimestamp(); + + if ( + role.position >= + message.guild.members.get(aruna.user.id).highestRole.position + ) + return message.channel.send(error5); + + if ( + role.position >= + message.guild.members.get(message.author.id).highestRole.position && + message.guild.owner.id !== message.author.id + ) + return message.channel.send(error6); + + const executando = new Discord.RichEmbed() + .setTitle(`${emoji.loading} Aguarde, ${message.author.username}`, message.author.avatarURL) + .setColor('#f2ff00') + .setFooter(`Operação em Execução, ${message.author.username}`) + .setDescription( + `O cargo \`${role.name}\` está sendo removido de todos os usuários do servidor. Por favor, aguarde um momento.` + ) + .setTimestamp(); + + const sucess = new Discord.RichEmbed() + .setAuthor(`YAY, ${message.author.username}`, message.author.avatarURL) + .setColor([0, 255, 0]) + .setFooter(`Operação efetuada com sucesso, ${message.author.username}`) + .setDescription( + `O cargo \`${role.name}\` foi removido de todos os usuários com sucesso!` + ) + .setTimestamp(); + + message.channel.send(executando).then(msg => { + const roleGuild = message.guild; + const memberArray = roleGuild.members.array(); + const memberCount = memberArray.length; + for (var i = 0; i < memberCount; i++) { + const member = memberArray[i]; + member.removeRole(role); + if (memberCount - i <= 1){ + msg.edit(sucess); + } + } + }); +}; + +exports.config = { + name: 'massremove', + aliases: ['masscargoremove'], + category: '👮‍♂️ Moderação' +}; \ No newline at end of file diff --git a/src/Commands/massrole.js b/src/Commands/massrole.js new file mode 100644 index 0000000..c3d2d0b --- /dev/null +++ b/src/Commands/massrole.js @@ -0,0 +1,126 @@ +/* + This File is part of ArunaBot + Copyright (C) LoboMetalurgico (and contributors) 2019-2020 + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +const Discord = require('discord.js'); +const { emoji } = require('../Utils'); + +exports.run = (aruna, message, args) => { + var role = ''; + if (!args[0]) { + role = undefined; + } else { + role = + message.mentions.roles.first() || + message.guild.roles.get(args[0]) || + message.guild.roles.find(r => + r.name.toLowerCase().includes(args[0].toLowerCase()) + ) || + undefined; + } + + const error1 = new Discord.RichEmbed() + .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) + .setFooter(`Algo deu errado, ${message.author.username}`) + .setDescription('Você não possui a permissão de `Gerenciar Cargos`!') + .setTimestamp(); + + const error2 = new Discord.RichEmbed() + .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) + .setFooter(`Algo deu errado, ${message.author.username}`) + .setDescription('Eu não possuo a permissão de `Gerenciar Cargos`!') + .setTimestamp(); + + if (!message.member.hasPermission('MANAGE_ROLES')) + return message.channel.send(error1); + if (!message.guild.members.get(aruna.user.id).hasPermission('MANAGE_ROLES')) + return message.channel.send(error2); + + const error4 = new Discord.RichEmbed() + .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) + .setFooter(`Algo deu errado, ${message.author.username}`) + .setDescription('Você deve inserir um rank para aplicar aos membros!') + .setTimestamp(); + + if (!role || role === undefined) return message.channel.send(error4); + + const error5 = new Discord.RichEmbed() + .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) + .setFooter(`Algo deu errado, ${message.author.username}`) + .setDescription( + `Você não pode aplicar o cargo \`${role.name}\` pois meu cargo é esse ou inferior a ele.` + ) + .setTimestamp(); + + const error6 = new Discord.RichEmbed() + .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) + .setFooter(`Algo deu errado, ${message.author.username}`) + .setDescription( + `Você não pode aplicar o cargo \`${role.name}\` pois seu cargo é esse ou inferior a ele.` + ) + .setTimestamp(); + + if ( + role.position >= + message.guild.members.get(aruna.user.id).highestRole.position + ) + return message.channel.send(error5); + + if ( + role.position >= + message.guild.members.get(message.author.id).highestRole.position && + message.guild.owner.id !== message.author.id + ) + return message.channel.send(error6); + + const executando = new Discord.RichEmbed() + .setTitle(`${emoji.loading} Aguarde, ${message.author.username}`, message.author.avatarURL) + .setColor('#f2ff00') + .setFooter(`Operação em Execução, ${message.author.username}`) + .setDescription( + `O cargo \`${role.name}\` está sendo aplicado para todos os usuários do servidor. Por favor, aguarde um momento.` + ) + .setTimestamp(); + + const sucess = new Discord.RichEmbed() + .setAuthor(`YAY, ${message.author.username}`, message.author.avatarURL) + .setColor([0, 255, 0]) + .setFooter(`Operação efetuada com sucesso, ${message.author.username}`) + .setDescription( + `O cargo \`${role.name}\` foi aplicado para todos os usuários com sucesso!` + ) + .setTimestamp(); + + message.channel.send(executando).then(msg => { + const roleGuild = message.guild; + const memberArray = roleGuild.members.array(); + const memberCount = memberArray.length; + for (var i = 0; i < memberCount; i++) { + const member = memberArray[i]; + member.addRole(role); + if (memberCount - i <= 1){ + msg.edit(sucess); + } + } + }); +}; + +exports.config = { + name: 'massrole', + aliases: ['masscargo', 'cargomassivo'], + category: '👮‍♂️ Moderação' +}; \ No newline at end of file diff --git a/src/Utils/emojis.js b/src/Utils/emojis.js index 4ddc5ee..572bb48 100644 --- a/src/Utils/emojis.js +++ b/src/Utils/emojis.js @@ -38,5 +38,6 @@ module.exports = { nitro: '<:nitro:728819044211359746>', partner: '<:partner:728849144734810163>', partnerPlus: '<:partnerPlus:728845414274564146>', - premium: '<:vip:728816348892889118>' + premium: '<:vip:728816348892889118>', + loading: '' }; From 96df3128c5a7ec3c9c1acd1180fab2ee61ce42b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sat, 18 Jul 2020 14:26:38 -0300 Subject: [PATCH 013/164] Fix --- src/Commands/avatar.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Commands/avatar.js b/src/Commands/avatar.js index 38ca2ea..daf69d6 100644 --- a/src/Commands/avatar.js +++ b/src/Commands/avatar.js @@ -17,6 +17,7 @@ */ const Discord = require('discord.js'); +const { emoji } = require('../Utils'); exports.run = (aruna, message, args) => { const user1 = message.guild.member( @@ -26,7 +27,7 @@ exports.run = (aruna, message, args) => { const user = user1.user; const embed = new Discord.RichEmbed() - .setAuthor(`Avatar de ${user.username}`) + .setTitle(`${emoji.picture}Avatar de ${user.username}`) .setDescription(`**Clique [aqui](${user.avatarURL}) para baixar a foto.**`) .setImage(user.avatarURL) .setTimestamp(); From f87d43c40a573f9580dd38c1803f3c6c23e8731b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 20 Jul 2020 14:14:11 -0300 Subject: [PATCH 014/164] Update Dependencies --- package-lock.json | 203 +++++++++++++++++++++------------------------- package.json | 6 +- 2 files changed, 97 insertions(+), 112 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9d9301a..84246b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "arunabot", - "version": "4.2.0", + "version": "4.3.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -83,9 +83,9 @@ } }, "@babel/runtime": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", - "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.4.tgz", + "integrity": "sha512-UpTN5yUJr9b4EX2CnGNWIvER7Ab83ibv0pcvvHc4UOdrBI5jb8bj+32cCwPX6xu0mt2daFNjYhoi+X7beH0RSw==", "requires": { "regenerator-runtime": "^0.13.4" } @@ -469,9 +469,9 @@ "dev": true }, "ajv": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -772,10 +772,15 @@ "which": "^2.0.1" } }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" + }, "dbots": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/dbots/-/dbots-4.0.0.tgz", - "integrity": "sha512-G2KuFaymsDSeOMijNyEWJzAMuImMkn1MF2Tqh6d6f+FhZTDR+EUrKYLtgwYsEKc6h0a1iq+M6KTtQt41BKVEkQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/dbots/-/dbots-4.1.0.tgz", + "integrity": "sha512-GIRpPP0wOZF0hpClDnjSAqdLVo/g2aiKlG5YjMFqIwWSfLAzXG0aIxV7gtIh/kXbgnKuD0eBi6XNETG7IFKePg==", "requires": { "axios": "^0.19.0", "promise.allsettled": "^1.0.2" @@ -895,21 +900,21 @@ } }, "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", "object-inspect": "^1.7.0", "object-keys": "^1.1.1", "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" } }, "es-array-method-boxes-properly": { @@ -965,9 +970,9 @@ "dev": true }, "eslint": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.4.0.tgz", - "integrity": "sha512-gU+lxhlPHu45H3JkEGgYhWhkR9wLHHEXC9FbWFnTlEkbKyZKWgWRLgf61E8zWmBuI6g5xKBph9ltg3NtZMVF8g==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.5.0.tgz", + "integrity": "sha512-vlUP10xse9sWt9SGRtcr1LAC67BENcQMFeV+w5EvLEoFe3xJ8cF1Skd0msziRx/VMC+72B4DxreCE+OR12OA6Q==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -978,9 +983,9 @@ "doctrine": "^3.0.0", "enquirer": "^2.3.5", "eslint-scope": "^5.1.0", - "eslint-utils": "^2.0.0", - "eslint-visitor-keys": "^1.2.0", - "espree": "^7.1.0", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^1.3.0", + "espree": "^7.2.0", "esquery": "^1.2.0", "esutils": "^2.0.2", "file-entry-cache": "^5.0.1", @@ -994,7 +999,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.14", + "lodash": "^4.17.19", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -1033,9 +1038,9 @@ } }, "strip-json-comments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", - "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true } } @@ -1066,14 +1071,14 @@ "dev": true }, "espree": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.1.0.tgz", - "integrity": "sha512-dcorZSyfmm4WTuTnE5Y7MEN1DyoPYy1ZR783QW1FJoenn7RailyWFsq/UL6ZAAA7uXurN9FIpYyUs3OfiIW+Qw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.2.0.tgz", + "integrity": "sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g==", "dev": true, "requires": { - "acorn": "^7.2.0", + "acorn": "^7.3.1", "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.2.0" + "eslint-visitor-keys": "^1.3.0" } }, "esprima": { @@ -1544,14 +1549,6 @@ "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - } } }, "imurmurhash": { @@ -1701,9 +1698,9 @@ } }, "jpeg-js": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.0.tgz", - "integrity": "sha512-960VHmtN1vTpasX/1LupLohdP5odwAT7oK/VSm6mW0M58LbrBnowLAPWAZhWGhDAGjzbMnPXZxzB/QYgBwkN0w==" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.1.tgz", + "integrity": "sha512-jA55yJiB5tCXEddos8JBbvW+IMrqY0y1tjjx9KNVtA+QPmu7ND5j0zkKopClpUTsaETL135uOM2XfcYG4XRjmw==" }, "js-tokens": { "version": "4.0.0", @@ -1749,9 +1746,9 @@ } }, "load-bmfont": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.0.tgz", - "integrity": "sha512-kT63aTAlNhZARowaNYcY29Fn/QYkc52M3l6V1ifRcPewg2lvUZDAj7R6dXjOL9D0sict76op3T5+odumDSF81g==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", + "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", "requires": { "buffer-equal": "0.0.1", "mime": "^1.3.4", @@ -1764,9 +1761,9 @@ } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", "dev": true }, "long": { @@ -1784,9 +1781,9 @@ } }, "mathjs": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-7.0.1.tgz", - "integrity": "sha512-ikFnvtvui8EA1KC+RsF7Sse34WA7EGsKnwwv7/lTRx04t25JtWpVWrs0ZcNKxygZVrOIpU9MRgbvXEFYFV3pOQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-7.1.0.tgz", + "integrity": "sha512-Km6PO2UR+COs5mru5auKQKi84GKBryuL5JDdKeAxAi0QV8mH/qwpZKLnzrycxBacQ/X/4Z4Kn+gtYc5gEeWsDQ==", "requires": { "complex.js": "^2.0.11", "decimal.js": "^10.2.0", @@ -1795,7 +1792,7 @@ "javascript-natural-sort": "^0.7.1", "seed-random": "^2.2.0", "tiny-emitter": "^2.1.0", - "typed-function": "^1.1.1" + "typed-function": "^2.0.0" } }, "media-typer": { @@ -1889,9 +1886,9 @@ } }, "moment": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.26.0.tgz", - "integrity": "sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw==" + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", + "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==" }, "moment-duration-format": { "version": "2.3.2", @@ -1899,9 +1896,9 @@ "integrity": "sha512-cBMXjSW+fjOb4tyaVHuaVE/A5TqkukDWiOfxxAjY+PEqmmBQlLwn+8OzwPiG3brouXKY5Un4pBjAeB6UToXHaQ==" }, "mongodb": { - "version": "3.5.8", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.5.8.tgz", - "integrity": "sha512-jz7mR58z66JKL8Px4ZY+FXbgB7d0a0hEGCT7kw8iye46/gsqPrOEpZOswwJ2BQlfzsrCLKdsF9UcaUfGVN2HrQ==", + "version": "3.5.9", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.5.9.tgz", + "integrity": "sha512-vXHBY1CsGYcEPoVWhwgxIBeWqP3dSu9RuRDsoLRPTITrcrgm1f0Ubu1xqF9ozMwv53agmEiZm0YGo+7WL3Nbug==", "requires": { "bl": "^2.2.0", "bson": "^1.1.4", @@ -1912,21 +1909,28 @@ } }, "mongoose": { - "version": "5.9.18", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.9.18.tgz", - "integrity": "sha512-agZbIuQcN1gZ12BJn6KesA+bgsvoLVjCwhfPw88hggxX8O24SWK4EJwN35GEZKDej9AHUZKNAPgmdeXCVQxviA==", + "version": "5.9.25", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.9.25.tgz", + "integrity": "sha512-vz/DqJ3mrHqEIlfRbKmDZ9TzQ1a0hCtSQpjHScIxr4rEtLs0tjsXDeEWcJ/vEEc3oLfP6vRx9V+uYSprXDUvFQ==", "requires": { "bson": "^1.1.4", "kareem": "2.3.1", - "mongodb": "3.5.8", + "mongodb": "3.5.9", "mongoose-legacy-pluralize": "1.0.2", "mpath": "0.7.0", "mquery": "3.2.2", "ms": "2.1.2", "regexp-clone": "1.0.0", - "safe-buffer": "5.1.2", + "safe-buffer": "5.2.1", "sift": "7.0.1", "sliced": "1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } } }, "mongoose-legacy-pluralize": { @@ -1993,9 +1997,9 @@ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, "node-addon-api": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.1.tgz", - "integrity": "sha512-2WVfwRfIr1AVn3dRq4yRc2Hn35ND+mPJH6inC6bjpYCZVrpXPB4j3T6i//OGVfqVsR1t/X/axRulDsheq4F0LQ==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" }, "nopt": { "version": "4.0.3", @@ -2051,9 +2055,9 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==" }, "object-keys": { "version": "1.1.1", @@ -2337,6 +2341,11 @@ "semver": "^5.1.0" }, "dependencies": { + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -2345,9 +2354,10 @@ } }, "resolve-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true }, "rimraf": { "version": "3.0.2", @@ -2571,26 +2581,6 @@ "es-abstract": "^1.17.5" } }, - "string.prototype.trimleft": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", - "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimstart": "^1.0.0" - } - }, - "string.prototype.trimright": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", - "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimend": "^1.0.0" - } - }, "string.prototype.trimstart": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", @@ -2622,21 +2612,21 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "superagent": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-5.2.2.tgz", - "integrity": "sha512-pMWBUnIllK4ZTw7p/UaobiQPwAO5w/1NRRTDpV0FTVNmECztsxKspj3ZWEordVEaqpZtmOQJJna4yTLyC/q7PQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-5.3.1.tgz", + "integrity": "sha512-wjJ/MoTid2/RuGCOFtlacyGNxN9QLMgcpYLDQlWFIhhdJ93kNscFonGvrpAHSCVjRVj++DGCglocF7Aej1KHvQ==", "requires": { "component-emitter": "^1.3.0", "cookiejar": "^2.1.2", "debug": "^4.1.1", "fast-safe-stringify": "^2.0.7", "form-data": "^3.0.0", - "formidable": "^1.2.1", + "formidable": "^1.2.2", "methods": "^1.1.2", - "mime": "^2.4.4", - "qs": "^6.9.1", - "readable-stream": "^3.4.0", - "semver": "^6.3.0" + "mime": "^2.4.6", + "qs": "^6.9.4", + "readable-stream": "^3.6.0", + "semver": "^7.3.2" }, "dependencies": { "debug": { @@ -2666,11 +2656,6 @@ "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" } } }, @@ -2804,9 +2789,9 @@ } }, "typed-function": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-1.1.1.tgz", - "integrity": "sha512-RbN7MaTQBZLJYzDENHPA0nUmWT0Ex80KHItprrgbTPufYhIlTePvCXZxyQK7wgn19FW5bnuaBIKcBb5mRWjB1Q==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-2.0.0.tgz", + "integrity": "sha512-Hhy1Iwo/e4AtLZNK10ewVVcP2UEs408DS35ubP825w/YgSBK1KVLwALvvIG4yX75QJrxjCpcWkzkVRB0BwwYlA==" }, "uid-safe": { "version": "2.1.5", diff --git a/package.json b/package.json index 0548bb4..7c95435 100644 --- a/package.json +++ b/package.json @@ -23,14 +23,14 @@ "express": "^4.17.1", "express-session": "^1.17.1", "jimp": "^0.13.0", - "mathjs": "^7.0.1", + "mathjs": "^7.1.0", "moment": "^2.26.0", "moment-duration-format": "^2.3.2", - "mongoose": "^5.9.18", + "mongoose": "^5.9.25", "superagent": "^5.2.2", "ytdl-core": "^2.1.7" }, "devDependencies": { - "eslint": "^7.3.1" + "eslint": "^7.5.0" } } From 1f2990d838bbc2bb0ee5846eed5ece53ffe9903a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 9 Aug 2020 19:33:23 -0300 Subject: [PATCH 015/164] Starting Multilanguage System --- .Configs/mongoose.js | 3 ++- .gitmodules | 3 +++ src/Events/message.js | 27 ++++++++++++++------------- 3 files changed, 19 insertions(+), 14 deletions(-) create mode 100644 .gitmodules diff --git a/.Configs/mongoose.js b/.Configs/mongoose.js index b5bd7a0..21463bb 100644 --- a/.Configs/mongoose.js +++ b/.Configs/mongoose.js @@ -32,6 +32,7 @@ mongoose.connect( var User = new Schema({ _id: { type: String }, + language: { type: String, default: null }, SUPER: { type: Boolean, default: false } }); @@ -44,7 +45,7 @@ var Guild = new Schema({ ticketEnable: { type: Boolean, default: false }, autoRole: { type: Boolean, default: false }, autoRoleRole: { type: String, default: null }, - language: { type: String, default: 'PT-BR' }, + language: { type: String, default: 'BR' }, isPremium: { type: Boolean, default: false }, isPartner: { type: Boolean, default: false } }); diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..7aa0b99 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "locale"] + path = language + url = https://github.com/ArunaBot/ArunaLanguages \ No newline at end of file diff --git a/src/Events/message.js b/src/Events/message.js index eff5dd9..23b36df 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -43,9 +43,9 @@ exports.run = async (aruna, message) => { if (!servidor) { var language = ''; if (message.guild.region == 'brazil') { - language = 'PT-BR'; + language = 'BR'; } else { - language = 'EN_US'; + language = 'EN'; } console.log('No Server!'); var saveG = await new database.Guilds({ @@ -69,6 +69,15 @@ exports.run = async (aruna, message) => { var prefix = servidor.prefix || config.prefix; + if (usuario.language !== servidor.language && usuario.language !== null) { + language = usuario.language; + } else { + language = language || servidor.language; + } + + + const lang = require(`../../language/${language}/events.json`); + const mention = [`<@${aruna.user.id}>`, `<@!${aruna.user.id}>`]; mention.find(mention => { @@ -122,7 +131,7 @@ exports.run = async (aruna, message) => { .slice(prefix.length) .trim() .split(/ +/g); - const comando = args.shift().toLowerCase(); + const command = args.shift().toLowerCase(); const ma = message.content.split(' '); const cmd = ma[0]; const commandFile = @@ -135,7 +144,7 @@ exports.run = async (aruna, message) => { } else if (!message.guild.members.get(aruna.user.id).hasPermission('EMBED_LINKS')) { return message.reply(linkError); } - commandFile.run(aruna, message, args, prefix, comando); + commandFile.run(aruna, message, args, prefix, command, language); } else if (!commandFile) { const alts = aruna.commands @@ -146,15 +155,7 @@ exports.run = async (aruna, message) => { .join(', ') || undefined; if (alts !== undefined) { - message.reply( - 'Oops, não encontrei o comando ' + - '`' + - comando + - '`' + - '. Você quis dizer algo como ' + - alts + - '?' - ); + message.reply(lang.message.commandNotFound.replace('[command]' | '[alt]', command | alts)); } } } From 8377b052fca486afbc1541e8838d035de9f1354d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 9 Aug 2020 19:40:40 -0300 Subject: [PATCH 016/164] .gitmodules fix --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 7aa0b99..9274337 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ -[submodule "locale"] +[submodule "language"] path = language url = https://github.com/ArunaBot/ArunaLanguages \ No newline at end of file From f3f86af6cbf13905fae113ac8afb8f178883ab8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 9 Aug 2020 19:45:07 -0300 Subject: [PATCH 017/164] Removing .gitmodules --- .gitmodules | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 .gitmodules diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 9274337..0000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "language"] - path = language - url = https://github.com/ArunaBot/ArunaLanguages \ No newline at end of file From c3177d9bd56524572af014afb63414a7f29a4a56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 9 Aug 2020 19:48:07 -0300 Subject: [PATCH 018/164] Updating the README --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 219b651..ae860fb 100644 --- a/README.md +++ b/README.md @@ -63,8 +63,8 @@ Nós [recomendamos utilizar a versão pública da Aruna](https://discordapp.com/ 6. Agora, usando o processador de comandos do seu sistema operacional (CMD, POWERSHELL, Terminal, etc), entre na pasta criada e utilize `npm install`. 8. Ao terminar de fazer o download de tudo, verifique se foi criado a pasta `node modules`. 9. Caso essa pasta exista e tenha sido criado o arquivo `package-lock.json` significa que tudo deu certo! -10. Agora, retire o `_` da pasta `_configs` e do aquivo `_.env`. -11. Depois, abra o arquivo .env e preencha o `TOKEN_ARUNA` com o token do seu bot, e o `MONGOOSE` com seu diretório do moongose criado no mongodb.com. (Caso tenha hospedado o mongo em sua máquina, altere o arquivo presente na configs/mongoose.js com as configurações adequadas no campo de url e login (verifique a documentação do mongoose para isso)). +10. Agora, retire o `.` da pasta `.Configs`. +11. Depois, abra o arquivo `general` e preencha o campo `token` com o token do seu bot, o campo `mongoose` com o link de acesso ao mongoose e por fim, altere o campo `superUsersId` para o id do seu usuário. 11. Com tudo pronto, podemos iniciá-la abrindo um terminal e digitando `npm start`. 12. Caso tenha dado tudo certo, a sua versão selfhosted irá iniciar e você poderá utilizar os comandos dela! 🎉 @@ -93,7 +93,6 @@ A Aruna utiliza várias [dependências no código-fonte dela](https://github.com | [Mongoose](http://mongoosejs.com/) | vkarpov15, aheckmann, rauchg, etc | | [Moment](http://momentjs.com) | ichernev, timrwood, icambron, etc | | [Moment Duration Format](https://github.com/jsmreese/moment-duration-format) | jsmreese | -| [Dotenv](https://github.com/motdotla/dotenv) | motdotla, maxbeatty, etc | | [Ytdl Core](https://github.com/fent/node-ytdl-core) | fent, #3TimeForANinja, etc | | [Node Opus](github.com/Rantanen/node-opus) | Rantanen, thijstriemstra, nfriedly, etc | | [Jimp](github.com/oliver-moran/jimp) | hipstersmoothie, oliver-moran, strandedcity, etc | From e0075a31adbe2acd6499b7b9f4dce9a76553f7e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 9 Aug 2020 20:01:47 -0300 Subject: [PATCH 019/164] Adding languages as submodule --- .gitmodules | 3 +++ languages | 1 + src/Events/message.js | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 .gitmodules create mode 160000 languages diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..1dfa37a --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "languages"] + path = languages + url = https://github.com/ArunaBot/ArunaLanguages.git diff --git a/languages b/languages new file mode 160000 index 0000000..f2ebf68 --- /dev/null +++ b/languages @@ -0,0 +1 @@ +Subproject commit f2ebf68807fcb384ef260223dad144e5dd8b3ed8 diff --git a/src/Events/message.js b/src/Events/message.js index 23b36df..27cc62a 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -76,7 +76,7 @@ exports.run = async (aruna, message) => { } - const lang = require(`../../language/${language}/events.json`); + const lang = require(`../../languages/bot/${language}/events.json`); const mention = [`<@${aruna.user.id}>`, `<@!${aruna.user.id}>`]; From 339592a59d4cb1d262534c70d581bdb80dd4c5b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 9 Aug 2020 21:14:19 -0300 Subject: [PATCH 020/164] Implementing Internal Language Uses --- .Configs/mongoose.js | 2 +- languages | 2 +- src/Events/message.js | 29 +++++++++++++++++++++-------- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/.Configs/mongoose.js b/.Configs/mongoose.js index 21463bb..fe9d424 100644 --- a/.Configs/mongoose.js +++ b/.Configs/mongoose.js @@ -45,7 +45,7 @@ var Guild = new Schema({ ticketEnable: { type: Boolean, default: false }, autoRole: { type: Boolean, default: false }, autoRoleRole: { type: String, default: null }, - language: { type: String, default: 'BR' }, + language: { type: String, default: 'br' }, isPremium: { type: Boolean, default: false }, isPartner: { type: Boolean, default: false } }); diff --git a/languages b/languages index f2ebf68..ee35ad4 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit f2ebf68807fcb384ef260223dad144e5dd8b3ed8 +Subproject commit ee35ad4454d780f4f9ad62027db0cb044bf7adfc diff --git a/src/Events/message.js b/src/Events/message.js index 27cc62a..3a3c485 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -24,12 +24,20 @@ const { utils, cooldown } = require('../Utils'); exports.run = async (aruna, message) => { if (message.author.bot) return; - const emojiError = 'Para meu funcionamento, preciso da permissão de `Usar Emojis Externos`. Por favor, solicite para algum administrador que ative isso para que eu possa funcionar :)'; - const linkError = 'Para meu funcionamento, preciso da permissão de `Enviar Links`. Por favor, solicite para algum administrador que ative isso para que eu possa funcionar :)'; - const dmError = 'Desculpe, mas ainda não funciono em mensagens diretas :('; - if (message.channel.type == 'dm') { - return message.reply(dmError); + const dmUser = await database.Users.findOne({ _id: message.author.id }); + const defaultDmIntL = require('../../languages/bot/br/internal.json'); + if (!dmUser) { + return message.reply(defaultDmIntL.dmError); + } else { + var dmIntL = ''; + if (dmUser.language == null) { + dmIntL = defaultDmIntL; + } else { + dmIntL = require(`../../languages/bot/${dmUser.language}/internal.json`); + } + return message.reply(dmIntL.dmError); + } } database.Guilds.findOne({ _id: message.guild.id }, function( @@ -43,9 +51,9 @@ exports.run = async (aruna, message) => { if (!servidor) { var language = ''; if (message.guild.region == 'brazil') { - language = 'BR'; + language = 'br'; } else { - language = 'EN'; + language = 'en'; } console.log('No Server!'); var saveG = await new database.Guilds({ @@ -77,6 +85,11 @@ exports.run = async (aruna, message) => { const lang = require(`../../languages/bot/${language}/events.json`); + const langc = require(`../../languages/bot/${language}/commands.json`); + const intL = require(`../../languages/bot/${language}/internal.json`); + + const emojiError = intL.emojiError; + const linkError = intL.linkError; const mention = [`<@${aruna.user.id}>`, `<@!${aruna.user.id}>`]; @@ -144,7 +157,7 @@ exports.run = async (aruna, message) => { } else if (!message.guild.members.get(aruna.user.id).hasPermission('EMBED_LINKS')) { return message.reply(linkError); } - commandFile.run(aruna, message, args, prefix, command, language); + commandFile.run(aruna, message, args, prefix, command, langc); } else if (!commandFile) { const alts = aruna.commands From cf2824cb77842089136808b151f26560d8896f8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 9 Aug 2020 21:17:56 -0300 Subject: [PATCH 021/164] Fix --- src/Events/guildCreate.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Events/guildCreate.js b/src/Events/guildCreate.js index a904977..22edd83 100644 --- a/src/Events/guildCreate.js +++ b/src/Events/guildCreate.js @@ -21,9 +21,9 @@ var { database } = require('../../Configs'); exports.run = async (aruna, guild) => { var language = ''; if (guild.region == 'brazil') { - language = 'PT-BR'; + language = 'br'; } else { - language = 'EN_US'; + language = 'us'; } var saveG = await new database.Guilds({ _id: guild.id, language: language }); await saveG.save(); From e168063f1477f6228befdb4ee82a14d94ab86972 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 9 Aug 2020 21:59:35 -0300 Subject: [PATCH 022/164] Avatar Command --- languages | 2 +- src/Commands/avatar.js | 13 +++++++++---- src/Events/message.js | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/languages b/languages index ee35ad4..917d7d8 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit ee35ad4454d780f4f9ad62027db0cb044bf7adfc +Subproject commit 917d7d8292917c361a9e20aabb7b92b299dd24a1 diff --git a/src/Commands/avatar.js b/src/Commands/avatar.js index daf69d6..2f85b75 100644 --- a/src/Commands/avatar.js +++ b/src/Commands/avatar.js @@ -18,17 +18,22 @@ const Discord = require('discord.js'); const { emoji } = require('../Utils'); +var language = require('../../languages/bot/br/commands.json'); -exports.run = (aruna, message, args) => { +exports.run = (aruna, message, args, langc) => { const user1 = message.guild.member( message.mentions.users.first() || aruna.users.get(args[0]) || message.author ); + if (langc) { + language = langc; + } + const user = user1.user; const embed = new Discord.RichEmbed() - .setTitle(`${emoji.picture}Avatar de ${user.username}`) - .setDescription(`**Clique [aqui](${user.avatarURL}) para baixar a foto.**`) + .setTitle(language.avatar.embed.title.replace('[emoji]', emoji.picture).replace('[user]', user1.displayName)) + .setDescription(language.avatar.embed.description.replace('[url]', user.avatarURL)) .setImage(user.avatarURL) .setTimestamp(); message.channel.send(embed); @@ -36,6 +41,6 @@ exports.run = (aruna, message, args) => { exports.config = { name: 'avatar', aliases: [''], - description: 'Mostra o avatar próprio ou de um usuário', + description: language.avatar.config.description, category: '🎉 Entretenimento' }; diff --git a/src/Events/message.js b/src/Events/message.js index 3a3c485..97f7791 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -157,7 +157,7 @@ exports.run = async (aruna, message) => { } else if (!message.guild.members.get(aruna.user.id).hasPermission('EMBED_LINKS')) { return message.reply(linkError); } - commandFile.run(aruna, message, args, prefix, command, langc); + commandFile.run(aruna, message, args, langc, prefix, command); } else if (!commandFile) { const alts = aruna.commands From 523feac06ce9aa38f0534b283d62b69602abb4b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 9 Aug 2020 22:06:52 -0300 Subject: [PATCH 023/164] Update languages --- languages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/languages b/languages index 917d7d8..73b97e0 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 917d7d8292917c361a9e20aabb7b92b299dd24a1 +Subproject commit 73b97e0db31e7c1661f0fb00b1b955bb67f8b50a From 054e065d4a77dceffa31365b38ebbb9520db963e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 9 Aug 2020 22:19:03 -0300 Subject: [PATCH 024/164] Update languages --- languages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/languages b/languages index 73b97e0..fb4c625 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 73b97e0db31e7c1661f0fb00b1b955bb67f8b50a +Subproject commit fb4c625eafaecd6c8ddec8bef9deed6cfeaa39e2 From e5e3193c7a9412fbfe7882b5ef05bface006e085 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 9 Aug 2020 22:24:04 -0300 Subject: [PATCH 025/164] Update languages --- languages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/languages b/languages index fb4c625..b7fb029 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit fb4c625eafaecd6c8ddec8bef9deed6cfeaa39e2 +Subproject commit b7fb0296acaf15308c7a45dd1ee8a725558daada From 0eae016d7b052171277681250568a5c91fd3e5e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 10:14:06 -0300 Subject: [PATCH 026/164] Calc Language (Part 1 of 2) --- languages | 2 +- src/Commands/calc.js | 27 +++++++++++++++++---------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/languages b/languages index b7fb029..aad9540 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit b7fb0296acaf15308c7a45dd1ee8a725558daada +Subproject commit aad95408464733b76bc0a0192d3e61018c4e733c diff --git a/src/Commands/calc.js b/src/Commands/calc.js index 0a61666..d844266 100644 --- a/src/Commands/calc.js +++ b/src/Commands/calc.js @@ -20,18 +20,23 @@ const { emojis } = require('../Utils'); const Discord = require('discord.js'); const math = require('mathjs'); -exports.run = (aruna, message, args) => { +var language = require('../../languages/bot/br/commands.json'); + +exports.run = (aruna, message, args, langc) => { + + if (langc) { + language = langc; + } + const error1 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Você deve inserir o cálculo a ser feito.') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setDescription(language.calculator.embed.error.description1) .setTimestamp(); const error2 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription( - 'Desculpe, mas não consegui efetuar o cálculo. Tente inserir outra conta.' - ) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setDescription(language.calculator.embed.error.description2) .setTimestamp(); if (!args[0]) return message.channel.send(error1); @@ -41,11 +46,12 @@ exports.run = (aruna, message, args) => { try { response = math.eval(args.join(' ')); } catch (e) { + console.error(e); return message.channel.send(error2); } const embed = new Discord.RichEmbed() - .setAuthor('Calculadora V2') + .setTitle(language.generic.embed.sucess.title) .addField( `(${emojis.upload}) Entrada`, `\`\`\`js\n${args.join(' ')}\`\`\`` @@ -60,6 +66,7 @@ exports.run = (aruna, message, args) => { exports.config = { name: 'calc', + description: language.calculator.config.description, aliases: ['calculadora', 'math', 'matematica', 'calcular', 'calculator'], category: `${emojis.robot} Utilidades` }; From 6af951b481e75aa258b1d2eeabb1366e77489556 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 10:15:52 -0300 Subject: [PATCH 027/164] Fix Calculator --- src/Commands/calc.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Commands/calc.js b/src/Commands/calc.js index d844266..f59d6bd 100644 --- a/src/Commands/calc.js +++ b/src/Commands/calc.js @@ -44,14 +44,14 @@ exports.run = (aruna, message, args, langc) => { var response; try { - response = math.eval(args.join(' ')); + response = math.evaluate(args.join(' ')); } catch (e) { console.error(e); return message.channel.send(error2); } const embed = new Discord.RichEmbed() - .setTitle(language.generic.embed.sucess.title) + .setTitle(language.calculator.embed.sucess.title) .addField( `(${emojis.upload}) Entrada`, `\`\`\`js\n${args.join(' ')}\`\`\`` From ada67bc571788b1ed044da7c2889944145ae0979 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 10:20:14 -0300 Subject: [PATCH 028/164] Calculator Strings (Part 2 of 2) --- src/Commands/calc.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/Commands/calc.js b/src/Commands/calc.js index f59d6bd..bdb9dd5 100644 --- a/src/Commands/calc.js +++ b/src/Commands/calc.js @@ -52,12 +52,10 @@ exports.run = (aruna, message, args, langc) => { const embed = new Discord.RichEmbed() .setTitle(language.calculator.embed.sucess.title) - .addField( - `(${emojis.upload}) Entrada`, + .addField(language.calculator.embed.sucess.field1.replace('[emoji]', emojis.upload), `\`\`\`js\n${args.join(' ')}\`\`\`` ) - .addField( - `(${emojis.dev}) Saida`, + .addField(language.calculator.embed.sucess.field2.replace('[emoji]', emojis.dev), `\`\`\`js\n${response}\`\`\`` ) .setColor([54, 57, 63]); From a41f55b7ab59380aa3bfa6728e8a09a2aeda3712 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 10:22:06 -0300 Subject: [PATCH 029/164] Update languages --- languages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/languages b/languages index aad9540..e454129 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit aad95408464733b76bc0a0192d3e61018c4e733c +Subproject commit e4541290e8925c7f2e693c107c103c1c1afabbbf From 62cad8ff33e4ae1583ed14502368fec9af41bddf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 10:44:40 -0300 Subject: [PATCH 030/164] Update Dependencies --- package-lock.json | 407 +++++++++++++++++++++++----------------------- package.json | 14 +- 2 files changed, 215 insertions(+), 206 deletions(-) diff --git a/package-lock.json b/package-lock.json index 84246b3..947a865 100644 --- a/package-lock.json +++ b/package-lock.json @@ -83,9 +83,9 @@ } }, "@babel/runtime": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.4.tgz", - "integrity": "sha512-UpTN5yUJr9b4EX2CnGNWIvER7Ab83ibv0pcvvHc4UOdrBI5jb8bj+32cCwPX6xu0mt2daFNjYhoi+X7beH0RSw==", + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", + "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", "requires": { "regenerator-runtime": "^0.13.4" } @@ -117,22 +117,22 @@ } }, "@jimp/bmp": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.13.0.tgz", - "integrity": "sha512-7i/XZLoK5JETBKO0VL7qjnr6WDVl1X8mmaUk6Lzq06/veMPC5IwUIZi1JRVAXPEwTf5uUegq0WFnmUS0lVYzFw==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.0.tgz", + "integrity": "sha512-lc4Ecyys6mRpKHLjFefkS1irCeIBTCpDBjKvNkU/6cIeIMXrFhv290MDT0WCL4UNFjJC/oU2PPraq+M+RkAcpA==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0", + "@jimp/utils": "^0.16.0", "bmp-js": "^0.1.0" } }, "@jimp/core": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.13.0.tgz", - "integrity": "sha512-BMFEUm5HbRP4yCo4Q23CJFx/v6Yr3trw7rERmS1GKUEooDq9ktApZWWTvWq/vggKyysKX0nQ+KT+FaFD/75Q+Q==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.0.tgz", + "integrity": "sha512-7WBYr3BX84fc9tuA86EDhAKNyT9QLcbVYk4whwvshxKtODPxlF1hmZU6Xmx2shoJ62JJtiWLsPsXAHKfEuERtQ==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0", + "@jimp/utils": "^0.16.0", "any-base": "^1.1.0", "buffer": "^5.2.0", "exif-parser": "^0.1.12", @@ -145,293 +145,293 @@ } }, "@jimp/custom": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.13.0.tgz", - "integrity": "sha512-Zir/CHoLRhQDGfPWueCIQbVjVUlayNIUch9fulq4M9V2S+ynHx9BqRn58z8wy+mk8jm1WlpRVhvZ8QUenbL0vg==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.0.tgz", + "integrity": "sha512-xN9WHeW2RP3gLdXdehCgnzKq8l9ezMsfWpkZP0HYtGqwGDSRXx+LNGR2Da1J/tV0pB+qbt67gAXtaxkJwdQ3cA==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/core": "^0.13.0" + "@jimp/core": "^0.16.0" } }, "@jimp/gif": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.13.0.tgz", - "integrity": "sha512-7FO2Fa9FZluqGt1MM/L8s6P5UEedxrIQT2eBAxzB8Z82YTTSWQXw4bdrZWCwiQjBFZwKTIaULIfw6+TxA/Q2XA==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.0.tgz", + "integrity": "sha512-thc3C6/dvGKEVTMxiX82ruRAitIx7EstThqzrd0qk7Yf2O3qbrRZuENl6KNn2PXpmkr6fjcfFLWVM39bP4MG1Q==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0", + "@jimp/utils": "^0.16.0", "gifwrap": "^0.9.2", "omggif": "^1.0.9" } }, "@jimp/jpeg": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.13.0.tgz", - "integrity": "sha512-Fol/DxA1lnIzCsNx/CckIEoyWImQHiWPgFAWL5s7VIVaJrEFnnbRqfOxmvr8yWg8mh3hWLeXNcxqA82CKXgg+Q==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.0.tgz", + "integrity": "sha512-pzlv92YZi7ySvIICNkB0eMphLztBcTAMH2kl5lxFMzF1FDv2FR2d/FI1ph6DSzBV8VYFDu4AM1lJRq3hFJurgQ==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0", + "@jimp/utils": "^0.16.0", "jpeg-js": "^0.4.0" } }, "@jimp/plugin-blit": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.13.0.tgz", - "integrity": "sha512-roCShFZosJgRMLCLzuOT1pRZysQF/p3avQieZiu9pfg2F9X09f91OauU2Lf3/yOp0TZCWbheqbem9MPlhyED8w==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.0.tgz", + "integrity": "sha512-CrakcEvr2ztOwECKpuwmwhXArbtDP2SB44WV0wrFXtuss2mkBbL/hIkUmTnLyJGpwIflj4Vww9m5yIreG5lgUQ==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0" + "@jimp/utils": "^0.16.0" } }, "@jimp/plugin-blur": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.13.0.tgz", - "integrity": "sha512-LeBhQe72bRk2fe2AftcqcDaWgSu6vFD0fxiAYYMy3pHa8pnPAwnw2W3u4bV/gc5XJt6AJzoRyc7WVG2pE4A3gg==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.0.tgz", + "integrity": "sha512-CfTrQR4JY+DGtGbdAbdZgbUpjOqtcF+kmGOoa1uh3NF16tn1glbE8/0SA9YkgvHxNTmekwuT7Lu0nRq09MKVJw==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0" + "@jimp/utils": "^0.16.0" } }, "@jimp/plugin-circle": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.13.0.tgz", - "integrity": "sha512-INwIl8zgWnJYXxYkNhIjG8TXg2Q1nh008SDKyC+Pug4ce/XRJC8w/Gk6HS+U9Z2tIO2/zXv473k/JaiwvDMu1w==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.0.tgz", + "integrity": "sha512-O79288GKwUIxpHR3qyYg0paH/Iegz+Bdo2ePIvD/M3MigEzVdj5dJ/CQXz2cUnJx87rc0k1N5cTI4floIgv0tg==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0" + "@jimp/utils": "^0.16.0" } }, "@jimp/plugin-color": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.13.0.tgz", - "integrity": "sha512-e71UDivZdZGOhQRLjDo4a0BKgrH858HJ7zFk7/Yti58LwgeIGjYHhuYc+xQOdnBWPzGSD47TuFX5GXmf/x1nmg==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.0.tgz", + "integrity": "sha512-S4CbN1r5+VjUF9OBIyWxWBTXRNutLQqAAOkq7QX//lS4HY76eOAafgWWwZR7ci9WWZT8uyyw4tfd4ePoBvoYhw==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0", + "@jimp/utils": "^0.16.0", "tinycolor2": "^1.4.1" } }, "@jimp/plugin-contain": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.13.0.tgz", - "integrity": "sha512-qPYS+ccMP4mEnf7BB0bcaszUTth8OxeRX0MdMvU6PDEI0nIvVVNwmuI6YtNqqs12PwuYxgPkq6AFenyLyoNP1g==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.0.tgz", + "integrity": "sha512-ZAVe9ad0/TDLSPutIP/8Z+jXXOv638w/FZeA3avTAI5GfWV7ZBT6BB7kDI3iZTl+SHUjv/MlzHCS99WCnpc1hg==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0" + "@jimp/utils": "^0.16.0" } }, "@jimp/plugin-cover": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.13.0.tgz", - "integrity": "sha512-S2GkbXNgIb0afof/NLLq9IJDZPOcFtu1mc32ngt9S8HzXsNHgRAzONW7cg56bwQ6p0+sz/dS5tB4ctOW/pu/Dw==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.0.tgz", + "integrity": "sha512-gJGorvc4HOeSR0dNR29mYLLXtrWvgj8da0B/lUJSb0R2AvUrb+VgLKSfFPyf+nL/jtcm9/CJzYhAPcz13zmRKA==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0" + "@jimp/utils": "^0.16.0" } }, "@jimp/plugin-crop": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.13.0.tgz", - "integrity": "sha512-Y1Ug3kOzsq72EjLiWQlwkHuvUvdSmFUDtxpyOXh3RxeWF7wmdjH8FvdhPj8hWvFLsDYFgWGaLI4Z6SXOr+N8nA==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.0.tgz", + "integrity": "sha512-I5McmdrNodg0iU815qOsuI8CjkwiRsFRTY4/LBOsLGHZasvxhzFxGcwD3SgnohdIkhRc3tX8jfvKg2pdPbD2AA==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0" + "@jimp/utils": "^0.16.0" } }, "@jimp/plugin-displace": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.13.0.tgz", - "integrity": "sha512-c80VIUjIqQoavafthLpYRZdzANCxbOCHzqkFVbZ0kNKJnDDk6fW55mvVW4TJLDToDU81WMlttCmNV0oXcX93gQ==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.0.tgz", + "integrity": "sha512-+c5n5jDiN/neAuAxAAy55Gpycgmyay1PwUy8qKM1fgfBE874mrF5C4u1ThFz4OiDkRirKLpncRmrUMHa9boZtA==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0" + "@jimp/utils": "^0.16.0" } }, "@jimp/plugin-dither": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.13.0.tgz", - "integrity": "sha512-EUz/y/AaQ00TnaiVLVAXLz8n8Nx7S36lKi4VXPeYy5a5FyzBimxNiKxdITVe9zooN7+H4FP++/xGFGFMpfWtRg==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.0.tgz", + "integrity": "sha512-rsLHSGnpWniQXoughYXRCbK/8KKXi+avV5z5mHIKzAKS4areXW03XlLqmy9o26q2h0g/YV5Hkxo9jwIw0v2Fpg==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0" + "@jimp/utils": "^0.16.0" } }, "@jimp/plugin-fisheye": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.13.0.tgz", - "integrity": "sha512-O7h5pNTk2sYcTKxLvV6+zzUpLx8qzdNl6qiP9x1S0CKy64oZ9IwtK1eR1eLom0YA8tUR7rX5Ra4pB8bhq8Oyqw==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.0.tgz", + "integrity": "sha512-P6KsHQHUOWyDprxKl4chPTwKIJNbXB7LGDQH6Bq/q8zZ9XwYXGnTmkHA/BwGKI6HGCj/+R2WoP3Cnhwm6XaIpg==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0" + "@jimp/utils": "^0.16.0" } }, "@jimp/plugin-flip": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.13.0.tgz", - "integrity": "sha512-gWk+Q0LmCvupUuWRfoGyETmH/+lJKZuPCeA9K6UHJldq5Cdg/3MrlKUNS1HcPCDXjw+dWDGC8QnNslvMTaY5VQ==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.0.tgz", + "integrity": "sha512-5MlqM1RJohk0NU0Z3ZtviI0DqHXDB0OuRk3dimUIquePz1OocFCt9Z4bBbDRIczGZFOrDrCrpHMfMxPjwm7eXw==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0" + "@jimp/utils": "^0.16.0" } }, "@jimp/plugin-gaussian": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.13.0.tgz", - "integrity": "sha512-0ctRqbCcLdy8y9IrSIH2McWNPLnEwjoe8qxtqoi51zRsM3z3mwjiTC2q8AWeF0SdIdWwV+YV/eP0494AJqjTsg==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.0.tgz", + "integrity": "sha512-oP2Hg4gR4uq9id1gF+SfTvPrzqZc3fVY+t6gwxPXPgpnb9S5UVuSQbwtixY1EEBC9XRdX2XFko9eUul8dTnUpQ==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0" + "@jimp/utils": "^0.16.0" } }, "@jimp/plugin-invert": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.13.0.tgz", - "integrity": "sha512-k7TWx/la0MrTcT1dMtncV6I9IuGToRm9Q0ekzfb3k8bHzWRYX4SUtt/WrZ/I+/znD/fGorLtFI057v7mcLJc5A==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.0.tgz", + "integrity": "sha512-RFsES55G7po6rv35A/3jz7IA1BOr8krX4H0zmtKUprcrhFl+El9iZojVCpJQRJ5QKQVS3iXi5H6EGN7AT1HykQ==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0" + "@jimp/utils": "^0.16.0" } }, "@jimp/plugin-mask": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.13.0.tgz", - "integrity": "sha512-U3OdsgtMNpbCYc1lzzu96zdSgyz7BK9eD8IoFHdw4Ma8gCuM8kp9gdBJlKnzOh8eyYvssdCMZOWz9Xbxc5xH9A==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.0.tgz", + "integrity": "sha512-inJweZgTNYZQdF0m5f/or5/LCLhpz4ccSDsK9HveuFQ82ITfJcvFaUlvlo11pHRl2r+Q92Er7B5g7icMIzXHZw==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0" + "@jimp/utils": "^0.16.0" } }, "@jimp/plugin-normalize": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.13.0.tgz", - "integrity": "sha512-yKOgZSvOxSHNlh+U9NOQH4Drgca0Dwb7DQRk3vj67gvHQC96JafIpGwN+9V4fP89lA3rkItbw6xgN6C/28HEUQ==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.0.tgz", + "integrity": "sha512-sfqhHDGks0ccqIaTCG/dFJ772eGi8bewxIvrQkeLw5TizzPZ3S+C4GXKwlkX2z5dyQr30cHM5Mv6+XhNNLEHWw==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0" + "@jimp/utils": "^0.16.0" } }, "@jimp/plugin-print": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.13.0.tgz", - "integrity": "sha512-Tv7r/1t7z63oLeRuEWw9xbm0G5uuBE54986+BOu8OFaHBpV/BbVHrE7ouApA0mKVZqMZCVjhO6Ph8+uFzRjdOw==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.0.tgz", + "integrity": "sha512-tQJfSOTf+las/PJpdUK9Aw9EdComQ50zl29TgMrAULuae1lh+e/A188ZhNQzTCpAAc/PEku8xoke+rYUU1AVig==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0", + "@jimp/utils": "^0.16.0", "load-bmfont": "^1.4.0" } }, "@jimp/plugin-resize": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.13.0.tgz", - "integrity": "sha512-XOo0Skn7aq/aGxV9czFx6EaBUbAsAGCVbAS26fMM0AZ4YAWWUEleKTpHunEo92giIPhvlxeFFjQR2jQ9UcB3uQ==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.0.tgz", + "integrity": "sha512-aI5H1Xe1fE1phBBI0EgQiVgMEXJ7cy2CXH+H7WSxnrdZJTnt9emzc4LnvKEOPBY6dCPw3P7k/BHp9SDTpUKSOQ==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0" + "@jimp/utils": "^0.16.0" } }, "@jimp/plugin-rotate": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.13.0.tgz", - "integrity": "sha512-BaNeh655kF9Rz01ZV+Bkc8hLsHpNu3QnzigruVDjGt9Paoig0EBr+Dgyjje+7eTLu20kyuyxwPUAxLSOiPiraQ==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.0.tgz", + "integrity": "sha512-YTKo4LntC2h46H6+De+3ctt8MacC+fTbIdw527BBBIKF44aWYn0uAQlAO+R+Aemnq4YqNnCnrZzPtWYZXA6nNw==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0" + "@jimp/utils": "^0.16.0" } }, "@jimp/plugin-scale": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.13.0.tgz", - "integrity": "sha512-e/f7lvii+DmRMgYF+uBKQy437f+J66WbL0FcFEataCF/W9UkTIQGeXdECwJSPfqr81SxC5mGbSBbsdbMKChzAQ==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.0.tgz", + "integrity": "sha512-AfDnTIjBzGdvJ1K7MkUexgkGGAYDzpNzkYoCpfaRNKl/txoivaA6iKfvCiE7i1IDXq5mRCLkjQjMF43l8kwv5g==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0" + "@jimp/utils": "^0.16.0" } }, "@jimp/plugin-shadow": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.13.0.tgz", - "integrity": "sha512-qObtH63dmfPLze5wE8XDRjDsBOUnAfEWib4YbjPXGBZVxeKD7+2oPGemsK56HqC/+rYzIynkbi4MUIV1Q0dGjA==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.0.tgz", + "integrity": "sha512-8O1CKwvSnrrAIuAM3BEDTwt4U5oRVB5pXxnRegYXDuFFLDPIp2N4ILQqC2NaN+PBaVvj1JuLYuxmNzja0uRQKQ==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0" + "@jimp/utils": "^0.16.0" } }, "@jimp/plugin-threshold": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.13.0.tgz", - "integrity": "sha512-ACF7jk0ogso+2RK+0EsvBupVfE3IMq39wGFQWgpnHR9Tj12mSO279f6i/H8bcj1ZXmHot22nwLOG0wO4AlAaRg==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.0.tgz", + "integrity": "sha512-PNrB6IIF7kDGu7A/cyNAy3pchWtXbJGdpowkW6hcEzXOR+FwBRMuo5LS+q/eedo86qQ2F1vw5dm/nWYJxNxvkg==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0" + "@jimp/utils": "^0.16.0" } }, "@jimp/plugins": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.13.0.tgz", - "integrity": "sha512-onu8GnSnFjLFuFVFq8+aTYFIDfH8kwZuBHeGaDyScPFFn6QMKsPl4TeLzQ5vwIPvcpkADuFFfuAshE4peutjjA==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.0.tgz", + "integrity": "sha512-aiyn/9MrSqVJwsnBmkbHD4DWTowULdP4NEes8Vt738KxZMw1UawKbEbj3/CzHIeEIQKjDECTi+jNd5HIbDq9LQ==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/plugin-blit": "^0.13.0", - "@jimp/plugin-blur": "^0.13.0", - "@jimp/plugin-circle": "^0.13.0", - "@jimp/plugin-color": "^0.13.0", - "@jimp/plugin-contain": "^0.13.0", - "@jimp/plugin-cover": "^0.13.0", - "@jimp/plugin-crop": "^0.13.0", - "@jimp/plugin-displace": "^0.13.0", - "@jimp/plugin-dither": "^0.13.0", - "@jimp/plugin-fisheye": "^0.13.0", - "@jimp/plugin-flip": "^0.13.0", - "@jimp/plugin-gaussian": "^0.13.0", - "@jimp/plugin-invert": "^0.13.0", - "@jimp/plugin-mask": "^0.13.0", - "@jimp/plugin-normalize": "^0.13.0", - "@jimp/plugin-print": "^0.13.0", - "@jimp/plugin-resize": "^0.13.0", - "@jimp/plugin-rotate": "^0.13.0", - "@jimp/plugin-scale": "^0.13.0", - "@jimp/plugin-shadow": "^0.13.0", - "@jimp/plugin-threshold": "^0.13.0", + "@jimp/plugin-blit": "^0.16.0", + "@jimp/plugin-blur": "^0.16.0", + "@jimp/plugin-circle": "^0.16.0", + "@jimp/plugin-color": "^0.16.0", + "@jimp/plugin-contain": "^0.16.0", + "@jimp/plugin-cover": "^0.16.0", + "@jimp/plugin-crop": "^0.16.0", + "@jimp/plugin-displace": "^0.16.0", + "@jimp/plugin-dither": "^0.16.0", + "@jimp/plugin-fisheye": "^0.16.0", + "@jimp/plugin-flip": "^0.16.0", + "@jimp/plugin-gaussian": "^0.16.0", + "@jimp/plugin-invert": "^0.16.0", + "@jimp/plugin-mask": "^0.16.0", + "@jimp/plugin-normalize": "^0.16.0", + "@jimp/plugin-print": "^0.16.0", + "@jimp/plugin-resize": "^0.16.0", + "@jimp/plugin-rotate": "^0.16.0", + "@jimp/plugin-scale": "^0.16.0", + "@jimp/plugin-shadow": "^0.16.0", + "@jimp/plugin-threshold": "^0.16.0", "timm": "^1.6.1" } }, "@jimp/png": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.13.0.tgz", - "integrity": "sha512-9MVU0BLMQKJ6Kaiwjrq6dLDnDktZzeHtxz4qthRHaGOyHLx3RpxmbhaDuK9dDg6NASX3JuXznEhaOP4lqQODpQ==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.0.tgz", + "integrity": "sha512-3uDwCeZRaHTq6Jqjav37n73IGL4vrDkoHLzkC+dAGcSdaKnUnRxD/sO4CBTK1cHttJhsf5Xk/+0dO+qaqIEvNA==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.13.0", + "@jimp/utils": "^0.16.0", "pngjs": "^3.3.3" } }, "@jimp/tiff": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.13.0.tgz", - "integrity": "sha512-8lLGgEmhVRRjzZfn/QgpM3+mijq5ORYqRHtLcqDgcQaUY/q/OU1CxLYX777pozyQ3KIq1O+jyyHZm2xu3RZkPA==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.0.tgz", + "integrity": "sha512-wiGgIKGtUwR7vUi+PHv7qzEKhlnqT/k78qtOgsF6PiGhXGevJWBIniD4LksbQaW+Ph1Jwl3ovvYEdS89Db46Bw==", "requires": { "@babel/runtime": "^7.7.2", "utif": "^2.0.1" } }, "@jimp/types": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.13.0.tgz", - "integrity": "sha512-qGq9qVHiRTgtIy061FSBr9l7OFrSiFLkKyQVnOBndEjwls2XLBKXkMmSD2U3oiHcNuf3ACsDSTIzK3KX/hDHvg==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.0.tgz", + "integrity": "sha512-T0VBF1HFXZ+Ez48zQ0sxrOpcFbfSzCulaVONWeEi/CqcNv2B7UmiaA81bw9uLGZ40VIOrFYHB20ma0m1asYBvw==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/bmp": "^0.13.0", - "@jimp/gif": "^0.13.0", - "@jimp/jpeg": "^0.13.0", - "@jimp/png": "^0.13.0", - "@jimp/tiff": "^0.13.0", + "@jimp/bmp": "^0.16.0", + "@jimp/gif": "^0.16.0", + "@jimp/jpeg": "^0.16.0", + "@jimp/png": "^0.16.0", + "@jimp/tiff": "^0.16.0", "timm": "^1.6.1" } }, "@jimp/utils": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.13.0.tgz", - "integrity": "sha512-zA4573jE4FIpBKiYpPGo66JOAGdv/FS/N9fW9GpkbwJeTu12fV+r4R1ARSyt8UEKdE4DMBatBmQC0U2FGZijOA==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.0.tgz", + "integrity": "sha512-dZJd5Rq4yOjPtqN/bArNy0v03nnaiHCf/Qct2wdiqK0k4wsfDL2Lle9XmswNcPPFuoL/LNnYY2E5ruAnatF/4A==", "requires": { "@babel/runtime": "^7.7.2", "regenerator-runtime": "^0.13.3" @@ -457,9 +457,9 @@ } }, "acorn": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", - "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", + "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", "dev": true }, "acorn-jsx": { @@ -778,9 +778,9 @@ "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" }, "dbots": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/dbots/-/dbots-4.1.0.tgz", - "integrity": "sha512-GIRpPP0wOZF0hpClDnjSAqdLVo/g2aiKlG5YjMFqIwWSfLAzXG0aIxV7gtIh/kXbgnKuD0eBi6XNETG7IFKePg==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/dbots/-/dbots-5.0.4.tgz", + "integrity": "sha512-KZJKWv1yISXMIw9KwT8Kodad9EAPrxd6iThKe8MxMy7MCIngEY0We+yYU65HIzmJiwo0W2OigNqPA6CIbf5TyQ==", "requires": { "axios": "^0.19.0", "promise.allsettled": "^1.0.2" @@ -970,9 +970,9 @@ "dev": true }, "eslint": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.5.0.tgz", - "integrity": "sha512-vlUP10xse9sWt9SGRtcr1LAC67BENcQMFeV+w5EvLEoFe3xJ8cF1Skd0msziRx/VMC+72B4DxreCE+OR12OA6Q==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.6.0.tgz", + "integrity": "sha512-QlAManNtqr7sozWm5TF4wIH9gmUm2hE3vNRUvyoYAa4y1l5/jxD/PQStEjBMQtCqZmSep8UxrcecI60hOpe61w==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -1097,9 +1097,9 @@ }, "dependencies": { "estraverse": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", - "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true } } @@ -1549,6 +1549,14 @@ "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } } }, "imurmurhash": { @@ -1630,9 +1638,9 @@ "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==" }, "is-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", - "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "requires": { "has-symbols": "^1.0.1" } @@ -1686,14 +1694,14 @@ "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=" }, "jimp": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.13.0.tgz", - "integrity": "sha512-N/iG8L7Qe+AcHhrgcL0m7PTP/14iybmSIuOqCDvuel9gcIKEzxbbGuPCJVMchwXzusc2E7h9UjO9LZDfXb/09w==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.0.tgz", + "integrity": "sha512-WRfGlXB6/0xY3mSoskfVhWVNSegVZCgmvunJDc41QthTWi5oRG2FeL7eOcX0zz/Z+dYRu6Q0ibO2yltC+EIptA==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/custom": "^0.13.0", - "@jimp/plugins": "^0.13.0", - "@jimp/types": "^0.13.0", + "@jimp/custom": "^0.16.0", + "@jimp/plugins": "^0.16.0", + "@jimp/types": "^0.16.0", "regenerator-runtime": "^0.13.3" } }, @@ -1778,6 +1786,13 @@ "requires": { "miniget": "^1.6.1", "sax": "^1.2.4" + }, + "dependencies": { + "miniget": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/miniget/-/miniget-1.7.2.tgz", + "integrity": "sha512-USPNNK2bnHLOplX8BZVMehUkyQizS/DFpBdoH0TS+fM+hQoLNg9tWg4MeY9wE8gfY0pbzmx5UBEODujt3Lz8AA==" + } } }, "mathjs": { @@ -1843,9 +1858,9 @@ } }, "miniget": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/miniget/-/miniget-1.7.2.tgz", - "integrity": "sha512-USPNNK2bnHLOplX8BZVMehUkyQizS/DFpBdoH0TS+fM+hQoLNg9tWg4MeY9wE8gfY0pbzmx5UBEODujt3Lz8AA==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/miniget/-/miniget-2.0.1.tgz", + "integrity": "sha512-MX+QfVIPAutz6c+T7WKuFKtjcw0nOyRRh1ubhTDD+z/e/pKcSAsfAV63aQKUgb1MFRT1GyfJeW53N5fHkX0wIA==" }, "minimatch": { "version": "3.0.4", @@ -1896,9 +1911,9 @@ "integrity": "sha512-cBMXjSW+fjOb4tyaVHuaVE/A5TqkukDWiOfxxAjY+PEqmmBQlLwn+8OzwPiG3brouXKY5Un4pBjAeB6UToXHaQ==" }, "mongodb": { - "version": "3.5.9", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.5.9.tgz", - "integrity": "sha512-vXHBY1CsGYcEPoVWhwgxIBeWqP3dSu9RuRDsoLRPTITrcrgm1f0Ubu1xqF9ozMwv53agmEiZm0YGo+7WL3Nbug==", + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.5.10.tgz", + "integrity": "sha512-p/C48UvTU/dr/PQEDKfb9DsCVDJWXGmdJNFC+u5FPmTQVtog69X6D8vrWHz+sJx1zJnd96sjdh9ueo7bx2ILTw==", "requires": { "bl": "^2.2.0", "bson": "^1.1.4", @@ -1909,13 +1924,13 @@ } }, "mongoose": { - "version": "5.9.25", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.9.25.tgz", - "integrity": "sha512-vz/DqJ3mrHqEIlfRbKmDZ9TzQ1a0hCtSQpjHScIxr4rEtLs0tjsXDeEWcJ/vEEc3oLfP6vRx9V+uYSprXDUvFQ==", + "version": "5.9.28", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.9.28.tgz", + "integrity": "sha512-A8lNRk4eCQDzk+DagSMYdH94LAYrbTK83LgrUlzqdig3YXvizW3DApJqOWQ5DdhuimvsfiD0Z5NTVzXl/rgi2w==", "requires": { "bson": "^1.1.4", "kareem": "2.3.1", - "mongodb": "3.5.9", + "mongodb": "3.5.10", "mongoose-legacy-pluralize": "1.0.2", "mpath": "0.7.0", "mquery": "3.2.2", @@ -2317,9 +2332,9 @@ } }, "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" }, "regexp-clone": { "version": "1.0.0", @@ -2341,11 +2356,6 @@ "semver": "^5.1.0" }, "dependencies": { - "resolve-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" - }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -2354,10 +2364,9 @@ } }, "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" }, "rimraf": { "version": "3.0.2", @@ -2612,9 +2621,9 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "superagent": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-5.3.1.tgz", - "integrity": "sha512-wjJ/MoTid2/RuGCOFtlacyGNxN9QLMgcpYLDQlWFIhhdJ93kNscFonGvrpAHSCVjRVj++DGCglocF7Aej1KHvQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-6.0.0.tgz", + "integrity": "sha512-gBiyDSUR3zbYO8za+MudSNxMFSOhKcZfQ1Anya1DWzk9R32zl++cYUFHXzP3VnyvQO8h/1/uPPA9FUDDtE+qdA==", "requires": { "component-emitter": "^1.3.0", "cookiejar": "^2.1.2", @@ -2930,13 +2939,13 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "ytdl-core": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-2.1.7.tgz", - "integrity": "sha512-ithllxxlt4zmJVTnYtT8/31QLv5MGlK3fSk29lx2S4eKc1BGh+ELKQEAkRJqWIf2P8TYBYrKwijx11xND4JcXw==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-3.2.1.tgz", + "integrity": "sha512-e6vlLOc+yrdNGOqfbQvWuaI3XNx5Yp4sLGY2RPdP2gCiumhn1BDqrYjn1nUCze/LGZ8C3bFxEdUqKi2vS1aaXg==", "requires": { "html-entities": "^1.3.1", "m3u8stream": "^0.7.1", - "miniget": "^1.7.2", + "miniget": "^2.0.1", "sax": "^1.1.3" } } diff --git a/package.json b/package.json index 7c95435..49e82d1 100644 --- a/package.json +++ b/package.json @@ -18,19 +18,19 @@ "@discordjs/opus": "^0.3.2", "chalk": "^4.1.0", "dateformat": "^3.0.3", - "dbots": "^4.0.0", + "dbots": "^5.0.4", "discord.js": "^11.6.4", "express": "^4.17.1", "express-session": "^1.17.1", - "jimp": "^0.13.0", + "jimp": "^0.16.0", "mathjs": "^7.1.0", - "moment": "^2.26.0", + "moment": "^2.27.0", "moment-duration-format": "^2.3.2", - "mongoose": "^5.9.25", - "superagent": "^5.2.2", - "ytdl-core": "^2.1.7" + "mongoose": "^5.9.28", + "superagent": "^6.0.0", + "ytdl-core": "^3.2.1" }, "devDependencies": { - "eslint": "^7.5.0" + "eslint": "^7.6.0" } } From 71fa32800c97bb28560d74bb257228da79de9cc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 13:07:48 -0300 Subject: [PATCH 031/164] Shard Languages --- .Configs/general.js | 1 + languages | 2 +- src/Events/message.js | 6 +++--- src/sharding.js | 10 ++++++---- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/.Configs/general.js b/.Configs/general.js index 40cecbc..21fbc48 100644 --- a/.Configs/general.js +++ b/.Configs/general.js @@ -21,6 +21,7 @@ module.exports = { token: '', mongoose: '', superUsersId: ['281515925960654848'], // Your User ID Comes Here! + language: 'br', sharding: { totalShards: 'auto', delay: 7500 diff --git a/languages b/languages index e454129..6f689ed 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit e4541290e8925c7f2e693c107c103c1c1afabbbf +Subproject commit 6f689ed14f0312f6ff9e4fdc0aa78bc5aa0c89ed diff --git a/src/Events/message.js b/src/Events/message.js index 97f7791..f0c68a8 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -53,7 +53,7 @@ exports.run = async (aruna, message) => { if (message.guild.region == 'brazil') { language = 'br'; } else { - language = 'en'; + language = config.language; } console.log('No Server!'); var saveG = await new database.Guilds({ @@ -88,8 +88,8 @@ exports.run = async (aruna, message) => { const langc = require(`../../languages/bot/${language}/commands.json`); const intL = require(`../../languages/bot/${language}/internal.json`); - const emojiError = intL.emojiError; - const linkError = intL.linkError; + const emojiError = intL.errors.emojiError; + const linkError = intL.errors.linkError; const mention = [`<@${aruna.user.id}>`, `<@!${aruna.user.id}>`]; diff --git a/src/sharding.js b/src/sharding.js index 3f70c28..1f59e9f 100644 --- a/src/sharding.js +++ b/src/sharding.js @@ -21,6 +21,8 @@ const chalk = require('chalk'); const { config } = require('../Configs'); const pkg = require('../package.json'); +const language = require(`../languages/bot/${config.language}/internal.json`); + const manager = new Discord.ShardingManager(`./${pkg.main}`, { token: config.token, totalShards: config.sharding.totalShards @@ -28,10 +30,10 @@ const manager = new Discord.ShardingManager(`./${pkg.main}`, { const logPrefix = `${chalk.gray('[')}${chalk.yellow('SHARD MASTER')}${chalk.gray(']')}`; -manager.on('launch', shard => console.log(`${logPrefix} ${shard.id} (${shard.id + 1}/${manager.totalShards}) iniciado(s)`)); -process.on('exit', code => console.log(`${logPrefix} ${chalk.red('Foi forçado o encerramento de um processo.')} Código de Saída:`, code)); +manager.on('launch', shard => console.log(`${logPrefix} ${shard.id} (${shard.id + 1}/${manager.totalShards}) ${language.shard.launch.replace('[shard] ', '')}`)); +process.on('exit', code => console.log(`${logPrefix} ${chalk.red(language.shard.exit)} ${language.shard.exitCode}`, code)); -console.log(`${logPrefix} Começando a gerar shards...`); +console.log(language.shard.startGeneration.replace('[logPrefix]', logPrefix)); manager.spawn(config.sharding.totalShards, config.sharding.delay).then(() => { - console.log(`${logPrefix} ${chalk.green('Finalizando a geração dos Shards!')}`); + console.log(`${logPrefix} ${chalk.green(language.shard.finishGeneration)}`); }); \ No newline at end of file From 83a038774b0bfb2cba6b9baa7b6a5c8383374bdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 13:08:29 -0300 Subject: [PATCH 032/164] Removing old dependencies --- src/main.js | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/main.js b/src/main.js index 287a591..a4c2d45 100644 --- a/src/main.js +++ b/src/main.js @@ -19,18 +19,6 @@ require('events').EventEmitter.defaultMaxListeners = 999; -const express = require('express'); -const http = require('http'); -const app = express(); -app.get('/', (request, response) => { - console.log(Date.now() + ' Ping Received'); - response.sendStatus(200); -}); -app.listen(process.env.PORT); -setInterval(() => { - http.get(`http://${process.env.PROJECT_DOMAIN}.glitch.me/`); -}, 280000); - const Discord = require('discord.js'); const fs = require('fs'); const { config } = require('../Configs'); From d48790848977159e6ac0968ba7ec843228dd58a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 13:14:32 -0300 Subject: [PATCH 033/164] Main Strings --- languages | 2 +- src/main.js | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/languages b/languages index 6f689ed..d732a24 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 6f689ed14f0312f6ff9e4fdc0aa78bc5aa0c89ed +Subproject commit d732a24ce4a0b59f339e4ecaf8869e38551c1631 diff --git a/src/main.js b/src/main.js index a4c2d45..6272a23 100644 --- a/src/main.js +++ b/src/main.js @@ -23,31 +23,32 @@ const Discord = require('discord.js'); const fs = require('fs'); const { config } = require('../Configs'); const chalk = require('chalk'); +const language = require(`../languages/bot/${config.language}/internal.json`); const aruna = new Discord.Client(); aruna.commands = new Discord.Collection(); aruna.aliases = new Discord.Collection(); fs.readdir('./src/Events/', (erro, files) => { - if (erro) return error(`[ERROR] => ${erro}`); + if (erro) return error(`[${language.main.error}] => ${erro}`); files.forEach(file => { const eventFunction = require(`./Events/${file}`); - log(`[EVENT] => ${file}`); + log(`[${language.main.event}] => ${file}`); const eventName = file.split('.')[0]; aruna.on(eventName, (...args) => eventFunction.run(aruna, ...args)); }); }); fs.readdir('./src/Commands/', (err, files) => { - if (err) return error(`[ERROR] => ${err}`); + if (err) return error(`[${language.main.error}] => ${err}`); const jsfile = files.filter(f => f.split('.').pop() === 'js'); if (jsfile.length <= 0) { - return warn('[COMMANDS] Not Found!'); + return warn(`[${language.main.commands}] Not Found!`); } jsfile.forEach(f => { const pull = require(`./Commands/${f}`); aruna.commands.set(pull.config.name, pull); - log(`[COMMAND] => ${f}`); + log(`[${language.main.command}] => ${f}`); pull.config.aliases.forEach(alias => { aruna.aliases.set(alias, pull.config.name); }); From 9ad1d796b0281650ad8ab91bd4b9c7fc261d3e36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 14:04:46 -0300 Subject: [PATCH 034/164] Cluster Strings --- .Configs/mongoose.js | 30 +++++++++++++++++++++++++++--- languages | 2 +- src/Events/ready.js | 2 +- src/main.js | 2 +- 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/.Configs/mongoose.js b/.Configs/mongoose.js index fe9d424..02c069b 100644 --- a/.Configs/mongoose.js +++ b/.Configs/mongoose.js @@ -18,6 +18,8 @@ var mongoose = require('mongoose'); const config = require('./general.js'); +const chalk = require('chalk'); +const language = require(`../languages/bot/${config.language}/internal.json`); var Schema = mongoose.Schema; const url = config.mongoose; @@ -25,8 +27,8 @@ mongoose.connect( url, { useNewUrlParser: true, useUnifiedTopology: true }, err => { - if (err) return console.log('(CLUSTER) => Erro\n', err); - console.log('(CLUSTER) => Conectado!'); + if (err) return error(`[${language.main.error}] => ${err}`); + log('=> Conectado!'); } ); @@ -99,4 +101,26 @@ exports.Suport = Supports; exports.System = Systems; exports.Guilds = Guilds; exports.Users = Users; -exports.Rank = Ranks; \ No newline at end of file +exports.Rank = Ranks; + +function logPrefix() { + return `${chalk.gray('[')}${chalk.blue(language.main.cluster)}${chalk.gray(']')}`; +} + +function log(...a) { + return console.log(logPrefix(), ...a); +} + +// eslint-disable-next-line no-unused-vars +function warn(...a) { + return console.warn(logPrefix(), chalk.yellow(...a)); +} + +function error(...a) { + return console.error(logPrefix(), chalk.red(...a)); +} + +// eslint-disable-next-line no-unused-vars +function debug(...a) { + return console.debug(logPrefix(), chalk.magenta(...a)); +} \ No newline at end of file diff --git a/languages b/languages index d732a24..c48d168 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit d732a24ce4a0b59f339e4ecaf8869e38551c1631 +Subproject commit c48d168ba3e01a0f68a9b3f06398b1d5f1eaf299 diff --git a/src/Events/ready.js b/src/Events/ready.js index 9bc5ea7..ed765f4 100644 --- a/src/Events/ready.js +++ b/src/Events/ready.js @@ -87,7 +87,7 @@ exports.run = async (aruna) => { }, 15000); function logPrefix() { - return `${chalk.gray('[')}${isSharded() ? `SHARD ${chalk.blue(aruna.shard.id)}` : 'ARUNA'}${chalk.gray(']')}`; + return `${chalk.gray('[')}${isSharded() ? `SHARD ${chalk.blue(aruna.shard.id)}` : aruna.user.username}${chalk.gray(']')}`; } function log(...a) { diff --git a/src/main.js b/src/main.js index 6272a23..5b0bace 100644 --- a/src/main.js +++ b/src/main.js @@ -57,7 +57,7 @@ fs.readdir('./src/Commands/', (err, files) => { function logPrefix() { - return `${chalk.gray('[')}${isSharded() ? `SHARD ${chalk.blue(aruna.shard.id)}` : 'ARUNA'}${chalk.gray(']')}`; + return `${chalk.gray('[')}${isSharded() ? `SHARD ${chalk.blue(aruna.shard.id)}` : aruna.user.username}${chalk.gray(']')}`; } function log(...a) { From 0200d6408ec44ca3643901bc3b7289b5983848d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 14:36:23 -0300 Subject: [PATCH 035/164] default language configuration --- src/Commands/avatar.js | 3 ++- src/Commands/calc.js | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Commands/avatar.js b/src/Commands/avatar.js index 2f85b75..3932b94 100644 --- a/src/Commands/avatar.js +++ b/src/Commands/avatar.js @@ -18,7 +18,8 @@ const Discord = require('discord.js'); const { emoji } = require('../Utils'); -var language = require('../../languages/bot/br/commands.json'); +const { config } = require('../../Configs'); +var language = require(`../../languages/bot/${config.language}/commands.json`); exports.run = (aruna, message, args, langc) => { const user1 = message.guild.member( diff --git a/src/Commands/calc.js b/src/Commands/calc.js index bdb9dd5..10971fe 100644 --- a/src/Commands/calc.js +++ b/src/Commands/calc.js @@ -19,8 +19,8 @@ const { emojis } = require('../Utils'); const Discord = require('discord.js'); const math = require('mathjs'); - -var language = require('../../languages/bot/br/commands.json'); +const { config } = require('../../Configs'); +var language = require(`../../languages/bot/${config.language}/commands.json`); exports.run = (aruna, message, args, langc) => { From 83dd699b02f663763cef42089f6328ce6d17e1b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 14:54:06 -0300 Subject: [PATCH 036/164] Clear Command Strings --- languages | 2 +- src/Commands/clear.js | 49 +++++++++++++++++++++---------------------- 2 files changed, 25 insertions(+), 26 deletions(-) diff --git a/languages b/languages index c48d168..1e03281 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit c48d168ba3e01a0f68a9b3f06398b1d5f1eaf299 +Subproject commit 1e03281f29507fdc2c8c9ac38233c31f170fa9f9 diff --git a/src/Commands/clear.js b/src/Commands/clear.js index c103c7f..aa5c5d5 100644 --- a/src/Commands/clear.js +++ b/src/Commands/clear.js @@ -16,49 +16,47 @@ along with this program. If not, see . */ -function verify(messages, args, message) { +function verify(messages, args, message, language) { if (args[0] == messages.size) - return ( - 'Foram deletadas `' + - messages.size + - '` mensagens por ' + - `<@${message.author.id}>` - ); + return (language.clear.sucess.message1.replace('[messages]', messages.size).replace('[user]', message.author)); else return ( - `<@${message.author.id}> deletou apenas \`${messages.size}\`` + - ' mensagens das ' + - `\`${args[0]} requisitadas\`` + - ' por não existirem outras ou serem mais antigas que 2 semanas.' + language.clear.sucess.message2.replace('[messages]', messages.size).replace('[user]', message.author).replace('[request]', args[0]) ); } const Discord = require('discord.js'); +const { config } = require('../../Configs'); +var language = require(`../../languages/bot/${config.language}/commands.json`); + +exports.run = async (client, message, args, langc) => { -exports.run = async (client, message, args) => { + if (langc) { + language = langc; + } const error1 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Você não possui a permissão de `Gerenciar Mensagens`!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setDescription(language.clear.embed.error.description1.replace('[manageMessages]', language.generic.permissions.manageMessages)) .setTimestamp(); const error2 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Eu não possuo a permissão de `Gerenciar Mensagens`!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setDescription(language.clear.embed.error.description2.replace('[manageMessages]', language.generic.permissions.manageMessages)) .setTimestamp(); const error3 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Você deve inserir a quantidade de mensagens a ser apagada!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setDescription(language.clear.embed.error.description3) .setTimestamp(); const error4 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Eu só posso apagar entre 2 e 100 mensagens.') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setDescription(language.clear.embed.error.description4) .setTimestamp(); if ( @@ -75,12 +73,13 @@ exports.run = async (client, message, args) => { await message.delete(); await message.channel.bulkDelete(args[0]).then(messages => { message.channel - .send(verify(messages, args, message)) + .send(verify(messages, args, message, language)) .then(msg => msg.delete(10000)); }); }; exports.config = { name: 'clear', + description: language.clear.config.description, aliases: [], category: '👮‍♂️ Moderação' }; From 59818f9ff63158c5796dd9faf5310f7d7219581a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 15:48:30 -0300 Subject: [PATCH 037/164] Crowdin Language Update --- languages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/languages b/languages index 1e03281..6444db1 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 1e03281f29507fdc2c8c9ac38233c31f170fa9f9 +Subproject commit 6444db1aedd2d7b35c935d8a0c6429b190350aee From a684cf261c744b11977a219b72b962da34a19b5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 16:40:49 -0300 Subject: [PATCH 038/164] Laguage Fix --- languages | 2 +- src/Events/message.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/languages b/languages index 6444db1..7d77466 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 6444db1aedd2d7b35c935d8a0c6429b190350aee +Subproject commit 7d774664249af55765f91b1ace42689295dbf61d diff --git a/src/Events/message.js b/src/Events/message.js index f0c68a8..8906ead 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -168,7 +168,7 @@ exports.run = async (aruna, message) => { .join(', ') || undefined; if (alts !== undefined) { - message.reply(lang.message.commandNotFound.replace('[command]' | '[alt]', command | alts)); + message.reply(lang.message.commandNotFound.replace('[command]', command).replace('[alt]', alts)); } } } From 2a7a83d2719d03608882f5833069480bd76a218d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 17:08:58 -0300 Subject: [PATCH 039/164] clean message --- src/Events/message.js | 224 ++++++++++++++++++++---------------------- 1 file changed, 106 insertions(+), 118 deletions(-) diff --git a/src/Events/message.js b/src/Events/message.js index 8906ead..319b9f7 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -40,126 +40,120 @@ exports.run = async (aruna, message) => { } } - database.Guilds.findOne({ _id: message.guild.id }, function( - servro, - servidor - ) { - database.Users.findOne({ _id: message.author.id }, async function( - erro, - usuario - ) { - if (!servidor) { - var language = ''; - if (message.guild.region == 'brazil') { - language = 'br'; - } else { - language = config.language; - } - console.log('No Server!'); - var saveG = await new database.Guilds({ - _id: message.guild.id, - language: language - }); - await saveG.save(); - servidor = await database.Guilds.findOne({ _id: message.guild.id }); - } + var guild = await database.Guilds.findOne({ _id: message.guild.id }); + var user = await database.Users.findOne({ _id: message.author.id }); + if (!guild) { + var language = ''; + if (message.guild.region == 'brazil') { + language = 'br'; + } else { + language = config.language; + } + console.log('No Server!'); + var saveG = await new database.Guilds({ + _id: message.guild.id, + language: language + }); + await saveG.save(); + guild = await database.Guilds.findOne({ _id: message.guild.id }); + } - if (!usuario) { - console.log('No User!'); - var isSuper = false; - if (config.superUsersId.includes(message.author.id)) { - isSuper = true; - } - var saveU = await new database.Users({ _id: message.author.id, SUPER: isSuper }); - await saveU.save(); - usuario = await database.Users.findOne({ _id: message.author.id }); - } + if (!user) { + console.log('No User!'); + var isSuper = false; + if (config.superUsersId.includes(message.author.id)) { + isSuper = true; + } + var saveU = await new database.Users({ _id: message.author.id, SUPER: isSuper }); + await saveU.save(); + user = await database.Users.findOne({ _id: message.author.id }); + } - var prefix = servidor.prefix || config.prefix; + var prefix = guild.prefix || config.prefix; - if (usuario.language !== servidor.language && usuario.language !== null) { - language = usuario.language; - } else { - language = language || servidor.language; - } + if (user.language !== guild.language && user.language !== null) { + language = user.language; + } else { + language = language || guild.language; + } - const lang = require(`../../languages/bot/${language}/events.json`); - const langc = require(`../../languages/bot/${language}/commands.json`); - const intL = require(`../../languages/bot/${language}/internal.json`); - - const emojiError = intL.errors.emojiError; - const linkError = intL.errors.linkError; - - const mention = [`<@${aruna.user.id}>`, `<@!${aruna.user.id}>`]; - - mention.find(mention => { - if (!message.guild.members.get(aruna.user.id).hasPermission('USE_EXTERNAL_EMOJIS')) { - return message.reply(emojiError); - } else if (!message.guild.members.get(aruna.user.id).hasPermission('EMBED_LINKS')) { - return message.reply(linkError); - } else if (message.content === mention) { - const embed = new Discord.RichEmbed() - .setAuthor('Quem me chama?') - .setDescription( - `Ah, olá ${message.author.username}, como está? Eu sou a ${aruna.user.username}.\n - Bom, caso queira saber minha função, ela é ajudar seu servidor de várias formas criativas e diferentes!\n - Talvez você não saiba meu prefixo neste servidor e por isso me chamou. Se essa for sua dúvida, ele é \`\`${prefix}\`\`.\n\n - Se você tiver alguma sugestão ou tiver encontrado algum parafuso meu perdido por aí, entre no meu [servidor de suporte](${links.supportServers[0]}) para falar com meu criador.\n\n - Se quiser me adicionar em seu servidor, basta clicar [aqui](${links.invites[0]})!\n\n + const lang = require(`../../languages/bot/${language}/events.json`); + const langc = require(`../../languages/bot/${language}/commands.json`); + const intL = require(`../../languages/bot/${language}/internal.json`); + + const emojiError = intL.errors.emojiError; + const linkError = intL.errors.linkError; + + const mention = [`<@${aruna.user.id}>`, `<@!${aruna.user.id}>`]; + + mention.find(mention => { + if (!message.guild.members.get(aruna.user.id).hasPermission('USE_EXTERNAL_EMOJIS')) { + return message.reply(emojiError); + } else if (!message.guild.members.get(aruna.user.id).hasPermission('EMBED_LINKS')) { + return message.reply(linkError); + } else if (message.content === mention) { + const embed = new Discord.RichEmbed() + .setAuthor('Quem me chama?') + .setDescription( + `Ah, olá ${message.author.username}, como está? Eu sou a ${aruna.user.username}.\n + Bom, caso queira saber minha função, ela é ajudar seu guild de várias formas criativas e diferentes!\n + Talvez você não saiba meu prefixo neste guild e por isso me chamou. Se essa for sua dúvida, ele é \`\`${prefix}\`\`.\n\n + Se você tiver alguma sugestão ou tiver encontrado algum parafuso meu perdido por aí, entre no meu [guild de suporte](${links.supportServers[0]}) para falar com meu criador.\n\n + Se quiser me adicionar em seu guild, basta clicar [aqui](${links.invites[0]})!\n\n E por fim, obrigada por me chamar. Foi ótimo te explicar quem sou <3` - ) - .setColor('#8400ff') - .setTimestamp(); - return message.channel.send(embed); - } + ) + .setColor('#8400ff') + .setTimestamp(); + return message.channel.send(embed); + } + }); + + if (guild.rankEnable === true) { + const rank = await database.Rank.findOne({ + _id: `${message.author.id}-${message.guild.id}` + }); + + if (!rank) { + var saveR = new database.Rank({ + _id: `${message.author.id}-${message.guild.id}`, + user: message.author.id, + xp: 0, + level: 0, + guild: message.guild.id }); - if (servidor.rankEnable === true) { - const rank = await database.Rank.findOne({ - _id: `${message.author.id}-${message.guild.id}` - }); - - if (!rank) { - var saveR = new database.Rank({ - _id: `${message.author.id}-${message.guild.id}`, - user: message.author.id, - xp: 0, - level: 0, - guild: message.guild.id - }); - - saveR.save(); - } - const db = database; - - const xpsystem = require('../utils/rankSystem.js'); - xpsystem.run(aruna, message, db, cooldown, utils, Discord); - } + saveR.save(); + } + const db = database; + + const xpsystem = require('../utils/rankSystem.js'); + xpsystem.run(aruna, message, db, cooldown, utils, Discord); + } - if (message.content.startsWith(prefix)) { - if (message.content === prefix) return; - - const args = message.content - .slice(prefix.length) - .trim() - .split(/ +/g); - const command = args.shift().toLowerCase(); - const ma = message.content.split(' '); - const cmd = ma[0]; - const commandFile = + if (message.content.startsWith(prefix)) { + if (message.content === prefix) return; + + const args = message.content + .slice(prefix.length) + .trim() + .split(/ +/g); + const command = args.shift().toLowerCase(); + const ma = message.content.split(' '); + const cmd = ma[0]; + const commandFile = aruna.commands.get(cmd.slice(prefix.length).toLowerCase()) || aruna.commands.get(aruna.aliases.get(cmd.slice(prefix.length).toLowerCase())); - if (commandFile) { - if (!message.guild.members.get(aruna.user.id).hasPermission('USE_EXTERNAL_EMOJIS')) { - return message.reply(emojiError); - } else if (!message.guild.members.get(aruna.user.id).hasPermission('EMBED_LINKS')) { - return message.reply(linkError); - } - commandFile.run(aruna, message, args, langc, prefix, command); - } else if (!commandFile) { - const alts = + if (commandFile) { + if (!message.guild.members.get(aruna.user.id).hasPermission('USE_EXTERNAL_EMOJIS')) { + return message.reply(emojiError); + } else if (!message.guild.members.get(aruna.user.id).hasPermission('EMBED_LINKS')) { + return message.reply(linkError); + } + commandFile.run(aruna, message, args, langc, prefix, command); + } else if (!commandFile) { + const alts = aruna.commands .filter(c => c.config.name.startsWith(cmd.slice(prefix.length).toLowerCase()) @@ -167,15 +161,9 @@ exports.run = async (aruna, message) => { .map(a => '`' + a.config.name + '`') .join(', ') || undefined; - if (alts !== undefined) { - message.reply(lang.message.commandNotFound.replace('[command]', command).replace('[alt]', alts)); - } - } + if (alts !== undefined) { + message.reply(lang.message.commandNotFound.replace('[command]', command).replace('[alt]', alts)); } - }).catch(e => { - console.log(e); - }); - }).catch(e => { - console.log(e); - }); + } + } }; From 3af6d198e03f84a85f4159a9055fa16500b73ad2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 17:37:22 -0300 Subject: [PATCH 040/164] Mention Texts --- languages | 2 +- src/Events/message.js | 31 +++++++++++++++---------------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/languages b/languages index 7d77466..e95ab38 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 7d774664249af55765f91b1ace42689295dbf61d +Subproject commit e95ab3849fc23ff1463b2c0f619d5d36764a7c36 diff --git a/src/Events/message.js b/src/Events/message.js index 319b9f7..65885a9 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -26,17 +26,17 @@ exports.run = async (aruna, message) => { if (message.channel.type == 'dm') { const dmUser = await database.Users.findOne({ _id: message.author.id }); - const defaultDmIntL = require('../../languages/bot/br/internal.json'); + const defaultDmEventL = require('../../languages/bot/br/internal.json'); if (!dmUser) { - return message.reply(defaultDmIntL.dmError); + return message.reply(defaultDmEventL.message.errors.dmError); } else { - var dmIntL = ''; + var dmEventL; if (dmUser.language == null) { - dmIntL = defaultDmIntL; + dmEventL = defaultDmEventL; } else { - dmIntL = require(`../../languages/bot/${dmUser.language}/internal.json`); + dmEventL = require(`../../languages/bot/${dmUser.language}/internal.json`); } - return message.reply(dmIntL.dmError); + return message.reply(dmEventL.message.errors.dmError); } } @@ -80,10 +80,9 @@ exports.run = async (aruna, message) => { const lang = require(`../../languages/bot/${language}/events.json`); const langc = require(`../../languages/bot/${language}/commands.json`); - const intL = require(`../../languages/bot/${language}/internal.json`); - const emojiError = intL.errors.emojiError; - const linkError = intL.errors.linkError; + const emojiError = lang.message.errors.emojiError; + const linkError = lang.message.errors.linkError; const mention = [`<@${aruna.user.id}>`, `<@!${aruna.user.id}>`]; @@ -94,14 +93,14 @@ exports.run = async (aruna, message) => { return message.reply(linkError); } else if (message.content === mention) { const embed = new Discord.RichEmbed() - .setAuthor('Quem me chama?') + .setTitle(language.message.mention.title) .setDescription( - `Ah, olá ${message.author.username}, como está? Eu sou a ${aruna.user.username}.\n - Bom, caso queira saber minha função, ela é ajudar seu guild de várias formas criativas e diferentes!\n - Talvez você não saiba meu prefixo neste guild e por isso me chamou. Se essa for sua dúvida, ele é \`\`${prefix}\`\`.\n\n - Se você tiver alguma sugestão ou tiver encontrado algum parafuso meu perdido por aí, entre no meu [guild de suporte](${links.supportServers[0]}) para falar com meu criador.\n\n - Se quiser me adicionar em seu guild, basta clicar [aqui](${links.invites[0]})!\n\n - E por fim, obrigada por me chamar. Foi ótimo te explicar quem sou <3` + `${language.message.mention.line1.replace('[username]', message.author.username).replace('[me]', aruna.user.username)}\n + ${language.message.mention.line2}\n + ${language.message.mention.line3.replace('[prefix]', prefix)}\n\n + ${language.message.mention.line4.replace('[url]', links.supportServers[0])}\n\n + ${language.message.mention.line5.replace('[url]', links.invites[0])}\n\n + ${language.message.mention.line6}` ) .setColor('#8400ff') .setTimestamp(); From cbff4e20fcf74864f4ec5a31aa70e7a654c2caeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 17:47:45 -0300 Subject: [PATCH 041/164] stupidity fix --- languages | 2 +- src/Events/message.js | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/languages b/languages index e95ab38..72ffd01 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit e95ab3849fc23ff1463b2c0f619d5d36764a7c36 +Subproject commit 72ffd01e189e72c51a5c46f6277e3d33b3b3347f diff --git a/src/Events/message.js b/src/Events/message.js index 65885a9..019b06e 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -93,14 +93,14 @@ exports.run = async (aruna, message) => { return message.reply(linkError); } else if (message.content === mention) { const embed = new Discord.RichEmbed() - .setTitle(language.message.mention.title) + .setTitle(lang.message.mention.title) .setDescription( - `${language.message.mention.line1.replace('[username]', message.author.username).replace('[me]', aruna.user.username)}\n - ${language.message.mention.line2}\n - ${language.message.mention.line3.replace('[prefix]', prefix)}\n\n - ${language.message.mention.line4.replace('[url]', links.supportServers[0])}\n\n - ${language.message.mention.line5.replace('[url]', links.invites[0])}\n\n - ${language.message.mention.line6}` + `${lang.message.mention.line1.replace('[username]', message.author.username).replace('[me]', aruna.user.username)}\n + ${lang.message.mention.line2}\n + ${lang.message.mention.line3.replace('[prefix]', prefix)}\n\n + ${lang.message.mention.line4.replace('[url]', links.supportServers[0])}\n\n + ${lang.message.mention.line5.replace('[url]', links.invites[0])}\n\n + ${lang.message.mention.line6}` ) .setColor('#8400ff') .setTimestamp(); From 7466f3211ba8e8bf6497e9f7749b5e6c3df5eafa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 18:04:08 -0300 Subject: [PATCH 042/164] Update languages --- languages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/languages b/languages index 72ffd01..2d844a8 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 72ffd01e189e72c51a5c46f6277e3d33b3b3347f +Subproject commit 2d844a8d68b3e1808120f96f1b1e221844ba6a37 From a3d58dae2cf352cdfc1b385d9db627299c3f30b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 18:06:43 -0300 Subject: [PATCH 043/164] fix package-lock.json --- .npmrc | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .npmrc diff --git a/.npmrc b/.npmrc deleted file mode 100644 index 9cf9495..0000000 --- a/.npmrc +++ /dev/null @@ -1 +0,0 @@ -package-lock=false \ No newline at end of file From be7758b4f8f5565122a45ec6cbb624c7d3da6497 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 18:18:46 -0300 Subject: [PATCH 044/164] Update README.md --- README.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index ae860fb..8fdb444 100644 --- a/README.md +++ b/README.md @@ -38,8 +38,9 @@ Você pode obter suporte sobre a Aruna [clicando aqui](https://discord.gg/NqbBgE ## Como ajudar? -No momento, existe apenas 1 repositório [na nossa organização](https://github.com/ArunaBot); Este é, +No momento, temos 2 repositórios [na nossa organização](https://github.com/ArunaBot); Estes são, * [Aruna](https://github.com/ArunaBot/Aruna): Código-fonte da Aruna ("backend"), isto inclui todo o bot em si. +* [ArunaLanguages](https://github.com/ArunaBot/ArunaLanguages): Os idiomas da aruna, toda e qualquer tradução vem de lá. ### 💵 Como Doar? @@ -55,13 +56,14 @@ Você também pode hospedar a Aruna você mesmo (afinal, é por isso que se cham * Para evitar confusões e problemas, você **não pode** utilizar o nome ou a personagem "Aruna" ou nomes parecidos na sua versão selfhosted. Nós [recomendamos utilizar a versão pública da Aruna](https://discordapp.com/oauth2/authorize?client_id=593303574725787657&scope=bot&permissions=2146954751), mas se você *realmente* quiser hospedar ou ajudar a desenvolver a Aruna, siga os seguintes passos: -1. Tenha o [NODE 12.16.2 (ou superior)](https://nodejs.org/en/) instalado na sua máquina e certifique-se que o node e o npm (incluso no node) está acessível pelo terminal. (Tente executar `node` e `npm` no terminal, caso não funcione, procure reinstalar o node ou reiniciar a máquina). + +1. Tenha o [NODE 12.16.2 (ou superior)](https://nodejs.org/en/) instalado na sua máquina e certifique-se que o node e o npm (incluso no nodejs) est~so acessíveis pelo terminal. (Tente executar `node -v` e `npm -v` no terminal, caso não funcionem, procure reinstalar o nodejs ou reiniciar a máquina). 2. Tenha o MongoDB instalado na sua máquina. (Ou se prefereir, pode usar o [MongoDB Online](https://mongodb.com/)). 3. Tenha o `git-shell` ou o `git-cli` instalados. No Windows você pode utilizar o `Git Bash`. 4. Caso você precise ou fazer modificações no código-fonte, é recomendado utilizar o [Visual Studio Code](https://code.visualstudio.com/). -5. Faça `git clone https://github.com/ArunaBot/Aruna.git` em alguma pasta no seu computador. +5. Execute o comando `git clone https://github.com/ArunaBot/Aruna.git` usando seu terminal git em uma pasta vazia do seu computador. 6. Agora, usando o processador de comandos do seu sistema operacional (CMD, POWERSHELL, Terminal, etc), entre na pasta criada e utilize `npm install`. -8. Ao terminar de fazer o download de tudo, verifique se foi criado a pasta `node modules`. +8. Ao terminar de fazer o download de tudo, verifique se foi criado a pasta `node_modules`. 9. Caso essa pasta exista e tenha sido criado o arquivo `package-lock.json` significa que tudo deu certo! 10. Agora, retire o `.` da pasta `.Configs`. 11. Depois, abra o arquivo `general` e preencha o campo `token` com o token do seu bot, o campo `mongoose` com o link de acesso ao mongoose e por fim, altere o campo `superUsersId` para o id do seu usuário. @@ -78,11 +80,11 @@ O seu código não pode ser algo "gambiarra", meu código pode ter gambiarras ma Você precisa pensar "será que alguém iria utilizar isto?", se você criar um comando que só seja útil no seu servidor, provavelmente eu irei negar o seu Pull Request. -Funcionalidades (como comandos) relacionados a coisas NSFW **não serão** adicionadas na Aruna e seu Pull Request será negado, eu prefiro que as pessoas pensem que ela é um bot que faz memes, ao invés de um bot que fica mandando coisas NSFW no chat. +Funcionalidades (como comandos) relacionados a coisas NSFW **não serão** adicionadas na Aruna e seu Pull Request será negado. ## Dependências -A Aruna utiliza várias [dependências no código-fonte dela](https://github.com/ArunaBot/Aruna/blob/stable/package.json), obrigado a todos os mantenedores das dependências! Sem vocês, a Aruna não iria existir (ou teria várias funcionalidades reduzidas ou talvez até inexistentes!). +A Aruna utiliza várias [dependências no código-fonte](https://github.com/ArunaBot/Aruna/blob/stable/package.json), obrigado a todos os mantenedores das dependências! Sem vocês, a Aruna não iria existir (ou teria várias funcionalidades reduzidas ou até inexistentes!). | Nome | Mantenedor | | ------------- | ------------- | From f923f079724e9bd29b3f7017a165ba509926f84a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 18:36:44 -0300 Subject: [PATCH 045/164] Prefix Deprecation Warn --- languages | 2 +- src/Commands/prefix.js | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/languages b/languages index 2d844a8..6e9c247 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 2d844a8d68b3e1808120f96f1b1e221844ba6a37 +Subproject commit 6e9c2473ef2765f0b73baf98aa515e24c7f6937b diff --git a/src/Commands/prefix.js b/src/Commands/prefix.js index e699f00..de99548 100644 --- a/src/Commands/prefix.js +++ b/src/Commands/prefix.js @@ -18,9 +18,13 @@ const Discord = require('discord.js'); const { database, config } = require('../../Configs'); +var language = require(`../../languages/bot/${config.language}/commands.json`); /** @deprecated This Will Be Removed In A future Version */ -exports.run = async (aruna, message, args) => { +exports.run = async (aruna, message, args, langc) => { + if (langc) { + language = langc; + } const guild = await database.Guilds.findOne({ _id: message.guild.id }); const nopermission = new Discord.RichEmbed() @@ -59,11 +63,11 @@ exports.run = async (aruna, message, args) => { .setDescription(`Prefixo definido para \`${args[1]}\` com sucesso!`) .setTimestamp(); const deprecatedWarn = new Discord.RichEmbed() - .setTitle('🚫FUNÇÃO OBSOLETA🚫') - .setDescription(`**AVISO: ESSA É UMA FUNÇÃO ANTIGA E SERÁ REMOVIDA EM BREVE.**\n - Para evitar transtornos, é recomendado usar \`${guild.prefix}config prefix \`.`) + .setTitle(language.generic.embed.deprecated.title) + .setDescription(`${language.generic.embed.deprecated.description1}\n + ${language.generic.embed.deprecated.description2.replace('[alternative]', language.prefix.deprecatedAlternative.replace('[prefix]', guild.prefix))}`) .setColor('#fcec03') - .setFooter('Deprecated Command Warn') + .setFooter(language.generic.embed.deprecated.footer) .setTimestamp(); message.channel.send(deprecatedWarn).then(msg => msg.delete(60000)); From 146dd8d4d50c3d937174bcb80d9ce56e1ca879b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 20:30:57 -0300 Subject: [PATCH 046/164] Use Global Permission Translation --- src/Events/message.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Events/message.js b/src/Events/message.js index 019b06e..807c1e5 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -81,8 +81,8 @@ exports.run = async (aruna, message) => { const lang = require(`../../languages/bot/${language}/events.json`); const langc = require(`../../languages/bot/${language}/commands.json`); - const emojiError = lang.message.errors.emojiError; - const linkError = lang.message.errors.linkError; + const emojiError = lang.message.errors.emojiError.replace('[externalEmojis]', langc.generic.permissions.useExternalEmojis); + const linkError = lang.message.errors.linkError.replace('[sendLinks]', langc.generic.permissions.embedLinks); const mention = [`<@${aruna.user.id}>`, `<@!${aruna.user.id}>`]; From 235d250b62ae971812acb939bde49ad6e2bc30d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 21:12:15 -0300 Subject: [PATCH 047/164] Fix #21 --- languages | 2 +- src/Events/message.js | 13 +++++++------ src/Utils/index.js | 10 +++++----- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/languages b/languages index 6e9c247..8e77315 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 6e9c2473ef2765f0b73baf98aa515e24c7f6937b +Subproject commit 8e77315d90948908d557a5bb399eebd9b7a851f9 diff --git a/src/Events/message.js b/src/Events/message.js index 807c1e5..69cc020 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -19,7 +19,7 @@ const Discord = require('discord.js'); var { database, config, links } = require('../../Configs'); -const { utils, cooldown } = require('../Utils'); +const { cooldown, utils } = require('../Utils'); exports.run = async (aruna, message) => { if (message.author.bot) return; @@ -87,11 +87,12 @@ exports.run = async (aruna, message) => { const mention = [`<@${aruna.user.id}>`, `<@!${aruna.user.id}>`]; mention.find(mention => { - if (!message.guild.members.get(aruna.user.id).hasPermission('USE_EXTERNAL_EMOJIS')) { - return message.reply(emojiError); - } else if (!message.guild.members.get(aruna.user.id).hasPermission('EMBED_LINKS')) { - return message.reply(linkError); - } else if (message.content === mention) { + if (message.content === mention) { + if (!message.guild.members.get(aruna.user.id).hasPermission('USE_EXTERNAL_EMOJIS')) { + return message.reply(emojiError); + } else if (!message.guild.members.get(aruna.user.id).hasPermission('EMBED_LINKS')) { + return message.reply(linkError); + } const embed = new Discord.RichEmbed() .setTitle(lang.message.mention.title) .setDescription( diff --git a/src/Utils/index.js b/src/Utils/index.js index 3805416..ed983d8 100644 --- a/src/Utils/index.js +++ b/src/Utils/index.js @@ -17,11 +17,11 @@ */ module.exports = { - utils: require('./utils.js'), - ranksystem: require('./rankSystem.js'), - emojis: require('./emojis.js'), - emoji: require('./emojis.js'), activeticket: require('./activeTicket.js'), cooldown: require('./cooldown.js'), - date: require('./date.js') + date: require('./date.js'), + emoji: require('./emojis.js'), + emojis: require('./emojis.js'), + ranksystem: require('./rankSystem.js'), + utils: require('./utils.js') }; \ No newline at end of file From a8473bf1067300913625a22c65e9b9fc7af5ae67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 21:44:40 -0300 Subject: [PATCH 048/164] Prefix Command Strings --- src/Commands/prefix.js | 53 ++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 28 deletions(-) diff --git a/src/Commands/prefix.js b/src/Commands/prefix.js index de99548..6308734 100644 --- a/src/Commands/prefix.js +++ b/src/Commands/prefix.js @@ -28,39 +28,35 @@ exports.run = async (aruna, message, args, langc) => { const guild = await database.Guilds.findOne({ _id: message.guild.id }); const nopermission = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Você não possui a permissão de `Gerenciar Servidor`') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setDescription(language.prefix.embed.error.noperm.replace('[manageGuild]', language.generic.permissions.manageGuild)) .setTimestamp(); - const prefixError = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setDescription( - 'Insira se você deseja definir um prefixo (set) ou se deseja voltar ao padrão (remove).' - ) + const error1 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) + .setDescription(language.prefix.embed.error.description1) .setTimestamp(); - const prefixError2 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Você deve inserir o prefixo desejado!') + const error2 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setDescription(language.prefix.embed.error.description2) .setTimestamp(); - const prefixError3 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('O prefixo atual já é o prefixo padrão!') + const error3 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setDescription(language.prefix.embed.error.description3) .setTimestamp(); const prefixRemove = new Discord.RichEmbed() .setColor([0, 255, 0]) - .setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL) - .setFooter('Sucesso!') - .setDescription( - `Prefixo redefinido para \`${config.prefix}\` com sucesso!` - ) + .setAuthor(language.generic.embed.sucess.title.replace('[username]', message.author.username), message.author.avatarURL) + .setFooter(language.generic.embed.sucess.title) + .setDescription(language.prefix.embed.sucess.description1.replace('[prefix]', config.prefix)) .setTimestamp(); const prefixDefinido = new Discord.RichEmbed() .setColor([0, 255, 0]) - .setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL) - .setFooter('Sucesso!') - .setDescription(`Prefixo definido para \`${args[1]}\` com sucesso!`) + .setAuthor(language.generic.embed.sucess.title.replace('[username]', message.author.username), message.author.avatarURL) + .setFooter(language.generic.embed.sucess.title) + .setDescription(language.prefix.embed.sucess.description2.replace('[prefix]', args[1])) .setTimestamp(); const deprecatedWarn = new Discord.RichEmbed() .setTitle(language.generic.embed.deprecated.title) @@ -74,14 +70,14 @@ exports.run = async (aruna, message, args, langc) => { if (!message.member.hasPermission('MANAGE_GUILD')) return message.channel.send(nopermission); - if (!args[0]) return message.channel.send(prefixError); + if (!args[0]) return message.channel.send(error1); if (args[0] !== 'set' && args[0] !== 'remove') - return message.channel.send(prefixError); + return message.channel.send(error1); if (args[0] === 'remove') { if (guild.prefix === config.prefix) - return message.channel.send(prefixError3); + return message.channel.send(error3); guild.prefix = config.prefix; guild.save(); @@ -89,7 +85,7 @@ exports.run = async (aruna, message, args, langc) => { } if (args[0] === 'set') { - if (!args[1]) return message.channel.send(prefixError2); + if (!args[1]) return message.channel.send(error2); guild.prefix = args[1]; guild.save(); @@ -99,6 +95,7 @@ exports.run = async (aruna, message, args, langc) => { exports.config = { name: 'prefix', + description: language.prefix.config.description, aliases: ['prefixo', 'pref'], category: '⚙️ Configurações' }; From 5f06690105f252c5ddc837543b1840be6c3fc2c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 22:40:52 -0300 Subject: [PATCH 049/164] Fix #23 and add error strings --- languages | 2 +- src/Commands/prefix.js | 1 + src/Commands/say.js | 44 ++++++++++++++++++++++++++++++++++++++---- 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/languages b/languages index 8e77315..a9d8fd1 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 8e77315d90948908d557a5bb399eebd9b7a851f9 +Subproject commit a9d8fd1243a48f31c4fce9aa5d603ed1af70ba77 diff --git a/src/Commands/prefix.js b/src/Commands/prefix.js index 6308734..f7c903c 100644 --- a/src/Commands/prefix.js +++ b/src/Commands/prefix.js @@ -34,6 +34,7 @@ exports.run = async (aruna, message, args, langc) => { .setTimestamp(); const error1 = new Discord.RichEmbed() .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) .setDescription(language.prefix.embed.error.description1) .setTimestamp(); const error2 = new Discord.RichEmbed() diff --git a/src/Commands/say.js b/src/Commands/say.js index 3e81dbd..6321b5a 100644 --- a/src/Commands/say.js +++ b/src/Commands/say.js @@ -16,15 +16,51 @@ along with this program. If not, see . */ -exports.run = async (aruna, message, prefix, comando) => { - var content = message.content.slice(comando.length).trim(); - content = content.slice(4).trim(); +const Discord = require('discord.js'); +const { config } = require('../../Configs'); + +var language = require(`../../languages/bot/${config.language}/commands.json`); + +exports.run = async (aruna, message, args, langc, prefix, comando) => { + if (langc) { + language = langc; + } + + const error1 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) + .setDescription(language.say.embed.error.description1.replace('[manageMessages]', language.generic.permissions.manageMessages)) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setTimestamp(); + const error2 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) + .setDescription(language.say.embed.error.description2.replace('[manageMessages]', language.generic.permissions.manageMessages)) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setTimestamp(); + const error3 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) + .setDescription(language.say.embed.error.description3) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setTimestamp(); + + if (!message.member.hasPermission('MANAGE_MESSAGES')) + return message.channel.send(error1); + + if (!message.guild.members.get(aruna.user.id).hasPermission('MANAGE_MESSAGES')) + return message.channel.send(error2); + + var content = message.content.slice(comando.length + prefix.length).trim(); + + if (!content) { + return message.channel.send(error3); + } + await message.delete(); await message.channel.send(content); }; exports.config = { name: 'say', - aliases: [], + description: language.say.config.description, + aliases: ['falar'], category: '🎉 Entretenimento' }; \ No newline at end of file From d9a210c1620cc087ac4f393e1234640fc2b211b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 22:43:32 -0300 Subject: [PATCH 050/164] Fix Readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8fdb444..f8a6073 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ Você também pode hospedar a Aruna você mesmo (afinal, é por isso que se cham Nós [recomendamos utilizar a versão pública da Aruna](https://discordapp.com/oauth2/authorize?client_id=593303574725787657&scope=bot&permissions=2146954751), mas se você *realmente* quiser hospedar ou ajudar a desenvolver a Aruna, siga os seguintes passos: -1. Tenha o [NODE 12.16.2 (ou superior)](https://nodejs.org/en/) instalado na sua máquina e certifique-se que o node e o npm (incluso no nodejs) est~so acessíveis pelo terminal. (Tente executar `node -v` e `npm -v` no terminal, caso não funcionem, procure reinstalar o nodejs ou reiniciar a máquina). +1. Tenha o [NODE 12.16.2 (ou superior)](https://nodejs.org/en/) instalado na sua máquina e certifique-se que o node e o npm (incluso no nodejs) estão acessíveis pelo terminal. (Tente executar `node -v` e `npm -v` no terminal, caso não funcionem, procure reinstalar o nodejs ou reiniciar a máquina). 2. Tenha o MongoDB instalado na sua máquina. (Ou se prefereir, pode usar o [MongoDB Online](https://mongodb.com/)). 3. Tenha o `git-shell` ou o `git-cli` instalados. No Windows você pode utilizar o `Git Bash`. 4. Caso você precise ou fazer modificações no código-fonte, é recomendado utilizar o [Visual Studio Code](https://code.visualstudio.com/). From ae955dd60763b9060032a0f8b6ab3a2875c5631a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 22:52:20 -0300 Subject: [PATCH 051/164] Minor Bugs Fix --- src/Commands/clear.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/Commands/clear.js b/src/Commands/clear.js index aa5c5d5..5167b3a 100644 --- a/src/Commands/clear.js +++ b/src/Commands/clear.js @@ -29,7 +29,7 @@ const Discord = require('discord.js'); const { config } = require('../../Configs'); var language = require(`../../languages/bot/${config.language}/commands.json`); -exports.run = async (client, message, args, langc) => { +exports.run = async (aruna, message, args, langc) => { if (langc) { language = langc; @@ -59,12 +59,11 @@ exports.run = async (client, message, args, langc) => { .setDescription(language.clear.embed.error.description4) .setTimestamp(); - if ( - !message.guild.members.get(client.user.id).hasPermission('MANAGE_MESSAGES') - ) - return message.channel.send(error2); if (!message.member.hasPermission('MANAGE_MESSAGES')) return message.channel.send(error1); + if (!message.guild.members.get(aruna.user.id).hasPermission('MANAGE_MESSAGES')) + return message.channel.send(error2); + if (!args[0]) return message.channel.send(error3); if (args[0] > 100 || args[0] <= 1) From 7cb1e47397b9128918667a76465f3e46bbe4806c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 22:53:00 -0300 Subject: [PATCH 052/164] Fix --- src/Commands/clear.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Commands/clear.js b/src/Commands/clear.js index 5167b3a..317dced 100644 --- a/src/Commands/clear.js +++ b/src/Commands/clear.js @@ -63,9 +63,10 @@ exports.run = async (aruna, message, args, langc) => { return message.channel.send(error1); if (!message.guild.members.get(aruna.user.id).hasPermission('MANAGE_MESSAGES')) return message.channel.send(error2); - + if (!args[0]) return message.channel.send(error3); + if (args[0] > 100 || args[0] <= 1) return message.channel.send(error4); From da20bb69895bb61b96e2146a5b1b0fea63434ef6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 23:07:21 -0300 Subject: [PATCH 053/164] Shard Master Translation --- src/sharding.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sharding.js b/src/sharding.js index 1f59e9f..3ae47e5 100644 --- a/src/sharding.js +++ b/src/sharding.js @@ -28,7 +28,7 @@ const manager = new Discord.ShardingManager(`./${pkg.main}`, { totalShards: config.sharding.totalShards }); -const logPrefix = `${chalk.gray('[')}${chalk.yellow('SHARD MASTER')}${chalk.gray(']')}`; +const logPrefix = `${chalk.gray('[')}${chalk.yellow(language.shard.master)}${chalk.gray(']')}`; manager.on('launch', shard => console.log(`${logPrefix} ${shard.id} (${shard.id + 1}/${manager.totalShards}) ${language.shard.launch.replace('[shard] ', '')}`)); process.on('exit', code => console.log(`${logPrefix} ${chalk.red(language.shard.exit)} ${language.shard.exitCode}`, code)); From 6d9d3729fd83ff2555d09b882671047552432414 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 10 Aug 2020 23:20:03 -0300 Subject: [PATCH 054/164] Default Language --- .Configs/general.js | 1 + languages | 2 +- src/Events/message.js | 2 +- src/Events/ready.js | 6 ++++-- src/main.js | 5 +++-- 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.Configs/general.js b/.Configs/general.js index 21fbc48..da29556 100644 --- a/.Configs/general.js +++ b/.Configs/general.js @@ -22,6 +22,7 @@ module.exports = { mongoose: '', superUsersId: ['281515925960654848'], // Your User ID Comes Here! language: 'br', + defaultLanguage: 'us', sharding: { totalShards: 'auto', delay: 7500 diff --git a/languages b/languages index a9d8fd1..7d6e338 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit a9d8fd1243a48f31c4fce9aa5d603ed1af70ba77 +Subproject commit 7d6e338ef461da261d18ef58bda481ad1f95f137 diff --git a/src/Events/message.js b/src/Events/message.js index 69cc020..f2f7ee8 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -47,7 +47,7 @@ exports.run = async (aruna, message) => { if (message.guild.region == 'brazil') { language = 'br'; } else { - language = config.language; + language = config.defaultLanguage; } console.log('No Server!'); var saveG = await new database.Guilds({ diff --git a/src/Events/ready.js b/src/Events/ready.js index ed765f4..530ff1f 100644 --- a/src/Events/ready.js +++ b/src/Events/ready.js @@ -20,7 +20,9 @@ const pkg = require('../../package.json'); const chalk = require('chalk'); -const { apiKeys, database } = require('../../Configs'); +const { apiKeys, config, database } = require('../../Configs'); + +const language = require(`../languages/bot/${config.language}/internal.json`); exports.run = async (aruna) => { log('Conectado!'); @@ -87,7 +89,7 @@ exports.run = async (aruna) => { }, 15000); function logPrefix() { - return `${chalk.gray('[')}${isSharded() ? `SHARD ${chalk.blue(aruna.shard.id)}` : aruna.user.username}${chalk.gray(']')}`; + return `${chalk.gray('[')}${isSharded() ? `${language.generic.shard} ${chalk.blue(aruna.shard.id)}` : aruna.user.username}${chalk.gray(']')}`; } function log(...a) { diff --git a/src/main.js b/src/main.js index 5b0bace..4eeca41 100644 --- a/src/main.js +++ b/src/main.js @@ -23,6 +23,7 @@ const Discord = require('discord.js'); const fs = require('fs'); const { config } = require('../Configs'); const chalk = require('chalk'); + const language = require(`../languages/bot/${config.language}/internal.json`); const aruna = new Discord.Client(); @@ -43,7 +44,7 @@ fs.readdir('./src/Commands/', (err, files) => { if (err) return error(`[${language.main.error}] => ${err}`); const jsfile = files.filter(f => f.split('.').pop() === 'js'); if (jsfile.length <= 0) { - return warn(`[${language.main.commands}] Not Found!`); + return warn(`[${language.main.commands}] ${language.generic.notFound}`); } jsfile.forEach(f => { const pull = require(`./Commands/${f}`); @@ -57,7 +58,7 @@ fs.readdir('./src/Commands/', (err, files) => { function logPrefix() { - return `${chalk.gray('[')}${isSharded() ? `SHARD ${chalk.blue(aruna.shard.id)}` : aruna.user.username}${chalk.gray(']')}`; + return `${chalk.gray('[')}${isSharded() ? `${language.generic.shard} ${chalk.blue(aruna.shard.id)}` : aruna.user.username}${chalk.gray(']')}`; } function log(...a) { From 1040ca0307c64957310c12ab5fd8902e241a77b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Tue, 11 Aug 2020 10:48:49 -0300 Subject: [PATCH 055/164] Fix Idle Count ( #24 ) --- src/Commands/serverinfo.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Commands/serverinfo.js b/src/Commands/serverinfo.js index 56c2ccf..624b9c5 100644 --- a/src/Commands/serverinfo.js +++ b/src/Commands/serverinfo.js @@ -90,7 +90,7 @@ exports.run = async (aruna, message) => { `${status['online']}: ${ message.guild.members.filter(m => m.presence.status === 'online').size }\n${status['idle']}: ${ - message.guild.members.filter(m => m.presence.status === 'away').size + message.guild.members.filter(m => m.presence.status === 'idle').size }\n${status['dnd']}: ${ message.guild.members.filter(m => m.presence.status === 'dnd').size }\n${status['offline']}: ${ From 6457d889ba2f36445f073d142303026ed04b2c40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Tue, 11 Aug 2020 10:53:03 -0300 Subject: [PATCH 056/164] Fix Language Path --- src/Events/ready.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Events/ready.js b/src/Events/ready.js index 530ff1f..9df3a78 100644 --- a/src/Events/ready.js +++ b/src/Events/ready.js @@ -22,7 +22,7 @@ const pkg = require('../../package.json'); const chalk = require('chalk'); const { apiKeys, config, database } = require('../../Configs'); -const language = require(`../languages/bot/${config.language}/internal.json`); +const language = require(`../../languages/bot/${config.language}/internal.json`); exports.run = async (aruna) => { log('Conectado!'); From a912a273cce28310406bfa2e3f3dfbcdeafa0f50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Tue, 11 Aug 2020 18:26:46 -0300 Subject: [PATCH 057/164] Initialization strings --- languages | 2 +- package.json | 2 +- src/main.js | 18 +++++++++++++++--- src/sharding.js | 16 ++++++++++++---- 4 files changed, 29 insertions(+), 9 deletions(-) diff --git a/languages b/languages index 7d6e338..e12393c 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 7d6e338ef461da261d18ef58bda481ad1f95f137 +Subproject commit e12393cefbc0201030f155f151d14c2c161456ea diff --git a/package.json b/package.json index 49e82d1..defada0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "arunabot", - "version": "4.3.0", + "version": "4.3.0-CANARY", "description": "A nova e melhorada aruna!", "main": "src/main.js", "scripts": { diff --git a/src/main.js b/src/main.js index 4eeca41..40f0201 100644 --- a/src/main.js +++ b/src/main.js @@ -23,9 +23,17 @@ const Discord = require('discord.js'); const fs = require('fs'); const { config } = require('../Configs'); const chalk = require('chalk'); +const pkg = require('../package.json'); const language = require(`../languages/bot/${config.language}/internal.json`); +const infoPrefix = `${chalk.gray('[')}${chalk.green(language.generic.base.toUpperCase())}${chalk.gray(']')}`; +const errorPrefix = `${chalk.gray('[')}${chalk.red(language.generic.base.toUpperCase())}${chalk.gray(']')}`; + +console.log(language.initialization.initializing.replace('[prefix]', infoPrefix)); +console.log(`${infoPrefix} ${language.initialization.language.replace('[language]', chalk.yellow(config.language)).replace('[default]', chalk.yellow(config.defaultLanguage))}`); +console.log(`${infoPrefix} ${language.initialization.version.replace('[version]', pkg.version)}`); + const aruna = new Discord.Client(); aruna.commands = new Discord.Collection(); aruna.aliases = new Discord.Collection(); @@ -62,7 +70,7 @@ function logPrefix() { } function log(...a) { - return console.log(logPrefix(), ...a); + return console.log(infoPrefix, logPrefix(), ...a); } function warn(...a) { @@ -70,7 +78,7 @@ function warn(...a) { } function error(...a) { - return console.error(logPrefix(), chalk.red(...a)); + return console.error(errorPrefix, logPrefix(), chalk.red(...a)); } // eslint-disable-next-line no-unused-vars @@ -82,4 +90,8 @@ function isSharded() { return !!aruna.shard; } -aruna.login(config.token); \ No newline at end of file +aruna.login(config.token).then(() => { + console.log(`${infoPrefix} ${language.initialization.complete}`) +}).catch(e => { + console.exception(`${errorPrefix} ${language.initialization.fail} ${e}`) +}); \ No newline at end of file diff --git a/src/sharding.js b/src/sharding.js index 3ae47e5..ad03e91 100644 --- a/src/sharding.js +++ b/src/sharding.js @@ -28,12 +28,20 @@ const manager = new Discord.ShardingManager(`./${pkg.main}`, { totalShards: config.sharding.totalShards }); +const infoPrefix = `${chalk.gray('[')}${chalk.green(language.generic.core.toUpperCase())}${chalk.gray(']')}`; +const errorPrefix = `${chalk.gray('[')}${chalk.red(language.generic.core.toUpperCase())}${chalk.gray(']')}`; const logPrefix = `${chalk.gray('[')}${chalk.yellow(language.shard.master)}${chalk.gray(']')}`; -manager.on('launch', shard => console.log(`${logPrefix} ${shard.id} (${shard.id + 1}/${manager.totalShards}) ${language.shard.launch.replace('[shard] ', '')}`)); -process.on('exit', code => console.log(`${logPrefix} ${chalk.red(language.shard.exit)} ${language.shard.exitCode}`, code)); +console.log(language.initialization.initializing.replace('[prefix]', infoPrefix)); -console.log(language.shard.startGeneration.replace('[logPrefix]', logPrefix)); +manager.on('launch', shard => console.log(`${infoPrefix} ${logPrefix} ${shard.id} (${shard.id + 1}/${manager.totalShards}) ${language.shard.launch.replace('[shard] ', '')}`)); +process.on('exit', code => { + console.error(`${errorPrefix} ${language.initialization.fail}`) + console.exception(`${errorPrefix} ${logPrefix} ${chalk.red(language.shard.exit)} ${language.shard.exitCode}`, code) +}); + +console.log(language.shard.startGeneration.replace('[logPrefix]', `${infoPrefix} ${logPrefix}`)); manager.spawn(config.sharding.totalShards, config.sharding.delay).then(() => { - console.log(`${logPrefix} ${chalk.green(language.shard.finishGeneration)}`); + console.log(`${infoPrefix} ${logPrefix} ${chalk.green(language.shard.finishGeneration)}`); + console.log(`${infoPrefix} ${language.initialization.complete}`) }); \ No newline at end of file From 5720cefa088dbe36d5da07400acaa97ab5ce1ea4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Tue, 11 Aug 2020 18:33:32 -0300 Subject: [PATCH 058/164] Fix #25 --- src/Events/message.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Events/message.js b/src/Events/message.js index f2f7ee8..096e29e 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -141,6 +141,7 @@ exports.run = async (aruna, message) => { const command = args.shift().toLowerCase(); const ma = message.content.split(' '); const cmd = ma[0]; + if (cmd == prefix) return; const commandFile = aruna.commands.get(cmd.slice(prefix.length).toLowerCase()) || aruna.commands.get(aruna.aliases.get(cmd.slice(prefix.length).toLowerCase())); From 52b6b54b50114cc34b78e52ccb162f7fa8f8ec00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Fri, 14 Aug 2020 14:18:36 -0300 Subject: [PATCH 059/164] Ready and UpRank Strings --- .Configs/links.js | 9 +++++---- src/Commands/avatar.js | 1 + src/Events/message.js | 2 +- src/Events/ready.js | 23 ++++++++++++++--------- src/Utils/rankSystem.js | 15 +++++---------- src/main.js | 4 ++-- 6 files changed, 28 insertions(+), 26 deletions(-) diff --git a/.Configs/links.js b/.Configs/links.js index 48d4c95..0dae732 100644 --- a/.Configs/links.js +++ b/.Configs/links.js @@ -18,9 +18,10 @@ */ module.exports = { - supportServers: [''], - invites: [''], donate: [''], - website: '', - trelloBoard: '' + invites: [''], + supportServers: [''], + trelloBoard: '', + twitch: 'https://www.twitch.tv/lobometalurgico', // Required + website: '' }; \ No newline at end of file diff --git a/src/Commands/avatar.js b/src/Commands/avatar.js index 3932b94..c069d8a 100644 --- a/src/Commands/avatar.js +++ b/src/Commands/avatar.js @@ -39,6 +39,7 @@ exports.run = (aruna, message, args, langc) => { .setTimestamp(); message.channel.send(embed); }; + exports.config = { name: 'avatar', aliases: [''], diff --git a/src/Events/message.js b/src/Events/message.js index 096e29e..2234812 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -128,7 +128,7 @@ exports.run = async (aruna, message) => { const db = database; const xpsystem = require('../utils/rankSystem.js'); - xpsystem.run(aruna, message, db, cooldown, utils, Discord); + xpsystem.run(aruna, message, lang, langc, db, cooldown, utils, Discord); } if (message.content.startsWith(prefix)) { diff --git a/src/Events/ready.js b/src/Events/ready.js index 9df3a78..0e32da8 100644 --- a/src/Events/ready.js +++ b/src/Events/ready.js @@ -23,9 +23,10 @@ const chalk = require('chalk'); const { apiKeys, config, database } = require('../../Configs'); const language = require(`../../languages/bot/${config.language}/internal.json`); +const langE = require(`../../languages/bot/${config.defaultLanguage}/events.json`); exports.run = async (aruna) => { - log('Conectado!'); + log(language.ready.connected); let totalSeconds = (aruna.uptime / 1000); const days = Math.floor(totalSeconds / 86400); @@ -48,36 +49,40 @@ exports.run = async (aruna) => { const status = [ { - name: 'Muppet Show', + name: langE.ready.status['1'], type: 'watching' }, { - name: 'M83 - Midnight City', + name: langE.ready.status['2'], type: 'listening' }, { - name: `Faz ${uptime}`, + name: langE.ready.status['3'].replace('[time]', uptime), type: 'playing' }, { - name: 'Netflix', + name: langE.ready.status['4'], type: 'watching' }, { - name: `Versão ${pkg.version}`, + name: langE.ready.status['5'].replace('[version]', pkg.version), type: 'streaming', - url: 'https://www.twitch.tv/lobometalurgico' + url: config.twitch }, { - name: `Seu Shard é o ${aruna.shard.id}!`, + name: langE.ready.status['6'].replace('[shard]', aruna.shard.id), type: 'watching' + }, + { + name: langE.ready.status['7'], + type: 'listening' } ]; async function setStatus() { var maintenance = await database.System.findOne({ _id: 1 }); var inMaintenance = maintenance.maintenance; if (inMaintenance === true){ - aruna.user.setPresence({ game: { name: `🚫AVISO: MANUTENÇÃO PROGRAMADA PARA ${maintenance.date}! FICAREI INDISPONÍVEL POR ${maintenance.time}!🚫`}}); + aruna.user.setPresence({ game: { name: langE.ready.maintenance.replace('[date]', maintenance.date).replace('[time]', maintenance.time)}}); } else { const randomStatus = status[Math.floor(Math.random() * status.length)]; aruna.user.setPresence({ game: randomStatus }); diff --git a/src/Utils/rankSystem.js b/src/Utils/rankSystem.js index 87708d9..5baa2f5 100644 --- a/src/Utils/rankSystem.js +++ b/src/Utils/rankSystem.js @@ -16,7 +16,7 @@ along with this program. If not, see . */ -exports.run = async (aruna, message, database, cooldown, utils, Discord) => { +exports.run = async (aruna, message, lang, langc, database, cooldown, utils, Discord) => { const user = message.author; const rank = await database.Rank.findOne({ @@ -59,19 +59,14 @@ exports.run = async (aruna, message, database, cooldown, utils, Discord) => { level = rank2.level; const embed = new Discord.RichEmbed() - .setAuthor('Novo Nível!') - .setDescription( - `Parabéns <@${message.author.id}>` + - ', agora você está no **Nível ' + - rank2.level + - '**!' - ) + .setAuthor(lang.rank.embed.newLevel.title) + .setDescription(lang.rank.embed.newLevel.description.replace('[user]', message.author).replace('[level]', level)) .setColor([15, 15, 250]) .setTimestamp(); message.channel.send(embed); const args = ''; - const exiberank = require('../cmds/rank.js'); - exiberank.run(aruna, message, args); + const exiberank = require('../Commands/rank.js'); + exiberank.run(aruna, message, args, langc); } } }; diff --git a/src/main.js b/src/main.js index 40f0201..443993c 100644 --- a/src/main.js +++ b/src/main.js @@ -91,7 +91,7 @@ function isSharded() { } aruna.login(config.token).then(() => { - console.log(`${infoPrefix} ${language.initialization.complete}`) + console.log(`${infoPrefix} ${language.initialization.complete}`); }).catch(e => { - console.exception(`${errorPrefix} ${language.initialization.fail} ${e}`) + console.exception(`${errorPrefix} ${language.initialization.fail} ${e}`); }); \ No newline at end of file From 9050092dc47b337960eeca40cfb10ab65d9161c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Fri, 14 Aug 2020 14:25:40 -0300 Subject: [PATCH 060/164] Minor Bugs Fixed --- .Configs/mongoose.js | 2 +- languages | 2 +- src/Events/ready.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.Configs/mongoose.js b/.Configs/mongoose.js index 02c069b..6a4cfee 100644 --- a/.Configs/mongoose.js +++ b/.Configs/mongoose.js @@ -28,7 +28,7 @@ mongoose.connect( { useNewUrlParser: true, useUnifiedTopology: true }, err => { if (err) return error(`[${language.main.error}] => ${err}`); - log('=> Conectado!'); + log(language.generic.connected); } ); diff --git a/languages b/languages index e12393c..b137006 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit e12393cefbc0201030f155f151d14c2c161456ea +Subproject commit b13700676d952edc634f5ccb9fc324748701bac1 diff --git a/src/Events/ready.js b/src/Events/ready.js index 0e32da8..02b9348 100644 --- a/src/Events/ready.js +++ b/src/Events/ready.js @@ -26,7 +26,7 @@ const language = require(`../../languages/bot/${config.language}/internal.json`) const langE = require(`../../languages/bot/${config.defaultLanguage}/events.json`); exports.run = async (aruna) => { - log(language.ready.connected); + log(language.generic.connected); let totalSeconds = (aruna.uptime / 1000); const days = Math.floor(totalSeconds / 86400); From 5431c045c1a4d54261b32be06b78476881e27798 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Fri, 14 Aug 2020 18:31:12 -0300 Subject: [PATCH 061/164] Fix #26 --- src/Commands/ban.js | 14 ++++++++++---- src/Commands/kick.js | 14 ++++++++++---- src/Commands/unban.js | 13 ++++++++----- 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/src/Commands/ban.js b/src/Commands/ban.js index 73bda26..83785af 100644 --- a/src/Commands/ban.js +++ b/src/Commands/ban.js @@ -25,8 +25,6 @@ const now = new Date(); exports.run = async (aruna, message, args) => { - const buser = await aruna.fetchUser(message.mentions.users.first() || args[0]); - const error1 = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) .setFooter(`Algo deu errado, ${message.author.username}`) @@ -44,21 +42,31 @@ exports.run = async (aruna, message, args) => { .setFooter(`Algo deu errado, ${message.author.username}`) .setDescription('Você deve inserir um usuário para ser punido!') .setTimestamp(); + + if (!args[0] || isNaN(args[0]) && (!args[0].includes('<@') || !args[0].includes('>'))) return message.channel.send(error3); + + const buser = await aruna.fetchUser(message.mentions.users.first() || args[0]); + + if (!buser) return message.channel.send(error3); + const error4 = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) .setFooter(`Algo deu errado, ${message.author.username}`) .setDescription(`Você não pode banir ${buser.username} pois este é o(a) dono(a) do servidor!`) .setTimestamp(); + const error5 = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) .setFooter(`Algo deu errado, ${message.author.username}`) .setDescription(`Você não pode banir este usuário pois seu cargo é igual ou inferior ao de ${buser.username}.`) .setTimestamp(); + const error6 = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) .setFooter(`Algo deu errado, ${message.author.username}`) .setDescription(`Eu não posso banir este usuário pois meu cargo é igual ou inferior ao de ${buser.username}`) .setTimestamp(); + const error7 = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) .setFooter(`Algo deu errado, ${message.author.username}`) @@ -70,8 +78,6 @@ exports.run = async (aruna, message, args) => { if (!message.guild.members.get(aruna.user.id).hasPermission('BAN_MEMBERS')) return message.channel.send(error2); - if (!buser) return message.channel.send(error3); - const guildBuser = message.guild.member( message.mentions.users.first() || message.guild.members.get(args[0]) ); diff --git a/src/Commands/kick.js b/src/Commands/kick.js index 4cd322a..b442933 100644 --- a/src/Commands/kick.js +++ b/src/Commands/kick.js @@ -25,8 +25,6 @@ const now = new Date(); exports.run = async (aruna, message, args) => { - const kuser = await aruna.fetchUser(message.mentions.users.first() || args[0]); - const error1 = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) .setFooter(`Algo deu errado, ${message.author.username}`) @@ -44,21 +42,31 @@ exports.run = async (aruna, message, args) => { .setFooter(`Algo deu errado, ${message.author.username}`) .setDescription('Você deve inserir um usuário para ser punido!') .setTimestamp(); + + if (!args[0] || isNaN(args[0]) && (!args[0].includes('<@') || !args[0].includes('>'))) return message.channel.send(error3); + + const kuser = await aruna.fetchUser(message.mentions.users.first() || args[0]); + + if (!kuser) return message.channel.send(error3); + const error4 = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) .setFooter(`Algo deu errado, ${message.author.username}`) .setDescription(`Você não pode banir ${kuser.username} pois este é o(a) dono(a) do servidor!`) .setTimestamp(); + const error5 = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) .setFooter(`Algo deu errado, ${message.author.username}`) .setDescription(`Você não pode banir este usuário pois seu cargo é igual ou inferior ao de ${kuser.username}.`) .setTimestamp(); + const error6 = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) .setFooter(`Algo deu errado, ${message.author.username}`) .setDescription(`Eu não posso banir este usuário pois meu cargo é igual ou inferior ao de ${kuser.username}`) .setTimestamp(); + const error7 = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) .setFooter(`Algo deu errado, ${message.author.username}`) @@ -70,8 +78,6 @@ exports.run = async (aruna, message, args) => { if (!message.guild.members.get(aruna.user.id).hasPermission('KICK_MEMBERS')) return message.channel.send(error2); - if (!kuser) return message.channel.send(error3); - const guildBuser = message.guild.member( message.mentions.users.first() || message.guild.members.get(args[0]) ); diff --git a/src/Commands/unban.js b/src/Commands/unban.js index b7c94bd..aef266b 100644 --- a/src/Commands/unban.js +++ b/src/Commands/unban.js @@ -20,8 +20,6 @@ const Discord = require('discord.js'); exports.run = async (aruna, message, args) => { - const unbuser = await aruna.fetchUser(args[0]); - const error1 = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) .setFooter(`Algo deu errado, ${message.author.username}`) @@ -39,6 +37,7 @@ exports.run = async (aruna, message, args) => { .setFooter(`Algo deu errado, ${message.author.username}`) .setDescription('Você deve inserir o id do usuário que será desbanido!') .setTimestamp(); + const error4 = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) .setFooter(`Algo deu errado, ${message.author.username}`) @@ -50,7 +49,11 @@ exports.run = async (aruna, message, args) => { if (!message.guild.members.get(aruna.user.id).hasPermission('BAN_MEMBERS')) return message.channel.send(error2); - if (!unbuser) return message.channel.send(error3); + if (!args[0] || isNaN(args[0])) return message.channel.send(error3); + + const unBuser = await aruna.fetchUser(args[0]); + + if (!unBuser) return message.channel.send(error3); var reason = ''; if (!args.join(' ').slice(19)) { @@ -64,13 +67,13 @@ exports.run = async (aruna, message, args) => { const embed = new Discord.RichEmbed() .setAuthor('Desbanimento Efetuado!') .setDescription(`Desbanimento efetuado por ${message.author.username}`) - .addField('Usuário Desbanido: ', `${unbuser.id}`, false) + .addField('Usuário Desbanido: ', `${unBuser.id}`, false) .addField('Desbanido por: ', `<@${message.author.id}>`, false) .addField('Motivo: ', `${reason}`, false) .setTimestamp(); message.channel.send(embed).then(async msg => { - await message.guild.unban(unbuser, reason).catch(err => { + await message.guild.unban(unBuser, reason).catch(err => { console.log(err); msg.edit(error4); }); From bb05fcb514d0ddcb11ab5ce4b7756dbc7829c8a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Fri, 14 Aug 2020 19:54:55 -0300 Subject: [PATCH 062/164] Fix topg doesn't work --- .Configs/apiKeys.js | 2 +- package-lock.json | 247 +------------------------------------------- package.json | 2 +- src/Events/ready.js | 25 +++-- 4 files changed, 24 insertions(+), 252 deletions(-) diff --git a/.Configs/apiKeys.js b/.Configs/apiKeys.js index 8765214..f849d27 100644 --- a/.Configs/apiKeys.js +++ b/.Configs/apiKeys.js @@ -18,7 +18,7 @@ */ -// Dbots API Keys +// API Keys module.exports = { }; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 947a865..deb527a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "arunabot", - "version": "4.3.0", + "version": "4.3.0-CANARY", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -533,17 +533,6 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, - "array.prototype.map": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.2.tgz", - "integrity": "sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.4" - } - }, "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", @@ -560,14 +549,6 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, - "axios": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", - "requires": { - "follow-redirects": "1.5.10" - } - }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -777,14 +758,10 @@ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" }, - "dbots": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/dbots/-/dbots-5.0.4.tgz", - "integrity": "sha512-KZJKWv1yISXMIw9KwT8Kodad9EAPrxd6iThKe8MxMy7MCIngEY0We+yYU65HIzmJiwo0W2OigNqPA6CIbf5TyQ==", - "requires": { - "axios": "^0.19.0", - "promise.allsettled": "^1.0.2" - } + "dblapi.js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/dblapi.js/-/dblapi.js-2.4.1.tgz", + "integrity": "sha512-g+u1inF/qOLit5qPK4hBGk5pKL1vy09uBLV+nukkRMvw2S9D1PyiyO70n4fboUXOgbExPp6Sho/Y782OqQOUiQ==" }, "debug": { "version": "3.2.6", @@ -810,14 +787,6 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "requires": { - "object-keys": "^1.0.12" - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -899,60 +868,6 @@ "ansi-colors": "^4.1.1" } }, - "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" - }, - "es-get-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", - "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", - "requires": { - "es-abstract": "^1.17.4", - "has-symbols": "^1.0.1", - "is-arguments": "^1.0.4", - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-string": "^1.0.5", - "isarray": "^2.0.5" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -1321,29 +1236,6 @@ "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, - "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "requires": { - "debug": "=3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, "form-data": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", @@ -1387,11 +1279,6 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", @@ -1462,24 +1349,11 @@ "type-fest": "^0.8.1" } }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" - }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -1589,21 +1463,6 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, - "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" - }, - "is-callable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==" - }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -1632,37 +1491,6 @@ "is-extglob": "^2.1.1" } }, - "is-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", - "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==" - }, - "is-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", - "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-set": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", - "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==" - }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "requires": { - "has-symbols": "^1.0.1" - } - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -1674,20 +1502,6 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "iterate-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", - "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==" - }, - "iterate-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", - "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", - "requires": { - "es-get-iterator": "^1.0.2", - "iterate-iterator": "^1.0.1" - } - }, "javascript-natural-sort": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", @@ -2069,27 +1883,6 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "object-inspect": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==" - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, "omggif": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", @@ -2253,18 +2046,6 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, - "promise.allsettled": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.2.tgz", - "integrity": "sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg==", - "requires": { - "array.prototype.map": "^1.0.1", - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "iterate-value": "^1.0.0" - } - }, "proxy-addr": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", @@ -2581,24 +2362,6 @@ "strip-ansi": "^3.0.0" } }, - "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", diff --git a/package.json b/package.json index defada0..c64d53e 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "@discordjs/opus": "^0.3.2", "chalk": "^4.1.0", "dateformat": "^3.0.3", - "dbots": "^5.0.4", + "dblapi.js": "^2.4.1", "discord.js": "^11.6.4", "express": "^4.17.1", "express-session": "^1.17.1", diff --git a/src/Events/ready.js b/src/Events/ready.js index 02b9348..0ea15f2 100644 --- a/src/Events/ready.js +++ b/src/Events/ready.js @@ -117,15 +117,24 @@ exports.run = async (aruna) => { return !!aruna.shard; } - if (apiKeys) { - const client = aruna; - const dbots = require('dbots'); - const poster = new dbots.Poster({ - client, - apiKeys, - clientLibrary: 'discord.js' + if (apiKeys.topgg) { + const DBL = require('dblapi.js'); + + const dbl = new DBL(apiKeys.topgg, aruna); + + dbl.postStats(aruna.guilds.size); + + setInterval(() => { + dbl.postStats(aruna.guilds.size); + }, 900000); + + // Optional events + dbl.on('posted', () => { + console.log('Server count posted!'); }); - poster.startInterval(); + dbl.on('error', e => { + console.log(`Oops! ${e}`); + }); } }; \ No newline at end of file From 1e2ae87661957f416000c0a86b67b091d272f32d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Fri, 14 Aug 2020 19:59:21 -0300 Subject: [PATCH 063/164] Fix the Fix --- src/Events/ready.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Events/ready.js b/src/Events/ready.js index 0ea15f2..51a59b5 100644 --- a/src/Events/ready.js +++ b/src/Events/ready.js @@ -120,12 +120,14 @@ exports.run = async (aruna) => { if (apiKeys.topgg) { const DBL = require('dblapi.js'); - const dbl = new DBL(apiKeys.topgg, aruna); + const client = aruna; - dbl.postStats(aruna.guilds.size); + const dbl = new DBL(apiKeys.topgg, client); + + dbl.postStats(client.guilds.size, client.shard.id, 1); /** @todo total shard fix */ setInterval(() => { - dbl.postStats(aruna.guilds.size); + dbl.postStats(client.guilds.size, client.shard.id, 1); /** @todo total shard fix */ }, 900000); // Optional events From f83b31be1f5d1ed8efbab6abc4a233b682189bdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Fri, 14 Aug 2020 21:35:39 -0300 Subject: [PATCH 064/164] Default Language Fix --- src/Commands/avatar.js | 2 +- src/Commands/calc.js | 10 +++++----- src/Commands/clear.js | 18 +++++++++--------- src/Commands/prefix.js | 22 +++++++++++----------- src/Commands/say.js | 14 +++++++------- 5 files changed, 33 insertions(+), 33 deletions(-) diff --git a/src/Commands/avatar.js b/src/Commands/avatar.js index c069d8a..cab7a47 100644 --- a/src/Commands/avatar.js +++ b/src/Commands/avatar.js @@ -19,7 +19,7 @@ const Discord = require('discord.js'); const { emoji } = require('../Utils'); const { config } = require('../../Configs'); -var language = require(`../../languages/bot/${config.language}/commands.json`); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); exports.run = (aruna, message, args, langc) => { const user1 = message.guild.member( diff --git a/src/Commands/calc.js b/src/Commands/calc.js index 10971fe..3430ea8 100644 --- a/src/Commands/calc.js +++ b/src/Commands/calc.js @@ -20,7 +20,7 @@ const { emojis } = require('../Utils'); const Discord = require('discord.js'); const math = require('mathjs'); const { config } = require('../../Configs'); -var language = require(`../../languages/bot/${config.language}/commands.json`); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); exports.run = (aruna, message, args, langc) => { @@ -29,13 +29,13 @@ exports.run = (aruna, message, args, langc) => { } const error1 = new Discord.RichEmbed() - .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) - .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) .setDescription(language.calculator.embed.error.description1) .setTimestamp(); const error2 = new Discord.RichEmbed() - .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) - .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) .setDescription(language.calculator.embed.error.description2) .setTimestamp(); diff --git a/src/Commands/clear.js b/src/Commands/clear.js index 317dced..83bd259 100644 --- a/src/Commands/clear.js +++ b/src/Commands/clear.js @@ -27,7 +27,7 @@ function verify(messages, args, message, language) { const Discord = require('discord.js'); const { config } = require('../../Configs'); -var language = require(`../../languages/bot/${config.language}/commands.json`); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); exports.run = async (aruna, message, args, langc) => { @@ -36,26 +36,26 @@ exports.run = async (aruna, message, args, langc) => { } const error1 = new Discord.RichEmbed() - .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) - .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) .setDescription(language.clear.embed.error.description1.replace('[manageMessages]', language.generic.permissions.manageMessages)) .setTimestamp(); const error2 = new Discord.RichEmbed() - .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) - .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) .setDescription(language.clear.embed.error.description2.replace('[manageMessages]', language.generic.permissions.manageMessages)) .setTimestamp(); const error3 = new Discord.RichEmbed() - .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) - .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) .setDescription(language.clear.embed.error.description3) .setTimestamp(); const error4 = new Discord.RichEmbed() - .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) - .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) .setDescription(language.clear.embed.error.description4) .setTimestamp(); diff --git a/src/Commands/prefix.js b/src/Commands/prefix.js index f7c903c..f8c811c 100644 --- a/src/Commands/prefix.js +++ b/src/Commands/prefix.js @@ -18,7 +18,7 @@ const Discord = require('discord.js'); const { database, config } = require('../../Configs'); -var language = require(`../../languages/bot/${config.language}/commands.json`); +var language = require(`../../languages/bot/${config.defaultLanguagee}/commands.json`); /** @deprecated This Will Be Removed In A future Version */ exports.run = async (aruna, message, args, langc) => { @@ -28,34 +28,34 @@ exports.run = async (aruna, message, args, langc) => { const guild = await database.Guilds.findOne({ _id: message.guild.id }); const nopermission = new Discord.RichEmbed() - .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) - .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) .setDescription(language.prefix.embed.error.noperm.replace('[manageGuild]', language.generic.permissions.manageGuild)) .setTimestamp(); const error1 = new Discord.RichEmbed() - .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) - .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) .setDescription(language.prefix.embed.error.description1) .setTimestamp(); const error2 = new Discord.RichEmbed() - .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) - .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) .setDescription(language.prefix.embed.error.description2) .setTimestamp(); const error3 = new Discord.RichEmbed() - .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) - .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) .setDescription(language.prefix.embed.error.description3) .setTimestamp(); const prefixRemove = new Discord.RichEmbed() .setColor([0, 255, 0]) - .setAuthor(language.generic.embed.sucess.title.replace('[username]', message.author.username), message.author.avatarURL) + .setAuthor(language.generic.embed.sucess.title.replace('[username]', message.member.displayName), message.author.avatarURL) .setFooter(language.generic.embed.sucess.title) .setDescription(language.prefix.embed.sucess.description1.replace('[prefix]', config.prefix)) .setTimestamp(); const prefixDefinido = new Discord.RichEmbed() .setColor([0, 255, 0]) - .setAuthor(language.generic.embed.sucess.title.replace('[username]', message.author.username), message.author.avatarURL) + .setAuthor(language.generic.embed.sucess.title.replace('[username]', message.member.displayName), message.author.avatarURL) .setFooter(language.generic.embed.sucess.title) .setDescription(language.prefix.embed.sucess.description2.replace('[prefix]', args[1])) .setTimestamp(); diff --git a/src/Commands/say.js b/src/Commands/say.js index 6321b5a..496cbd7 100644 --- a/src/Commands/say.js +++ b/src/Commands/say.js @@ -19,7 +19,7 @@ const Discord = require('discord.js'); const { config } = require('../../Configs'); -var language = require(`../../languages/bot/${config.language}/commands.json`); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); exports.run = async (aruna, message, args, langc, prefix, comando) => { if (langc) { @@ -27,19 +27,19 @@ exports.run = async (aruna, message, args, langc, prefix, comando) => { } const error1 = new Discord.RichEmbed() - .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) .setDescription(language.say.embed.error.description1.replace('[manageMessages]', language.generic.permissions.manageMessages)) - .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) .setTimestamp(); const error2 = new Discord.RichEmbed() - .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) .setDescription(language.say.embed.error.description2.replace('[manageMessages]', language.generic.permissions.manageMessages)) - .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) .setTimestamp(); const error3 = new Discord.RichEmbed() - .setAuthor(language.generic.embed.error.title.replace('[username]', message.author.username), message.author.avatarURL) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) .setDescription(language.say.embed.error.description3) - .setFooter(language.generic.embed.error.footer.replace('[username]', message.author.username)) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) .setTimestamp(); if (!message.member.hasPermission('MANAGE_MESSAGES')) From f71c4624f6274873a86cf80e6c82c359a64848e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Fri, 14 Aug 2020 21:46:16 -0300 Subject: [PATCH 065/164] Fix Readme --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f8a6073..cc4eb6e 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@

- +

Aruna

- + Aruna

@@ -108,4 +108,4 @@ O código-fonte da Aruna está licenciado sob a [GNU Affero General Public Licen

-

"Discord", "DiscordApp" and any associated logos are registered trademarks of Discord Inc.

+

"Discord", "DiscordApp" and any associated logos are registered trademarks of Discord Inc.

\ No newline at end of file From 89f8381d442d0a49055d1e94568382cccda3cd1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Fri, 14 Aug 2020 23:16:30 -0300 Subject: [PATCH 066/164] Fix ready.js --- src/Events/ready.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Events/ready.js b/src/Events/ready.js index 51a59b5..f00550a 100644 --- a/src/Events/ready.js +++ b/src/Events/ready.js @@ -20,7 +20,7 @@ const pkg = require('../../package.json'); const chalk = require('chalk'); -const { apiKeys, config, database } = require('../../Configs'); +const { apiKeys, config, database, links } = require('../../Configs'); const language = require(`../../languages/bot/${config.language}/internal.json`); const langE = require(`../../languages/bot/${config.defaultLanguage}/events.json`); @@ -67,7 +67,7 @@ exports.run = async (aruna) => { { name: langE.ready.status['5'].replace('[version]', pkg.version), type: 'streaming', - url: config.twitch + url: links.twitch }, { name: langE.ready.status['6'].replace('[shard]', aruna.shard.id), @@ -117,7 +117,7 @@ exports.run = async (aruna) => { return !!aruna.shard; } - if (apiKeys.topgg) { + if (apiKeys && apiKeys.topgg) { const DBL = require('dblapi.js'); const client = aruna; From 37f3ee1867813590001a8518c716025826f4aa19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Fri, 14 Aug 2020 23:19:01 -0300 Subject: [PATCH 067/164] Flip, Ping and Rank strings --- languages | 2 +- src/Commands/flip.js | 19 ++++++++++++++----- src/Commands/ping.js | 30 +++++++++++++++++++++--------- src/Commands/prefix.js | 2 +- src/Commands/rank.js | 36 ++++++++++++++++-------------------- 5 files changed, 53 insertions(+), 36 deletions(-) diff --git a/languages b/languages index b137006..856396c 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit b13700676d952edc634f5ccb9fc324748701bac1 +Subproject commit 856396c41dde33ee3dc9aedef742756ebdc2b1ff diff --git a/src/Commands/flip.js b/src/Commands/flip.js index ccda752..5f41c03 100644 --- a/src/Commands/flip.js +++ b/src/Commands/flip.js @@ -16,19 +16,28 @@ along with this program. If not, see . */ -exports.run = async (aruna, message) => { - var add = Math.round(Math.random()); +const { config } = require('../../Configs'); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); + +exports.run = async (aruna, message, args, langc) => { + + if (langc) { + language = langc; + } + + var add = await Math.round(Math.random()); if (add == 0){ - message.channel.send('Cara!'); + message.channel.send(language.flip.heads); } else if (add == 1){ - message.channel.send('Coroa!'); + message.channel.send(language.flip.tails); } else { - message.reply('Erro!'); + message.reply(language.generic.error); } }; exports.config = { name: 'flip', + description: language.flip.config.description, aliases: ['moeda', 'girar'], category: '🎉 Entretenimento' }; \ No newline at end of file diff --git a/src/Commands/ping.js b/src/Commands/ping.js index becf0c9..ce0b4d4 100644 --- a/src/Commands/ping.js +++ b/src/Commands/ping.js @@ -19,25 +19,37 @@ const Discord = require('discord.js'); const { emoji } = require('../Utils'); +const { config } = require('../../Configs'); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); + +exports.run = async (aruna, message, args, langc) => { + if (langc) { + language = langc; + } -exports.run = async (aruna, message) => { const embed = new Discord.RichEmbed() - .setAuthor(`${aruna.user.username}`, `${aruna.user.displayAvatarURL}`) + .setTitle(language.ping.embed['1'].title.replace('[emoji]', emoji.loading).replace('[username]', message.author.username)) .setColor('#f5ebeb') - .setDescription('Calculando...'); + .setDescription(language.ping.embed['1'].description) + .setFooter(language.generic.embed.footer.replace('[usertag]', message.author.tag)) + .setTimestamp(); message.channel.send(embed).then(async msg => { - // const latencia = Math.round(message.createdTimestamp); - const api = Math.round(aruna.ping); - // let heartbeat = Date.now() - message.createdTimestamp; - const embed2 = new Discord.RichEmbed().setColor('#33def5') - .setDescription(`:hourglass: | Tempo de resposta: **${msg.createdTimestamp - message.createdTimestamp}** ms - :satellite: | Api: **${api}** ms`); + const apiTime = Math.round(aruna.ping); + const responseTime = msg.createdTimestamp - message.createdTimestamp; + const embed2 = new Discord.RichEmbed() + .setAuthor(aruna.user.username, aruna.user.displayAvatarURL) + .setColor('#33def5') + .setDescription(`${language.ping.embed['2'].description.line1.replace('[responseTime]', responseTime)} + ${language.ping.embed['2'].description.line2.replace('[apiTime]', apiTime)}`) + .setFooter(language.generic.embed.footer.replace('[usertag]', message.author.tag)) + .setTimestamp(); msg.edit(embed2); }); }; exports.config = { name: 'ping', + description: language.ping.config.description, aliases: ['pong'], category: `${emoji.robot} Utilidades` }; diff --git a/src/Commands/prefix.js b/src/Commands/prefix.js index f8c811c..d977259 100644 --- a/src/Commands/prefix.js +++ b/src/Commands/prefix.js @@ -18,7 +18,7 @@ const Discord = require('discord.js'); const { database, config } = require('../../Configs'); -var language = require(`../../languages/bot/${config.defaultLanguagee}/commands.json`); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); /** @deprecated This Will Be Removed In A future Version */ exports.run = async (aruna, message, args, langc) => { diff --git a/src/Commands/rank.js b/src/Commands/rank.js index 86c4633..337f38f 100644 --- a/src/Commands/rank.js +++ b/src/Commands/rank.js @@ -18,18 +18,21 @@ */ const Discord = require('discord.js'); -const { database } = require('../../Configs'); +const { config, database } = require('../../Configs'); const { utils } = require('../Utils'); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); -exports.run = async (aruna, message, args) => { +exports.run = async (aruna, message, args, langc) => { const guild = await database.Guilds.findOne({ _id: message.guild.id }); + if (langc) { + language = langc; + } + const error = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription( - `Este comando não está ativado em seu servidor. Por favor, solicite a um ADM que ative-o usando o comando \`\`${guild.prefix}config\`\`.` - ) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.generic.embed.disabled.replace('[config]', `${guild.prefix}config`)) .setTimestamp(); if (guild.rankEnable !== true) return message.channel.send(error); @@ -50,29 +53,22 @@ exports.run = async (aruna, message, args) => { let level = rank.level; if (level === null) level = 0; - /* - const embed2 = new Discord.RichEmbed() - .setColor([54, 57, 63]) - .setAuthor('RANK: ' + userid.user.username, userid.user.avatarURL) - .addField('Nível', level, true) - .addField('Xp Atual', xp, true) - .setTimestamp(); - */ - const need = utils.need(level); const embed = new Discord.RichEmbed() .setColor([54, 57, 63]) - .setAuthor('RANK: ' + userid.user.username, userid.user.avatarURL) - .addField('Nível', level, true) - .addField('Xp Atual', xp, true) - .addField('XP Necessário', need, true) + .setAuthor(language.rank.embed.title.replace('[username]', userid.displayName), userid.user.avatarURL) + .addField(language.rank.embed.field1, level, true) + .addField(language.rank.embed.field2, xp, true) + .addField(language.rank.embed.field3, need, true) + .setFooter(language.generic.footer.replace('[usertag]', message.author.tag)) .setTimestamp(); message.channel.send(embed); }; exports.config = { name: 'rank', + description: language.rank.config.description, aliases: ['perfil'], category: '🎉 Entretenimento' }; From 873f3e3a2dbf9e6c0de86d5e0b7c0bea23439711 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Fri, 14 Aug 2020 23:42:12 -0300 Subject: [PATCH 068/164] Fix Default Language --- src/Events/guildCreate.js | 6 +++--- src/Events/message.js | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Events/guildCreate.js b/src/Events/guildCreate.js index 22edd83..01ad17e 100644 --- a/src/Events/guildCreate.js +++ b/src/Events/guildCreate.js @@ -16,14 +16,14 @@ along with this program. If not, see . */ -var { database } = require('../../Configs'); +var { config, database } = require('../../Configs'); exports.run = async (aruna, guild) => { - var language = ''; + var language; if (guild.region == 'brazil') { language = 'br'; } else { - language = 'us'; + language = config.defaultLanguage; } var saveG = await new database.Guilds({ _id: guild.id, language: language }); await saveG.save(); diff --git a/src/Events/message.js b/src/Events/message.js index 2234812..3ebff9f 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -43,7 +43,7 @@ exports.run = async (aruna, message) => { var guild = await database.Guilds.findOne({ _id: message.guild.id }); var user = await database.Users.findOne({ _id: message.author.id }); if (!guild) { - var language = ''; + var language; if (message.guild.region == 'brazil') { language = 'br'; } else { From 09eed69696720e93e69db24f9951370d8abcca19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Fri, 14 Aug 2020 23:42:24 -0300 Subject: [PATCH 069/164] Readme Update --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cc4eb6e..5621fc3 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ Olá, eu me chamo Aruna. Sou um bot brasileiro para Discord com algumas funções muito interessantes. -Eu tenho várias funções para entretenimento (como comandos engraçados e memes), funções sociais (sistema de perfil com XP e reputação), extremamente customizável (você pode ativar/desativar qualquer comando meu, alterar meu prefixo para o que você quiser e muito mais!). +Eu tenho várias funções para entretenimento (como comandos engraçados), funções sociais, extremamente customizável (você pode ativar/desativar diversos comandos meu, alterar meu prefixo para o que você quiser e muito mais!). ## Como eu adiciono-a ao meu servidor? From 7f46e3b2af890c2121894278874548930d62566a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Fri, 14 Aug 2020 23:53:02 -0300 Subject: [PATCH 070/164] Language Name Fix --- src/main.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main.js b/src/main.js index 443993c..a501f72 100644 --- a/src/main.js +++ b/src/main.js @@ -26,12 +26,13 @@ const chalk = require('chalk'); const pkg = require('../package.json'); const language = require(`../languages/bot/${config.language}/internal.json`); +const defaultLanguage = require(`../languages/bot/${config.defaultLanguage}/internal.json`); const infoPrefix = `${chalk.gray('[')}${chalk.green(language.generic.base.toUpperCase())}${chalk.gray(']')}`; const errorPrefix = `${chalk.gray('[')}${chalk.red(language.generic.base.toUpperCase())}${chalk.gray(']')}`; console.log(language.initialization.initializing.replace('[prefix]', infoPrefix)); -console.log(`${infoPrefix} ${language.initialization.language.replace('[language]', chalk.yellow(config.language)).replace('[default]', chalk.yellow(config.defaultLanguage))}`); +console.log(`${infoPrefix} ${language.initialization.language.replace('[language]', chalk.yellow(language.generic.languageName)).replace('[default]', chalk.yellow(defaultLanguage.generic.languageName))}`); console.log(`${infoPrefix} ${language.initialization.version.replace('[version]', pkg.version)}`); const aruna = new Discord.Client(); From e653640b00c7e0f813b3eb9b69bf46879d591da3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 16 Aug 2020 18:23:39 -0300 Subject: [PATCH 071/164] Little Issue Fix --- src/Commands/help.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/Commands/help.js b/src/Commands/help.js index 4db9583..547108f 100644 --- a/src/Commands/help.js +++ b/src/Commands/help.js @@ -46,7 +46,7 @@ exports.run = async (aruna, message) => { var prefix = guildDB.prefix; - var categories = ''; + var categories; categories = aruna.commands .map(c => c.config.category) @@ -65,10 +65,7 @@ exports.run = async (aruna, message) => { embed.addField(`${category}`, '```' + commands + '```', false); } embed.setColor('#004080'); - embed.setAuthor( - `${aruna.user.username}`, - `${aruna.user.displayAvatarURL}` - ); + embed.setAuthor(aruna.user.username, aruna.user.displayAvatarURL); embed.setFooter(`Comando Solicitado por ${message.author.username}#${message.author.discriminator}`, message.author.avatarURL); embed.setTimestamp(); }); From a49469c29e1c7e099db480e66fe3b476676aec93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 16 Aug 2020 18:26:42 -0300 Subject: [PATCH 072/164] MassRemove and MassRole Command String --- languages | 2 +- src/Commands/massremove.js | 72 ++++++++++++++++--------------- src/Commands/massrole.js | 86 ++++++++++++++++++-------------------- 3 files changed, 76 insertions(+), 84 deletions(-) diff --git a/languages b/languages index 856396c..0e0c3ba 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 856396c41dde33ee3dc9aedef742756ebdc2b1ff +Subproject commit 0e0c3ba99f94de5d4f123d95457adebdb221bb5a diff --git a/src/Commands/massremove.js b/src/Commands/massremove.js index a5da8fd..2d0024b 100644 --- a/src/Commands/massremove.js +++ b/src/Commands/massremove.js @@ -18,9 +18,11 @@ const Discord = require('discord.js'); const { emoji } = require('../Utils'); +const { config } = require('../../Configs'); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); -exports.run = (aruna, message, args) => { - var role = ''; +exports.run = (aruna, message, args, langc) => { + var role; if (!args[0]) { role = undefined; } else { @@ -33,17 +35,20 @@ exports.run = (aruna, message, args) => { undefined; } + if (langc) { + language = langc; + } const error1 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Você não possui a permissão de `Gerenciar Cargos`!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.massRemove.embed.error.description1.replace('[manageRoles]', language.generic.permissions.manageRoles)) .setTimestamp(); const error2 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Eu não possuo a permissão de `Gerenciar Cargos`!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.massRemove.embed.error.description2.replace('[manageRoles]', language.generic.permissions.manageRoles)) .setTimestamp(); if (!message.member.hasPermission('MANAGE_ROLES')) @@ -51,59 +56,52 @@ exports.run = (aruna, message, args) => { if (!message.guild.members.get(aruna.user.id).hasPermission('MANAGE_ROLES')) return message.channel.send(error2); - const error4 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Você deve inserir um rank para remover dos membros!') + const error3 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.massRemove.embed.error.description3) .setTimestamp(); - if (!role || role === undefined) return message.channel.send(error4); + if (!role || role === undefined) return message.channel.send(error3); - const error5 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription( - `Você não pode remover o cargo \`${role.name}\` pois meu cargo é esse ou inferior a ele.` - ) + const error4 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.massRemove.embed.error.description4.replace('[roleName]', role.name)) .setTimestamp(); - const error6 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription( - `Você não pode remover o cargo \`${role.name}\` pois seu cargo é esse ou inferior a ele.` - ) + const error5 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.massRemove.embed.error.description5.replace('[roleName]', role.name)) .setTimestamp(); if ( role.position >= message.guild.members.get(aruna.user.id).highestRole.position ) - return message.channel.send(error5); + return message.channel.send(error4); if ( role.position >= message.guild.members.get(message.author.id).highestRole.position && message.guild.owner.id !== message.author.id ) - return message.channel.send(error6); + return message.channel.send(error5); const executando = new Discord.RichEmbed() - .setTitle(`${emoji.loading} Aguarde, ${message.author.username}`, message.author.avatarURL) + .setTitle(language.generic.embed.running.title.replace('[emoji]', emoji.loading) + .replace('[username]', message.member.displayName), message.author.avatarURL) .setColor('#f2ff00') - .setFooter(`Operação em Execução, ${message.author.username}`) - .setDescription( - `O cargo \`${role.name}\` está sendo removido de todos os usuários do servidor. Por favor, aguarde um momento.` - ) + .setFooter(language.generic.embed.running.footer.replace('[username]', message.member.displayName)) + .setDescription(language.massRemove.embed.running.description.replace('[roleName]', role.name).replace('[userSize]', message.guild.members.size)) .setTimestamp(); const sucess = new Discord.RichEmbed() - .setAuthor(`YAY, ${message.author.username}`, message.author.avatarURL) + .setAuthor(language.generic.embed.sucess.title.replace('[username]', message.member.displayName), message.author.avatarURL) .setColor([0, 255, 0]) - .setFooter(`Operação efetuada com sucesso, ${message.author.username}`) - .setDescription( - `O cargo \`${role.name}\` foi removido de todos os usuários com sucesso!` - ) + .setFooter(language.generic.embed.sucess.footer2.replace('[username]', message.member.displayName)) + .setDescription(language.massRemove.embed.sucess.description.replace('[roleName]', role.name).replace('[userSize]', message.guild.members.size)) .setTimestamp(); message.channel.send(executando).then(msg => { diff --git a/src/Commands/massrole.js b/src/Commands/massrole.js index c3d2d0b..bfa70dd 100644 --- a/src/Commands/massrole.js +++ b/src/Commands/massrole.js @@ -18,9 +18,11 @@ const Discord = require('discord.js'); const { emoji } = require('../Utils'); +const { config } = require('../../Configs'); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); -exports.run = (aruna, message, args) => { - var role = ''; +exports.run = (aruna, message, args, langc) => { + var role; if (!args[0]) { role = undefined; } else { @@ -33,16 +35,20 @@ exports.run = (aruna, message, args) => { undefined; } + if (langc) { + language = langc; + } + const error1 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Você não possui a permissão de `Gerenciar Cargos`!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.massRole.embed.error.description1.replace('[manageRoles]', language.generic.permissions.manageRoles)) .setTimestamp(); const error2 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Eu não possuo a permissão de `Gerenciar Cargos`!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.massRole.embed.error.description2.replace('[manageRoles]', language.generic.permissions.manageRoles)) .setTimestamp(); if (!message.member.hasPermission('MANAGE_ROLES')) @@ -50,59 +56,46 @@ exports.run = (aruna, message, args) => { if (!message.guild.members.get(aruna.user.id).hasPermission('MANAGE_ROLES')) return message.channel.send(error2); - const error4 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Você deve inserir um rank para aplicar aos membros!') + const error3 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.massRole.embed.error.description3) .setTimestamp(); - if (!role || role === undefined) return message.channel.send(error4); + if (!role || role === undefined) return message.channel.send(error3); - const error5 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription( - `Você não pode aplicar o cargo \`${role.name}\` pois meu cargo é esse ou inferior a ele.` - ) + const error4 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.massRole.embed.error.description4.replace('[roleName]', role.name)) .setTimestamp(); - const error6 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription( - `Você não pode aplicar o cargo \`${role.name}\` pois seu cargo é esse ou inferior a ele.` - ) + const error5 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.massRole.embed.error.description5.replace('[roleName]', role.name)) .setTimestamp(); - if ( - role.position >= - message.guild.members.get(aruna.user.id).highestRole.position - ) - return message.channel.send(error5); + if (role.position >= message.guild.members.get(aruna.user.id).highestRole.position) + return message.channel.send(error4); - if ( - role.position >= - message.guild.members.get(message.author.id).highestRole.position && - message.guild.owner.id !== message.author.id - ) - return message.channel.send(error6); + if (role.position >= message.guild.members.get(message.author.id).highestRole.position + && message.guild.owner.id !== message.author.id + ) return message.channel.send(error5); const executando = new Discord.RichEmbed() - .setTitle(`${emoji.loading} Aguarde, ${message.author.username}`, message.author.avatarURL) + .setTitle(language.generic.embed.running.title.replace('[emoji]', emoji.loading) + .replace('[username]', message.member.displayName), message.author.avatarURL) .setColor('#f2ff00') - .setFooter(`Operação em Execução, ${message.author.username}`) - .setDescription( - `O cargo \`${role.name}\` está sendo aplicado para todos os usuários do servidor. Por favor, aguarde um momento.` - ) + .setFooter(language.generic.embed.running.footer.replace('[username]', message.member.displayName)) + .setDescription(language.massRole.embed.running.description.replace('[roleName]', role.name).replace('[userSize]', message.guild.members.size)) .setTimestamp(); const sucess = new Discord.RichEmbed() - .setAuthor(`YAY, ${message.author.username}`, message.author.avatarURL) + .setAuthor(language.generic.embed.sucess.title.replace('[username]', message.member.displayName), message.author.avatarURL) .setColor([0, 255, 0]) - .setFooter(`Operação efetuada com sucesso, ${message.author.username}`) - .setDescription( - `O cargo \`${role.name}\` foi aplicado para todos os usuários com sucesso!` - ) + .setFooter(language.generic.embed.sucess.footer2.replace('[username]', message.member.displayName)) + .setDescription(language.massRole.embed.sucess.description.replace('[roleName]', role.name).replace('[userSize]', message.guild.members.size)) .setTimestamp(); message.channel.send(executando).then(msg => { @@ -121,6 +114,7 @@ exports.run = (aruna, message, args) => { exports.config = { name: 'massrole', + description: language.massRole.config.description, aliases: ['masscargo', 'cargomassivo'], category: '👮‍♂️ Moderação' }; \ No newline at end of file From 2e193d9a85ffa53bbf05fe6df009a81f34591b1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 16 Aug 2020 20:06:26 -0300 Subject: [PATCH 073/164] Translations --- languages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/languages b/languages index 0e0c3ba..a9454e1 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 0e0c3ba99f94de5d4f123d95457adebdb221bb5a +Subproject commit a9454e1f6f2cbeeb135799aba5fd5031ab671613 From 684bb156c7f89381ead968ce0b2329b9ca526f04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Thu, 27 Aug 2020 09:29:56 -0300 Subject: [PATCH 074/164] Fix #27 --- src/Commands/ban.js | 17 ++++++++++++----- src/Commands/kick.js | 18 +++++++++++++----- src/Commands/unban.js | 10 +++++----- 3 files changed, 30 insertions(+), 15 deletions(-) diff --git a/src/Commands/ban.js b/src/Commands/ban.js index 83785af..3388b2d 100644 --- a/src/Commands/ban.js +++ b/src/Commands/ban.js @@ -23,7 +23,7 @@ const { date } = require('../Utils'); const dateFormat = require('dateformat'); const now = new Date(); -exports.run = async (aruna, message, args) => { +exports.run = async (aruna, message, args, langc, prefix, command) => { const error1 = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) @@ -91,14 +91,21 @@ exports.run = async (aruna, message, args) => { return message.channel.send(error6); } - var reason = ''; + var reason = message.content.slice(command.length + prefix.length).trim(); + + if (args[0].includes('<@!') && args[0].includes('>')) { + reason = reason.slice(5 + buser.id.length).trim(); + } else if (args[0].includes('<@') && args[0].includes('>')) { + reason = reason.slice(4 + buser.id.length).trim(); + } else { + reason = reason.slice(buser.id.length).trim(); + } - if (!args.join(' ').slice(19)) { + if (!reason) { reason = `Punido por: ${message.author.username}`; } else { reason = - `Punido por: ${message.author.username} com o Motivo: ` + - args.join(' ').slice(19); + `Punido por: ${message.author.username} com o Motivo: ${reason}`; } const embed = new Discord.RichEmbed() diff --git a/src/Commands/kick.js b/src/Commands/kick.js index b442933..af22b8e 100644 --- a/src/Commands/kick.js +++ b/src/Commands/kick.js @@ -23,7 +23,7 @@ const { date } = require('../Utils'); const dateFormat = require('dateformat'); const now = new Date(); -exports.run = async (aruna, message, args) => { +exports.run = async (aruna, message, args, langc, prefix, command) => { const error1 = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) @@ -91,13 +91,21 @@ exports.run = async (aruna, message, args) => { return message.channel.send(error6); } - var reason = ''; - if (!args.join(' ').slice(19)) { + var reason = message.content.slice(command.length + prefix.length).trim(); + + if (args[0].includes('<@!') && args[0].includes('>')) { + reason = reason.slice(5 + kuser.id.length).trim(); + } else if (args[0].includes('<@') && args[0].includes('>')) { + reason = reason.slice(4 + kuser.id.length).trim(); + } else { + reason = reason.slice(kuser.id.length).trim(); + } + + if (!reason) { reason = `Punido por: ${message.author.username}`; } else { reason = - `Punido por: ${message.author.username} com o Motivo: ` + - args.join(' ').slice(19); + `Punido por: ${message.author.username} com o Motivo: ${reason}`; } const embed = new Discord.RichEmbed() diff --git a/src/Commands/unban.js b/src/Commands/unban.js index aef266b..11b91bf 100644 --- a/src/Commands/unban.js +++ b/src/Commands/unban.js @@ -18,7 +18,7 @@ const Discord = require('discord.js'); -exports.run = async (aruna, message, args) => { +exports.run = async (aruna, message, args, langc, prefix, command) => { const error1 = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) @@ -55,13 +55,13 @@ exports.run = async (aruna, message, args) => { if (!unBuser) return message.channel.send(error3); - var reason = ''; - if (!args.join(' ').slice(19)) { + var reason = message.content.slice(command.length + prefix.length + unBuser.id.length).trim(); + + if (!reason) { reason = `Desbanido por: ${message.author.username}`; } else { reason = - `Desbanido por: ${message.author.username} com o Motivo: ` + - args.join(' ').slice(19); + `Desbanido por: ${message.author.username} com o Motivo: ${reason}`; } const embed = new Discord.RichEmbed() From ccbf2f28578919c4d413fff7881ca22b224a758f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 13 Sep 2020 22:47:08 -0300 Subject: [PATCH 075/164] Global Shard Manager --- src/Commands/bot.js | 2 +- src/Commands/suporte.js | 3 +-- src/sharding.js | 8 +++++--- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Commands/bot.js b/src/Commands/bot.js index 95a1d41..c0a5357 100644 --- a/src/Commands/bot.js +++ b/src/Commands/bot.js @@ -56,7 +56,7 @@ exports.run = (aruna, message) => { .addField('(🕹️) Usuários', `${aruna.users.size}`, true) .addField('(💻) Seu Shard', `${aruna.shard.id}`, true) .addField('(💠) Status do Shard', 'ONLINE', true) /** @todo status verdadeiro e-e */ - .addField('(🏓) Ping do Shard', `${aruna.ping}ms`, true) /** @todo ping do shard, não do bot */ + .addField('(🏓) Shards Totais', `${global.shardingManager.totalShards}`, true) .addField( 'Convite', `${links.invites[0] ? `[Link](${links.invites[0]})` : 'INDISPONÍVEL'}`, diff --git a/src/Commands/suporte.js b/src/Commands/suporte.js index 1db4be4..67aa233 100644 --- a/src/Commands/suporte.js +++ b/src/Commands/suporte.js @@ -24,8 +24,7 @@ exports.run = async (aruna, message) => { `Olá, ${message.author.username}` ) .setDescription(`Encontrou algum erro esquisito, tem alguma reclamação ou sugestões para mim? -\nPara isso, basta clicar [aqui]( -https://discord.gg/NqbBgEf) e venha conversar com meus desenvolvedores!`); + \nPara isso, basta clicar [aqui](https://discord.gg/NqbBgEf) e venha conversar com meus desenvolvedores!`); message.channel.send(embed); }; diff --git a/src/sharding.js b/src/sharding.js index ad03e91..8501026 100644 --- a/src/sharding.js +++ b/src/sharding.js @@ -28,6 +28,8 @@ const manager = new Discord.ShardingManager(`./${pkg.main}`, { totalShards: config.sharding.totalShards }); +global.shardingManager = manager; + const infoPrefix = `${chalk.gray('[')}${chalk.green(language.generic.core.toUpperCase())}${chalk.gray(']')}`; const errorPrefix = `${chalk.gray('[')}${chalk.red(language.generic.core.toUpperCase())}${chalk.gray(']')}`; const logPrefix = `${chalk.gray('[')}${chalk.yellow(language.shard.master)}${chalk.gray(']')}`; @@ -36,12 +38,12 @@ console.log(language.initialization.initializing.replace('[prefix]', infoPrefix) manager.on('launch', shard => console.log(`${infoPrefix} ${logPrefix} ${shard.id} (${shard.id + 1}/${manager.totalShards}) ${language.shard.launch.replace('[shard] ', '')}`)); process.on('exit', code => { - console.error(`${errorPrefix} ${language.initialization.fail}`) - console.exception(`${errorPrefix} ${logPrefix} ${chalk.red(language.shard.exit)} ${language.shard.exitCode}`, code) + console.error(`${errorPrefix} ${language.initialization.fail}`); + console.exception(`${errorPrefix} ${logPrefix} ${chalk.red(language.shard.exit)} ${language.shard.exitCode}`, code); }); console.log(language.shard.startGeneration.replace('[logPrefix]', `${infoPrefix} ${logPrefix}`)); manager.spawn(config.sharding.totalShards, config.sharding.delay).then(() => { console.log(`${infoPrefix} ${logPrefix} ${chalk.green(language.shard.finishGeneration)}`); - console.log(`${infoPrefix} ${language.initialization.complete}`) + console.log(`${infoPrefix} ${language.initialization.complete}`); }); \ No newline at end of file From 5034989eafa51087bbdab8e4ad46578c42413d9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 13 Sep 2020 22:55:23 -0300 Subject: [PATCH 076/164] Revert "Global Shard Manager" This reverts commit ccbf2f28578919c4d413fff7881ca22b224a758f. --- src/Commands/bot.js | 2 +- src/Commands/suporte.js | 3 ++- src/sharding.js | 8 +++----- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/Commands/bot.js b/src/Commands/bot.js index c0a5357..95a1d41 100644 --- a/src/Commands/bot.js +++ b/src/Commands/bot.js @@ -56,7 +56,7 @@ exports.run = (aruna, message) => { .addField('(🕹️) Usuários', `${aruna.users.size}`, true) .addField('(💻) Seu Shard', `${aruna.shard.id}`, true) .addField('(💠) Status do Shard', 'ONLINE', true) /** @todo status verdadeiro e-e */ - .addField('(🏓) Shards Totais', `${global.shardingManager.totalShards}`, true) + .addField('(🏓) Ping do Shard', `${aruna.ping}ms`, true) /** @todo ping do shard, não do bot */ .addField( 'Convite', `${links.invites[0] ? `[Link](${links.invites[0]})` : 'INDISPONÍVEL'}`, diff --git a/src/Commands/suporte.js b/src/Commands/suporte.js index 67aa233..1db4be4 100644 --- a/src/Commands/suporte.js +++ b/src/Commands/suporte.js @@ -24,7 +24,8 @@ exports.run = async (aruna, message) => { `Olá, ${message.author.username}` ) .setDescription(`Encontrou algum erro esquisito, tem alguma reclamação ou sugestões para mim? - \nPara isso, basta clicar [aqui](https://discord.gg/NqbBgEf) e venha conversar com meus desenvolvedores!`); +\nPara isso, basta clicar [aqui]( +https://discord.gg/NqbBgEf) e venha conversar com meus desenvolvedores!`); message.channel.send(embed); }; diff --git a/src/sharding.js b/src/sharding.js index 8501026..ad03e91 100644 --- a/src/sharding.js +++ b/src/sharding.js @@ -28,8 +28,6 @@ const manager = new Discord.ShardingManager(`./${pkg.main}`, { totalShards: config.sharding.totalShards }); -global.shardingManager = manager; - const infoPrefix = `${chalk.gray('[')}${chalk.green(language.generic.core.toUpperCase())}${chalk.gray(']')}`; const errorPrefix = `${chalk.gray('[')}${chalk.red(language.generic.core.toUpperCase())}${chalk.gray(']')}`; const logPrefix = `${chalk.gray('[')}${chalk.yellow(language.shard.master)}${chalk.gray(']')}`; @@ -38,12 +36,12 @@ console.log(language.initialization.initializing.replace('[prefix]', infoPrefix) manager.on('launch', shard => console.log(`${infoPrefix} ${logPrefix} ${shard.id} (${shard.id + 1}/${manager.totalShards}) ${language.shard.launch.replace('[shard] ', '')}`)); process.on('exit', code => { - console.error(`${errorPrefix} ${language.initialization.fail}`); - console.exception(`${errorPrefix} ${logPrefix} ${chalk.red(language.shard.exit)} ${language.shard.exitCode}`, code); + console.error(`${errorPrefix} ${language.initialization.fail}`) + console.exception(`${errorPrefix} ${logPrefix} ${chalk.red(language.shard.exit)} ${language.shard.exitCode}`, code) }); console.log(language.shard.startGeneration.replace('[logPrefix]', `${infoPrefix} ${logPrefix}`)); manager.spawn(config.sharding.totalShards, config.sharding.delay).then(() => { console.log(`${infoPrefix} ${logPrefix} ${chalk.green(language.shard.finishGeneration)}`); - console.log(`${infoPrefix} ${language.initialization.complete}`); + console.log(`${infoPrefix} ${language.initialization.complete}`) }); \ No newline at end of file From b5261c1ba4d1c9dcce52d7878d7a9d9954f9b968 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 13 Sep 2020 22:56:46 -0300 Subject: [PATCH 077/164] ; --- src/Commands/bot.js | 2 +- src/sharding.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Commands/bot.js b/src/Commands/bot.js index 95a1d41..a133a96 100644 --- a/src/Commands/bot.js +++ b/src/Commands/bot.js @@ -30,7 +30,7 @@ exports.run = (aruna, message) => { const minutes = Math.floor(totalSeconds / 60); const seconds = Math.floor(totalSeconds % 60); - var uptime = ''; + var uptime; if (days >= 1) { uptime = `${days}d, ${hours}h, ${minutes}m`; diff --git a/src/sharding.js b/src/sharding.js index ad03e91..7d4c574 100644 --- a/src/sharding.js +++ b/src/sharding.js @@ -36,12 +36,12 @@ console.log(language.initialization.initializing.replace('[prefix]', infoPrefix) manager.on('launch', shard => console.log(`${infoPrefix} ${logPrefix} ${shard.id} (${shard.id + 1}/${manager.totalShards}) ${language.shard.launch.replace('[shard] ', '')}`)); process.on('exit', code => { - console.error(`${errorPrefix} ${language.initialization.fail}`) - console.exception(`${errorPrefix} ${logPrefix} ${chalk.red(language.shard.exit)} ${language.shard.exitCode}`, code) + console.error(`${errorPrefix} ${language.initialization.fail}`); + console.exception(`${errorPrefix} ${logPrefix} ${chalk.red(language.shard.exit)} ${language.shard.exitCode}`, code); }); console.log(language.shard.startGeneration.replace('[logPrefix]', `${infoPrefix} ${logPrefix}`)); manager.spawn(config.sharding.totalShards, config.sharding.delay).then(() => { console.log(`${infoPrefix} ${logPrefix} ${chalk.green(language.shard.finishGeneration)}`); - console.log(`${infoPrefix} ${language.initialization.complete}`) + console.log(`${infoPrefix} ${language.initialization.complete}`); }); \ No newline at end of file From 521e18480d24bffccb6db34398595522186eff8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 13 Sep 2020 23:08:29 -0300 Subject: [PATCH 078/164] More translations --- languages | 2 +- src/Events/guildCreate.js | 4 +++- src/Events/guildDelete.js | 6 ++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/languages b/languages index a9454e1..1b7f929 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit a9454e1f6f2cbeeb135799aba5fd5031ab671613 +Subproject commit 1b7f929518c4556f129a6126f34cb4fc6a5ad0b2 diff --git a/src/Events/guildCreate.js b/src/Events/guildCreate.js index 01ad17e..8aae5ee 100644 --- a/src/Events/guildCreate.js +++ b/src/Events/guildCreate.js @@ -18,6 +18,8 @@ var { config, database } = require('../../Configs'); +const lang = require(`../../languages/bot/${config.language}/events.json`); + exports.run = async (aruna, guild) => { var language; if (guild.region == 'brazil') { @@ -27,5 +29,5 @@ exports.run = async (aruna, guild) => { } var saveG = await new database.Guilds({ _id: guild.id, language: language }); await saveG.save(); - console.log('New Server Entry! :)'); + console.log(lang.guild.create); }; diff --git a/src/Events/guildDelete.js b/src/Events/guildDelete.js index 10feed8..d18a8a1 100644 --- a/src/Events/guildDelete.js +++ b/src/Events/guildDelete.js @@ -16,9 +16,11 @@ along with this program. If not, see . */ -var { database } = require('../../Configs'); +var { config, database } = require('../../Configs'); + +const lang = require(`../../languages/bot/${config.language}/events.json`); exports.run = async (aruna, guild) => { await database.Guilds.findOneAndDelete({ _id: guild.id }); - console.log('Server Removed :('); + console.log(lang.guild.delete); }; \ No newline at end of file From 5b3f689f01e716aa1dfdc98f9f570cff07625b4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 13 Sep 2020 23:16:53 -0300 Subject: [PATCH 079/164] Update Dependencies and Fix Vulnerability --- package-lock.json | 490 +++++++++++++++++++++++++--------------------- package.json | 14 +- 2 files changed, 273 insertions(+), 231 deletions(-) diff --git a/package-lock.json b/package-lock.json index deb527a..2fcca8a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -116,23 +116,58 @@ "node-addon-api": "^2.0.0" } }, + "@eslint/eslintrc": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.1.3.tgz", + "integrity": "sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + } + } + }, "@jimp/bmp": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.0.tgz", - "integrity": "sha512-lc4Ecyys6mRpKHLjFefkS1irCeIBTCpDBjKvNkU/6cIeIMXrFhv290MDT0WCL4UNFjJC/oU2PPraq+M+RkAcpA==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.1.tgz", + "integrity": "sha512-iwyNYQeBawrdg/f24x3pQ5rEx+/GwjZcCXd3Kgc+ZUd+Ivia7sIqBsOnDaMZdKCBPlfW364ekexnlOqyVa0NWg==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0", + "@jimp/utils": "^0.16.1", "bmp-js": "^0.1.0" } }, "@jimp/core": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.0.tgz", - "integrity": "sha512-7WBYr3BX84fc9tuA86EDhAKNyT9QLcbVYk4whwvshxKtODPxlF1hmZU6Xmx2shoJ62JJtiWLsPsXAHKfEuERtQ==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.1.tgz", + "integrity": "sha512-la7kQia31V6kQ4q1kI/uLimu8FXx7imWVajDGtwUG8fzePLWDFJyZl0fdIXVCL1JW2nBcRHidUot6jvlRDi2+g==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0", + "@jimp/utils": "^0.16.1", "any-base": "^1.1.0", "buffer": "^5.2.0", "exif-parser": "^0.1.12", @@ -145,293 +180,293 @@ } }, "@jimp/custom": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.0.tgz", - "integrity": "sha512-xN9WHeW2RP3gLdXdehCgnzKq8l9ezMsfWpkZP0HYtGqwGDSRXx+LNGR2Da1J/tV0pB+qbt67gAXtaxkJwdQ3cA==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.1.tgz", + "integrity": "sha512-DNUAHNSiUI/j9hmbatD6WN/EBIyeq4AO0frl5ETtt51VN1SvE4t4v83ZA/V6ikxEf3hxLju4tQ5Pc3zmZkN/3A==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/core": "^0.16.0" + "@jimp/core": "^0.16.1" } }, "@jimp/gif": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.0.tgz", - "integrity": "sha512-thc3C6/dvGKEVTMxiX82ruRAitIx7EstThqzrd0qk7Yf2O3qbrRZuENl6KNn2PXpmkr6fjcfFLWVM39bP4MG1Q==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.1.tgz", + "integrity": "sha512-r/1+GzIW1D5zrP4tNrfW+3y4vqD935WBXSc8X/wm23QTY9aJO9Lw6PEdzpYCEY+SOklIFKaJYUAq/Nvgm/9ryw==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0", + "@jimp/utils": "^0.16.1", "gifwrap": "^0.9.2", "omggif": "^1.0.9" } }, "@jimp/jpeg": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.0.tgz", - "integrity": "sha512-pzlv92YZi7ySvIICNkB0eMphLztBcTAMH2kl5lxFMzF1FDv2FR2d/FI1ph6DSzBV8VYFDu4AM1lJRq3hFJurgQ==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.1.tgz", + "integrity": "sha512-8352zrdlCCLFdZ/J+JjBslDvml+fS3Z8gttdml0We759PnnZGqrnPRhkOEOJbNUlE+dD4ckLeIe6NPxlS/7U+w==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0", - "jpeg-js": "^0.4.0" + "@jimp/utils": "^0.16.1", + "jpeg-js": "0.4.2" } }, "@jimp/plugin-blit": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.0.tgz", - "integrity": "sha512-CrakcEvr2ztOwECKpuwmwhXArbtDP2SB44WV0wrFXtuss2mkBbL/hIkUmTnLyJGpwIflj4Vww9m5yIreG5lgUQ==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.1.tgz", + "integrity": "sha512-fKFNARm32RoLSokJ8WZXHHH2CGzz6ire2n1Jh6u+XQLhk9TweT1DcLHIXwQMh8oR12KgjbgsMGvrMVlVknmOAg==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0" + "@jimp/utils": "^0.16.1" } }, "@jimp/plugin-blur": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.0.tgz", - "integrity": "sha512-CfTrQR4JY+DGtGbdAbdZgbUpjOqtcF+kmGOoa1uh3NF16tn1glbE8/0SA9YkgvHxNTmekwuT7Lu0nRq09MKVJw==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.1.tgz", + "integrity": "sha512-1WhuLGGj9MypFKRcPvmW45ht7nXkOKu+lg3n2VBzIB7r4kKNVchuI59bXaCYQumOLEqVK7JdB4glaDAbCQCLyw==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0" + "@jimp/utils": "^0.16.1" } }, "@jimp/plugin-circle": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.0.tgz", - "integrity": "sha512-O79288GKwUIxpHR3qyYg0paH/Iegz+Bdo2ePIvD/M3MigEzVdj5dJ/CQXz2cUnJx87rc0k1N5cTI4floIgv0tg==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.1.tgz", + "integrity": "sha512-JK7yi1CIU7/XL8hdahjcbGA3V7c+F+Iw+mhMQhLEi7Q0tCnZ69YJBTamMiNg3fWPVfMuvWJJKOBRVpwNTuaZRg==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0" + "@jimp/utils": "^0.16.1" } }, "@jimp/plugin-color": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.0.tgz", - "integrity": "sha512-S4CbN1r5+VjUF9OBIyWxWBTXRNutLQqAAOkq7QX//lS4HY76eOAafgWWwZR7ci9WWZT8uyyw4tfd4ePoBvoYhw==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.1.tgz", + "integrity": "sha512-9yQttBAO5SEFj7S6nJK54f+1BnuBG4c28q+iyzm1JjtnehjqMg6Ljw4gCSDCvoCQ3jBSYHN66pmwTV74SU1B7A==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0", + "@jimp/utils": "^0.16.1", "tinycolor2": "^1.4.1" } }, "@jimp/plugin-contain": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.0.tgz", - "integrity": "sha512-ZAVe9ad0/TDLSPutIP/8Z+jXXOv638w/FZeA3avTAI5GfWV7ZBT6BB7kDI3iZTl+SHUjv/MlzHCS99WCnpc1hg==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.1.tgz", + "integrity": "sha512-44F3dUIjBDHN+Ym/vEfg+jtjMjAqd2uw9nssN67/n4FdpuZUVs7E7wadKY1RRNuJO+WgcD5aDQcsvurXMETQTg==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0" + "@jimp/utils": "^0.16.1" } }, "@jimp/plugin-cover": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.0.tgz", - "integrity": "sha512-gJGorvc4HOeSR0dNR29mYLLXtrWvgj8da0B/lUJSb0R2AvUrb+VgLKSfFPyf+nL/jtcm9/CJzYhAPcz13zmRKA==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.1.tgz", + "integrity": "sha512-YztWCIldBAVo0zxcQXR+a/uk3/TtYnpKU2CanOPJ7baIuDlWPsG+YE4xTsswZZc12H9Kl7CiziEbDtvF9kwA/Q==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0" + "@jimp/utils": "^0.16.1" } }, "@jimp/plugin-crop": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.0.tgz", - "integrity": "sha512-I5McmdrNodg0iU815qOsuI8CjkwiRsFRTY4/LBOsLGHZasvxhzFxGcwD3SgnohdIkhRc3tX8jfvKg2pdPbD2AA==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.1.tgz", + "integrity": "sha512-UQdva9oQzCVadkyo3T5Tv2CUZbf0klm2cD4cWMlASuTOYgaGaFHhT9st+kmfvXjKL8q3STkBu/zUPV6PbuV3ew==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0" + "@jimp/utils": "^0.16.1" } }, "@jimp/plugin-displace": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.0.tgz", - "integrity": "sha512-+c5n5jDiN/neAuAxAAy55Gpycgmyay1PwUy8qKM1fgfBE874mrF5C4u1ThFz4OiDkRirKLpncRmrUMHa9boZtA==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.1.tgz", + "integrity": "sha512-iVAWuz2+G6Heu8gVZksUz+4hQYpR4R0R/RtBzpWEl8ItBe7O6QjORAkhxzg+WdYLL2A/Yd4ekTpvK0/qW8hTVw==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0" + "@jimp/utils": "^0.16.1" } }, "@jimp/plugin-dither": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.0.tgz", - "integrity": "sha512-rsLHSGnpWniQXoughYXRCbK/8KKXi+avV5z5mHIKzAKS4areXW03XlLqmy9o26q2h0g/YV5Hkxo9jwIw0v2Fpg==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.1.tgz", + "integrity": "sha512-tADKVd+HDC9EhJRUDwMvzBXPz4GLoU6s5P7xkVq46tskExYSptgj5713J5Thj3NMgH9Rsqu22jNg1H/7tr3V9Q==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0" + "@jimp/utils": "^0.16.1" } }, "@jimp/plugin-fisheye": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.0.tgz", - "integrity": "sha512-P6KsHQHUOWyDprxKl4chPTwKIJNbXB7LGDQH6Bq/q8zZ9XwYXGnTmkHA/BwGKI6HGCj/+R2WoP3Cnhwm6XaIpg==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.1.tgz", + "integrity": "sha512-BWHnc5hVobviTyIRHhIy9VxI1ACf4CeSuCfURB6JZm87YuyvgQh5aX5UDKtOz/3haMHXBLP61ZBxlNpMD8CG4A==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0" + "@jimp/utils": "^0.16.1" } }, "@jimp/plugin-flip": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.0.tgz", - "integrity": "sha512-5MlqM1RJohk0NU0Z3ZtviI0DqHXDB0OuRk3dimUIquePz1OocFCt9Z4bBbDRIczGZFOrDrCrpHMfMxPjwm7eXw==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.1.tgz", + "integrity": "sha512-KdxTf0zErfZ8DyHkImDTnQBuHby+a5YFdoKI/G3GpBl3qxLBvC+PWkS2F/iN3H7wszP7/TKxTEvWL927pypT0w==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0" + "@jimp/utils": "^0.16.1" } }, "@jimp/plugin-gaussian": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.0.tgz", - "integrity": "sha512-oP2Hg4gR4uq9id1gF+SfTvPrzqZc3fVY+t6gwxPXPgpnb9S5UVuSQbwtixY1EEBC9XRdX2XFko9eUul8dTnUpQ==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.1.tgz", + "integrity": "sha512-u9n4wjskh3N1mSqketbL6tVcLU2S5TEaFPR40K6TDv4phPLZALi1Of7reUmYpVm8mBDHt1I6kGhuCJiWvzfGyg==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0" + "@jimp/utils": "^0.16.1" } }, "@jimp/plugin-invert": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.0.tgz", - "integrity": "sha512-RFsES55G7po6rv35A/3jz7IA1BOr8krX4H0zmtKUprcrhFl+El9iZojVCpJQRJ5QKQVS3iXi5H6EGN7AT1HykQ==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.1.tgz", + "integrity": "sha512-2DKuyVXANH8WDpW9NG+PYFbehzJfweZszFYyxcaewaPLN0GxvxVLOGOPP1NuUTcHkOdMFbE0nHDuB7f+sYF/2w==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0" + "@jimp/utils": "^0.16.1" } }, "@jimp/plugin-mask": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.0.tgz", - "integrity": "sha512-inJweZgTNYZQdF0m5f/or5/LCLhpz4ccSDsK9HveuFQ82ITfJcvFaUlvlo11pHRl2r+Q92Er7B5g7icMIzXHZw==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.1.tgz", + "integrity": "sha512-snfiqHlVuj4bSFS0v96vo2PpqCDMe4JB+O++sMo5jF5mvGcGL6AIeLo8cYqPNpdO6BZpBJ8MY5El0Veckhr39Q==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0" + "@jimp/utils": "^0.16.1" } }, "@jimp/plugin-normalize": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.0.tgz", - "integrity": "sha512-sfqhHDGks0ccqIaTCG/dFJ772eGi8bewxIvrQkeLw5TizzPZ3S+C4GXKwlkX2z5dyQr30cHM5Mv6+XhNNLEHWw==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.1.tgz", + "integrity": "sha512-dOQfIOvGLKDKXPU8xXWzaUeB0nvkosHw6Xg1WhS1Z5Q0PazByhaxOQkSKgUryNN/H+X7UdbDvlyh/yHf3ITRaw==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0" + "@jimp/utils": "^0.16.1" } }, "@jimp/plugin-print": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.0.tgz", - "integrity": "sha512-tQJfSOTf+las/PJpdUK9Aw9EdComQ50zl29TgMrAULuae1lh+e/A188ZhNQzTCpAAc/PEku8xoke+rYUU1AVig==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.1.tgz", + "integrity": "sha512-ceWgYN40jbN4cWRxixym+csyVymvrryuKBQ+zoIvN5iE6OyS+2d7Mn4zlNgumSczb9GGyZZESIgVcBDA1ezq0Q==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0", + "@jimp/utils": "^0.16.1", "load-bmfont": "^1.4.0" } }, "@jimp/plugin-resize": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.0.tgz", - "integrity": "sha512-aI5H1Xe1fE1phBBI0EgQiVgMEXJ7cy2CXH+H7WSxnrdZJTnt9emzc4LnvKEOPBY6dCPw3P7k/BHp9SDTpUKSOQ==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.1.tgz", + "integrity": "sha512-u4JBLdRI7dargC04p2Ha24kofQBk3vhaf0q8FwSYgnCRwxfvh2RxvhJZk9H7Q91JZp6wgjz/SjvEAYjGCEgAwQ==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0" + "@jimp/utils": "^0.16.1" } }, "@jimp/plugin-rotate": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.0.tgz", - "integrity": "sha512-YTKo4LntC2h46H6+De+3ctt8MacC+fTbIdw527BBBIKF44aWYn0uAQlAO+R+Aemnq4YqNnCnrZzPtWYZXA6nNw==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.1.tgz", + "integrity": "sha512-ZUU415gDQ0VjYutmVgAYYxC9Og9ixu2jAGMCU54mSMfuIlmohYfwARQmI7h4QB84M76c9hVLdONWjuo+rip/zg==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0" + "@jimp/utils": "^0.16.1" } }, "@jimp/plugin-scale": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.0.tgz", - "integrity": "sha512-AfDnTIjBzGdvJ1K7MkUexgkGGAYDzpNzkYoCpfaRNKl/txoivaA6iKfvCiE7i1IDXq5mRCLkjQjMF43l8kwv5g==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.1.tgz", + "integrity": "sha512-jM2QlgThIDIc4rcyughD5O7sOYezxdafg/2Xtd1csfK3z6fba3asxDwthqPZAgitrLgiKBDp6XfzC07Y/CefUw==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0" + "@jimp/utils": "^0.16.1" } }, "@jimp/plugin-shadow": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.0.tgz", - "integrity": "sha512-8O1CKwvSnrrAIuAM3BEDTwt4U5oRVB5pXxnRegYXDuFFLDPIp2N4ILQqC2NaN+PBaVvj1JuLYuxmNzja0uRQKQ==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.1.tgz", + "integrity": "sha512-MeD2Is17oKzXLnsphAa1sDstTu6nxscugxAEk3ji0GV1FohCvpHBcec0nAq6/czg4WzqfDts+fcPfC79qWmqrA==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0" + "@jimp/utils": "^0.16.1" } }, "@jimp/plugin-threshold": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.0.tgz", - "integrity": "sha512-PNrB6IIF7kDGu7A/cyNAy3pchWtXbJGdpowkW6hcEzXOR+FwBRMuo5LS+q/eedo86qQ2F1vw5dm/nWYJxNxvkg==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.1.tgz", + "integrity": "sha512-iGW8U/wiCSR0+6syrPioVGoSzQFt4Z91SsCRbgNKTAk7D+XQv6OI78jvvYg4o0c2FOlwGhqz147HZV5utoSLxA==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0" + "@jimp/utils": "^0.16.1" } }, "@jimp/plugins": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.0.tgz", - "integrity": "sha512-aiyn/9MrSqVJwsnBmkbHD4DWTowULdP4NEes8Vt738KxZMw1UawKbEbj3/CzHIeEIQKjDECTi+jNd5HIbDq9LQ==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.1.tgz", + "integrity": "sha512-c+lCqa25b+4q6mJZSetlxhMoYuiltyS+ValLzdwK/47+aYsq+kcJNl+TuxIEKf59yr9+5rkbpsPkZHLF/V7FFA==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/plugin-blit": "^0.16.0", - "@jimp/plugin-blur": "^0.16.0", - "@jimp/plugin-circle": "^0.16.0", - "@jimp/plugin-color": "^0.16.0", - "@jimp/plugin-contain": "^0.16.0", - "@jimp/plugin-cover": "^0.16.0", - "@jimp/plugin-crop": "^0.16.0", - "@jimp/plugin-displace": "^0.16.0", - "@jimp/plugin-dither": "^0.16.0", - "@jimp/plugin-fisheye": "^0.16.0", - "@jimp/plugin-flip": "^0.16.0", - "@jimp/plugin-gaussian": "^0.16.0", - "@jimp/plugin-invert": "^0.16.0", - "@jimp/plugin-mask": "^0.16.0", - "@jimp/plugin-normalize": "^0.16.0", - "@jimp/plugin-print": "^0.16.0", - "@jimp/plugin-resize": "^0.16.0", - "@jimp/plugin-rotate": "^0.16.0", - "@jimp/plugin-scale": "^0.16.0", - "@jimp/plugin-shadow": "^0.16.0", - "@jimp/plugin-threshold": "^0.16.0", + "@jimp/plugin-blit": "^0.16.1", + "@jimp/plugin-blur": "^0.16.1", + "@jimp/plugin-circle": "^0.16.1", + "@jimp/plugin-color": "^0.16.1", + "@jimp/plugin-contain": "^0.16.1", + "@jimp/plugin-cover": "^0.16.1", + "@jimp/plugin-crop": "^0.16.1", + "@jimp/plugin-displace": "^0.16.1", + "@jimp/plugin-dither": "^0.16.1", + "@jimp/plugin-fisheye": "^0.16.1", + "@jimp/plugin-flip": "^0.16.1", + "@jimp/plugin-gaussian": "^0.16.1", + "@jimp/plugin-invert": "^0.16.1", + "@jimp/plugin-mask": "^0.16.1", + "@jimp/plugin-normalize": "^0.16.1", + "@jimp/plugin-print": "^0.16.1", + "@jimp/plugin-resize": "^0.16.1", + "@jimp/plugin-rotate": "^0.16.1", + "@jimp/plugin-scale": "^0.16.1", + "@jimp/plugin-shadow": "^0.16.1", + "@jimp/plugin-threshold": "^0.16.1", "timm": "^1.6.1" } }, "@jimp/png": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.0.tgz", - "integrity": "sha512-3uDwCeZRaHTq6Jqjav37n73IGL4vrDkoHLzkC+dAGcSdaKnUnRxD/sO4CBTK1cHttJhsf5Xk/+0dO+qaqIEvNA==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.1.tgz", + "integrity": "sha512-iyWoCxEBTW0OUWWn6SveD4LePW89kO7ZOy5sCfYeDM/oTPLpR8iMIGvZpZUz1b8kvzFr27vPst4E5rJhGjwsdw==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.0", + "@jimp/utils": "^0.16.1", "pngjs": "^3.3.3" } }, "@jimp/tiff": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.0.tgz", - "integrity": "sha512-wiGgIKGtUwR7vUi+PHv7qzEKhlnqT/k78qtOgsF6PiGhXGevJWBIniD4LksbQaW+Ph1Jwl3ovvYEdS89Db46Bw==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.1.tgz", + "integrity": "sha512-3K3+xpJS79RmSkAvFMgqY5dhSB+/sxhwTFA9f4AVHUK0oKW+u6r52Z1L0tMXHnpbAdR9EJ+xaAl2D4x19XShkQ==", "requires": { "@babel/runtime": "^7.7.2", "utif": "^2.0.1" } }, "@jimp/types": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.0.tgz", - "integrity": "sha512-T0VBF1HFXZ+Ez48zQ0sxrOpcFbfSzCulaVONWeEi/CqcNv2B7UmiaA81bw9uLGZ40VIOrFYHB20ma0m1asYBvw==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.1.tgz", + "integrity": "sha512-g1w/+NfWqiVW4CaXSJyD28JQqZtm2eyKMWPhBBDCJN9nLCN12/Az0WFF3JUAktzdsEC2KRN2AqB1a2oMZBNgSQ==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/bmp": "^0.16.0", - "@jimp/gif": "^0.16.0", - "@jimp/jpeg": "^0.16.0", - "@jimp/png": "^0.16.0", - "@jimp/tiff": "^0.16.0", + "@jimp/bmp": "^0.16.1", + "@jimp/gif": "^0.16.1", + "@jimp/jpeg": "^0.16.1", + "@jimp/png": "^0.16.1", + "@jimp/tiff": "^0.16.1", "timm": "^1.6.1" } }, "@jimp/utils": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.0.tgz", - "integrity": "sha512-dZJd5Rq4yOjPtqN/bArNy0v03nnaiHCf/Qct2wdiqK0k4wsfDL2Lle9XmswNcPPFuoL/LNnYY2E5ruAnatF/4A==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.1.tgz", + "integrity": "sha512-8fULQjB0x4LzUSiSYG6ZtQl355sZjxbv8r9PPAuYHzS9sGiSHJQavNqK/nKnpDsVkU88/vRGcE7t3nMU0dEnVw==", "requires": { "@babel/runtime": "^7.7.2", "regenerator-runtime": "^0.13.3" @@ -463,15 +498,15 @@ "dev": true }, "acorn-jsx": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", "dev": true }, "ajv": { - "version": "6.12.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", - "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", + "version": "6.12.5", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.5.tgz", + "integrity": "sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -560,9 +595,9 @@ "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" }, "bl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.0.tgz", - "integrity": "sha512-wbgvOpqopSr7uq6fJrLH8EsvYMJf9gzfo2jCsL2eTy75qXPukA4pCgHamOQkZtY5vmfVtjB+P3LNlMHW5CEZXA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", + "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", "requires": { "readable-stream": "^2.3.5", "safe-buffer": "^5.1.1" @@ -620,9 +655,9 @@ } }, "bson": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.4.tgz", - "integrity": "sha512-S/yKGU1syOMzO86+dGpg2qGoDL0zvzcb262G+gqEy6TgP6rt6z6qxSFX/8X6vLC91P7G7C3nLs0+bvDzmvBA3Q==" + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.5.tgz", + "integrity": "sha512-kDuEzldR21lHciPQAIulLs1LZlCXdLziXI6Mb/TDkwXhb//UORJNPXgcRs2CuO4H0DcMkpfT3/ySsP3unoZjBg==" }, "buffer": { "version": "5.6.0", @@ -885,12 +920,13 @@ "dev": true }, "eslint": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.6.0.tgz", - "integrity": "sha512-QlAManNtqr7sozWm5TF4wIH9gmUm2hE3vNRUvyoYAa4y1l5/jxD/PQStEjBMQtCqZmSep8UxrcecI60hOpe61w==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.9.0.tgz", + "integrity": "sha512-V6QyhX21+uXp4T+3nrNfI3hQNBDa/P8ga7LoQOenwrlEFXrEnUEE+ok1dMtaS3b6rmLXhT1TkTIsG75HMLbknA==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^0.1.3", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -900,7 +936,7 @@ "eslint-scope": "^5.1.0", "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^1.3.0", - "espree": "^7.2.0", + "espree": "^7.3.0", "esquery": "^1.2.0", "esutils": "^2.0.2", "file-entry-cache": "^5.0.1", @@ -961,12 +997,12 @@ } }, "eslint-scope": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", - "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "requires": { - "esrecurse": "^4.1.0", + "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } }, @@ -986,12 +1022,12 @@ "dev": true }, "espree": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.2.0.tgz", - "integrity": "sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz", + "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==", "dev": true, "requires": { - "acorn": "^7.3.1", + "acorn": "^7.4.0", "acorn-jsx": "^5.2.0", "eslint-visitor-keys": "^1.3.0" } @@ -1020,12 +1056,20 @@ } }, "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "requires": { - "estraverse": "^4.1.0" + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } } }, "estraverse": { @@ -1423,14 +1467,6 @@ "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - } } }, "imurmurhash": { @@ -1508,21 +1544,21 @@ "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=" }, "jimp": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.0.tgz", - "integrity": "sha512-WRfGlXB6/0xY3mSoskfVhWVNSegVZCgmvunJDc41QthTWi5oRG2FeL7eOcX0zz/Z+dYRu6Q0ibO2yltC+EIptA==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.1.tgz", + "integrity": "sha512-+EKVxbR36Td7Hfd23wKGIeEyHbxShZDX6L8uJkgVW3ESA9GiTEPK08tG1XI2r/0w5Ch0HyJF5kPqF9K7EmGjaw==", "requires": { "@babel/runtime": "^7.7.2", - "@jimp/custom": "^0.16.0", - "@jimp/plugins": "^0.16.0", - "@jimp/types": "^0.16.0", + "@jimp/custom": "^0.16.1", + "@jimp/plugins": "^0.16.1", + "@jimp/types": "^0.16.1", "regenerator-runtime": "^0.13.3" } }, "jpeg-js": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.1.tgz", - "integrity": "sha512-jA55yJiB5tCXEddos8JBbvW+IMrqY0y1tjjx9KNVtA+QPmu7ND5j0zkKopClpUTsaETL135uOM2XfcYG4XRjmw==" + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.2.tgz", + "integrity": "sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw==" }, "js-tokens": { "version": "4.0.0", @@ -1583,9 +1619,9 @@ } }, "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", "dev": true }, "long": { @@ -1610,9 +1646,9 @@ } }, "mathjs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-7.1.0.tgz", - "integrity": "sha512-Km6PO2UR+COs5mru5auKQKi84GKBryuL5JDdKeAxAi0QV8mH/qwpZKLnzrycxBacQ/X/4Z4Kn+gtYc5gEeWsDQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-7.2.0.tgz", + "integrity": "sha512-9UBMWBB94eyrxX8gskBzkVJZBEig2BUL8CBglQoRW4X/ljdW6hBVm8sT6Jp1MhyEp+2flKJo81qwml6twScxFw==", "requires": { "complex.js": "^2.0.11", "decimal.js": "^10.2.0", @@ -1715,9 +1751,9 @@ } }, "moment": { - "version": "2.27.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", - "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==" + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.28.0.tgz", + "integrity": "sha512-Z5KOjYmnHyd/ukynmFd/WwyXHd7L4J9vTI/nn5Ap9AVUgaAE15VvQ9MOGmJJygEUklupqIrFnor/tjTwRU+tQw==" }, "moment-duration-format": { "version": "2.3.2", @@ -1725,11 +1761,11 @@ "integrity": "sha512-cBMXjSW+fjOb4tyaVHuaVE/A5TqkukDWiOfxxAjY+PEqmmBQlLwn+8OzwPiG3brouXKY5Un4pBjAeB6UToXHaQ==" }, "mongodb": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.5.10.tgz", - "integrity": "sha512-p/C48UvTU/dr/PQEDKfb9DsCVDJWXGmdJNFC+u5FPmTQVtog69X6D8vrWHz+sJx1zJnd96sjdh9ueo7bx2ILTw==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.2.tgz", + "integrity": "sha512-sSZOb04w3HcnrrXC82NEh/YGCmBuRgR+C1hZgmmv4L6dBz4BkRse6Y8/q/neXer9i95fKUBbFi4KgeceXmbsOA==", "requires": { - "bl": "^2.2.0", + "bl": "^2.2.1", "bson": "^1.1.4", "denque": "^1.4.1", "require_optional": "^1.0.1", @@ -1738,13 +1774,13 @@ } }, "mongoose": { - "version": "5.9.28", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.9.28.tgz", - "integrity": "sha512-A8lNRk4eCQDzk+DagSMYdH94LAYrbTK83LgrUlzqdig3YXvizW3DApJqOWQ5DdhuimvsfiD0Z5NTVzXl/rgi2w==", + "version": "5.10.5", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.10.5.tgz", + "integrity": "sha512-BOQZsZn9Y79f3rWZFLD1gvOLNN5gOiGvGr5raqQ5v/T4fdAmnjXGCVynpW4SRnQLtrcCeLXyaaXVRT75863Q0w==", "requires": { "bson": "^1.1.4", "kareem": "2.3.1", - "mongodb": "3.5.10", + "mongodb": "3.6.2", "mongoose-legacy-pluralize": "1.0.2", "mpath": "0.7.0", "mquery": "3.2.2", @@ -2137,6 +2173,11 @@ "semver": "^5.1.0" }, "dependencies": { + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -2145,9 +2186,10 @@ } }, "resolve-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true }, "rimraf": { "version": "3.0.2", @@ -2384,9 +2426,9 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "superagent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-6.0.0.tgz", - "integrity": "sha512-gBiyDSUR3zbYO8za+MudSNxMFSOhKcZfQ1Anya1DWzk9R32zl++cYUFHXzP3VnyvQO8h/1/uPPA9FUDDtE+qdA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz", + "integrity": "sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==", "requires": { "component-emitter": "^1.3.0", "cookiejar": "^2.1.2", @@ -2512,9 +2554,9 @@ "dev": true }, "timm": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/timm/-/timm-1.6.2.tgz", - "integrity": "sha512-IH3DYDL1wMUwmIlVmMrmesw5lZD6N+ZOAFWEyLrtpoL9Bcrs9u7M/vyOnHzDD2SMs4irLkVjqxZbHrXStS/Nmw==" + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.0.tgz", + "integrity": "sha512-oVYHPG5KiUJ3KrbBTmW2kTauIO9E1lDEUM6K92HVuwnPfTt7W8UXZG3vqOo4tVaHRI9AHToVHqhzIUUFkDN6rA==" }, "tiny-emitter": { "version": "2.1.0", @@ -2579,9 +2621,9 @@ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -2702,9 +2744,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "ytdl-core": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-3.2.1.tgz", - "integrity": "sha512-e6vlLOc+yrdNGOqfbQvWuaI3XNx5Yp4sLGY2RPdP2gCiumhn1BDqrYjn1nUCze/LGZ8C3bFxEdUqKi2vS1aaXg==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-3.2.2.tgz", + "integrity": "sha512-DVE7uhk4WYB2Op742QQVGE/b9G7cr9kSB3ZDpDXmyRPhO55h9u8gwORlDIHWKucWVmCsdsdKzNP89QylpJEgiw==", "requires": { "html-entities": "^1.3.1", "m3u8stream": "^0.7.1", diff --git a/package.json b/package.json index c64d53e..f72c717 100644 --- a/package.json +++ b/package.json @@ -22,15 +22,15 @@ "discord.js": "^11.6.4", "express": "^4.17.1", "express-session": "^1.17.1", - "jimp": "^0.16.0", - "mathjs": "^7.1.0", - "moment": "^2.27.0", + "jimp": "^0.16.1", + "mathjs": "^7.2.0", + "moment": "^2.28.0", "moment-duration-format": "^2.3.2", - "mongoose": "^5.9.28", - "superagent": "^6.0.0", - "ytdl-core": "^3.2.1" + "mongoose": "^5.10.5", + "superagent": "^6.1.0", + "ytdl-core": "^3.2.2" }, "devDependencies": { - "eslint": "^7.6.0" + "eslint": "^7.9.0" } } From 3bcf78e0c2032f2cd358d55641cdde5351b42f62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 13 Sep 2020 23:27:46 -0300 Subject: [PATCH 080/164] Minor Bugs Fixed:tm: --- src/Events/guildCreate.js | 2 +- src/Events/guildDelete.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Events/guildCreate.js b/src/Events/guildCreate.js index 8aae5ee..305d9cf 100644 --- a/src/Events/guildCreate.js +++ b/src/Events/guildCreate.js @@ -29,5 +29,5 @@ exports.run = async (aruna, guild) => { } var saveG = await new database.Guilds({ _id: guild.id, language: language }); await saveG.save(); - console.log(lang.guild.create); + console.log(lang.guild.create.replace('[guildName]', guild.name)); }; diff --git a/src/Events/guildDelete.js b/src/Events/guildDelete.js index d18a8a1..06a8c16 100644 --- a/src/Events/guildDelete.js +++ b/src/Events/guildDelete.js @@ -22,5 +22,5 @@ const lang = require(`../../languages/bot/${config.language}/events.json`); exports.run = async (aruna, guild) => { await database.Guilds.findOneAndDelete({ _id: guild.id }); - console.log(lang.guild.delete); + console.log(lang.guild.delete.replace('[guildName]', guild.name)); }; \ No newline at end of file From 23d2010cfb4b0ca579cf3ea8ad9b8ae47fbda8e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 13 Sep 2020 23:48:11 -0300 Subject: [PATCH 081/164] more translations --- pm2.json | 9 --------- src/Events/guildMemberAdd.js | 15 ++++++++------- 2 files changed, 8 insertions(+), 16 deletions(-) delete mode 100644 pm2.json diff --git a/pm2.json b/pm2.json deleted file mode 100644 index 3be6d96..0000000 --- a/pm2.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "apps": [ - { - "name": "ArunaBot", - "script": "pnpm", - "args": "start" - } - ] -} \ No newline at end of file diff --git a/src/Events/guildMemberAdd.js b/src/Events/guildMemberAdd.js index 5024fed..d0986c6 100644 --- a/src/Events/guildMemberAdd.js +++ b/src/Events/guildMemberAdd.js @@ -17,7 +17,10 @@ */ const Discord = require('discord.js'); -var { database } = require('../../Configs'); +var { config, database } = require('../../Configs'); + +const lang = require(`../languages/bot/${config.lang}/events.json`); +const langD = require(`../languages/bot/${config.defaultLanguage}/events.json`); const serverStatsPrincipal = { guildID: '660610178009530380', @@ -32,7 +35,7 @@ exports.run = async (aruna, member) => { if (!user) { var saveU = await new database.Users({ _id: member.user.id }); await saveU.save(); - console.log('New Member on database :)'); + console.log(lang.memberAdd.db); } /* AUTOROLE MAIN GUILD*/ @@ -47,11 +50,9 @@ exports.run = async (aruna, member) => { } } else if (member.guild.id == serverStatsPrincipal.oldGuildID) { const changingMessage = new Discord.RichEmbed() - .setAuthor(`Oops, ${member.user.username}`, member.user.avatarURL) - .setFooter('Nos Vemos Em Breve :)') - .setDescription( - 'Olá! No momento estamos trocando de servidor. Por favor, peço que entre no nosso novo servidor clicando **[aqui](https://discord.gg/NqbBgEf)** :)' - ) + .setAuthor(langD.memberAdd.change.embed.title.replace('[username]', member.user.username), member.user.avatarURL) + .setFooter(langD.memberAdd.change.embed.footer.replace('[username]', member.user.username)) + .setDescription(langD.memberAdd.change.embed.description.replace('[link]', 'https://discord.gg/NqbBgEf')) .setTimestamp(); member.send(changingMessage); } From fd5f1c85467b902cc7f8a896e82d027b4ef5165f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Tue, 15 Sep 2020 21:47:50 -0300 Subject: [PATCH 082/164] Minor Bugs Fixed:tm: --- languages | 2 +- src/Events/guildMemberAdd.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/languages b/languages index 1b7f929..c6004e2 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 1b7f929518c4556f129a6126f34cb4fc6a5ad0b2 +Subproject commit c6004e21e22616a5840e7550c9e71e69e1663e1b diff --git a/src/Events/guildMemberAdd.js b/src/Events/guildMemberAdd.js index d0986c6..afa9689 100644 --- a/src/Events/guildMemberAdd.js +++ b/src/Events/guildMemberAdd.js @@ -19,8 +19,8 @@ const Discord = require('discord.js'); var { config, database } = require('../../Configs'); -const lang = require(`../languages/bot/${config.lang}/events.json`); -const langD = require(`../languages/bot/${config.defaultLanguage}/events.json`); +const lang = require(`../../languages/bot/${config.language}/events.json`); +const langD = require(`../../languages/bot/${config.defaultLanguage}/events.json`); const serverStatsPrincipal = { guildID: '660610178009530380', From 4a8dc0edbfd2533bcf4491bf6b15b454c0be889c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Wed, 16 Sep 2020 10:57:35 -0300 Subject: [PATCH 083/164] Fix #28 --- src/Commands/serverinfo.js | 34 +++++++++++++++++++++++----------- src/Commands/userinfo.js | 9 +++++---- src/Events/guildMemberAdd.js | 3 ++- 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/src/Commands/serverinfo.js b/src/Commands/serverinfo.js index 624b9c5..f3ad1ea 100644 --- a/src/Commands/serverinfo.js +++ b/src/Commands/serverinfo.js @@ -52,21 +52,25 @@ exports.run = async (aruna, message) => { if (region === 'india') region = ':flag_in: India'; if (region === 'japan') region = ':flag_jp: Japão'; if (region === 'russia') region = ':flag_ru: Rússia'; - if (region === 'singapore') region = ':flag_br: Singapura'; + if (region === 'singapore') region = ':flag_sg: Singapura'; if ( region === 'us-central' || region === 'us-east' || region === 'us-south' || region === 'us-west' - ) - region = ':flag_us: Estados Unidos'; + ) region = ':flag_us: Estados Unidos'; + var guildIcon; + + if (message.guild.iconURL.includes('a_')) { + guildIcon = message.guild.iconURL.slice(0, -3).trim() + 'gif'; + } else { + guildIcon = message.guild.iconURL; + } const embed = new Discord.RichEmbed() .setColor([0, 23, 132]) .setTitle(`${pType} ${message.guild.name}`) - .setThumbnail( - `https://cdn.discordapp.com/icons/${message.guild.id}/${message.guild.icon}.png` - ) + .setThumbnail(guildIcon) .addField(':computer: ID da Guild', message.guild.id, true) .addField(':crown: Dono', `${message.guild.owner}`, true) .addField(':earth_americas: Região', `${region}`, true) @@ -98,15 +102,23 @@ exports.run = async (aruna, message) => { }`, false ) - .addField(`${emoji.nitro} Informações sobre Impulsos`, + .setFooter(`Comando Solicitado por ${message.author.username}#${message.author.discriminator}`, message.author.avatarURL) + .setTimestamp(); + + if (message.guild.premiumSubscriptionCount >= 1 && message.guild.premiumTier >= 1) { + embed.addField(`${emoji.nitro} Informações sobre Impulsos`, `${emoji.nitro} » Nível do Impulso: ${message.guild.premiumTier} ${emoji.nitro} » Quantidade de Impulsos: ${message.guild.premiumSubscriptionCount}`, false - ) - .setFooter(`Comando Solicitado por ${message.author.username}#${message.author.discriminator}`, message.author.avatarURL) - .setTimestamp(); + ); + } else if (message.guild.premiumSubscriptionCount >= 1) { + embed.addField(`${emoji.nitro} Informações sobre Impulsos`, + `${emoji.nitro} » Quantidade de Impulsos: ${message.guild.premiumSubscriptionCount}`, + false + ); + } - message.reply(embed); + message.channel.send(embed); }; exports.config = { diff --git a/src/Commands/userinfo.js b/src/Commands/userinfo.js index b9a09d1..6b26f58 100644 --- a/src/Commands/userinfo.js +++ b/src/Commands/userinfo.js @@ -1,3 +1,4 @@ +/* eslint-disable max-len */ /* This File is part of ArunaBot Copyright (C) LoboMetalurgico (and contributors) 2019-2020 @@ -84,7 +85,7 @@ exports.run = (aruna, message, args) => { const premium = message.guild.member(message.author).premiumSinceTimestamp; var userBoost = ''; if (premium !== null) { - userBoost = `${emoji.nitro} Impulsionando Desde: ${dateFormat(message.guild.member(message.author).premiumSinceTimestamp, 'dd/mm/yyyy "às" HH:MM:ss')}\n`; + userBoost = `\n\n(${emoji.nitro}) **Impulsionando Desde:** ${dateFormat(message.guild.member(message.author).premiumSinceTimestamp, 'dd/mm/yyyy "às" HH:MM:ss')}`; } const accountCreated = dateFormat(mentionedUser.user.createdTimestamp, 'dd/mm/yyyy "às" HH:MM:ss'); const joinedIn = dateFormat(mentionedUser.joinedTimestamp, 'dd/mm/yyyy "às" HH:MM:ss'); @@ -101,13 +102,13 @@ exports.run = (aruna, message, args) => { ${userStatusEmoji} **Status:** \`${userStatus}\` ${emoji.pass} **Criou a Conta Em:** \`${accountCreated}\` (${userDaysDiscord} ${stringtime1} atrás)`, false) - .addField('Informações do Membro', ` (${emoji.discord}) **Apelido:** \`${userNickName}\` (👮) **É Administrador:** \`${userAdminServer}\` - ${userBoost} - (:date:) **Entrou Em:** \`${joinedIn}\` (${userDaysGuild} ${stringtime2} atrás)`, false) + + (:date:) **Entrou Em:** \`${joinedIn}\` (${userDaysGuild} ${stringtime2} atrás)${userBoost} + `, false) .setFooter(`Informações Solicitadas por ${message.author.tag}`, message.author.avatarURL) .setThumbnail(userAvatar) .setColor('#56eaf5') diff --git a/src/Events/guildMemberAdd.js b/src/Events/guildMemberAdd.js index afa9689..324238b 100644 --- a/src/Events/guildMemberAdd.js +++ b/src/Events/guildMemberAdd.js @@ -18,6 +18,7 @@ const Discord = require('discord.js'); var { config, database } = require('../../Configs'); +const { links } = require('../../Configs'); const lang = require(`../../languages/bot/${config.language}/events.json`); const langD = require(`../../languages/bot/${config.defaultLanguage}/events.json`); @@ -52,7 +53,7 @@ exports.run = async (aruna, member) => { const changingMessage = new Discord.RichEmbed() .setAuthor(langD.memberAdd.change.embed.title.replace('[username]', member.user.username), member.user.avatarURL) .setFooter(langD.memberAdd.change.embed.footer.replace('[username]', member.user.username)) - .setDescription(langD.memberAdd.change.embed.description.replace('[link]', 'https://discord.gg/NqbBgEf')) + .setDescription(langD.memberAdd.change.embed.description.replace('[link]', links.supportServers[0])) .setTimestamp(); member.send(changingMessage); } From 3f602c9e709b14e62536e30ab10d335f4d786c6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Thu, 17 Sep 2020 12:08:15 -0300 Subject: [PATCH 084/164] Github Languages --- languages | 2 +- src/Commands/git.js | 23 ++++++++++++++++------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/languages b/languages index c6004e2..6828a3f 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit c6004e21e22616a5840e7550c9e71e69e1663e1b +Subproject commit 6828a3f20932478a96034807e73aef4f05f8e679 diff --git a/src/Commands/git.js b/src/Commands/git.js index 8d025e6..b1c3afd 100644 --- a/src/Commands/git.js +++ b/src/Commands/git.js @@ -21,18 +21,27 @@ const { emoji } = require('../Utils'); const pkg = require('../../package.json'); const Discord = require('discord.js'); -exports.run = async (aruna, message) => { - const embed = new Discord.RichEmbed().setAuthor( - `Olá, ${message.author.username}` - ) - .setDescription(`Fico feliz que tenha gostado de mim e que queira contribuir com meu desenvolvimento :) -\nPara ver meu repositório e poder ajudar, basta clicar [aqui](${pkg.repository.url}), dar "fork" no repositório, editar minha branch "Unstable" e fazer um pull request no meu repositório principal e pronto! Você já terá contriubuído comigo :) -\nNovamente, obrigado pelo interesse e nos vemos no nosso git!`); +const { config } = require('../../Configs'); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); + +exports.run = async (aruna, message, args, langc) => { + if (langc) { + language = langc; + } + + const embed = new Discord.RichEmbed() + .setAuthor(language.generic.embed.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setDescription(`${language.github.embed.description.line1} +\n${language.github.embed.description.line2.replace('[url]', pkg.repository.url)} +\n${language.github.embed.description.line3}`) + .setFooter(language.generic.embed.footer.replace('[usertag]', message.author.tag)) + .setTimestamp(); message.channel.send(embed); }; exports.config = { name: 'github', aliases: ['git', 'repo', 'repositório', 'repositorio'], + description: language.github.config.description, category: `${emoji.robot} Utilidades` }; \ No newline at end of file From 5bbd20e0d041254cf8427f67fcf1bde7970df773 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Thu, 17 Sep 2020 12:25:11 -0300 Subject: [PATCH 085/164] Error --- src/Commands/git.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/Commands/git.js b/src/Commands/git.js index b1c3afd..fc8754a 100644 --- a/src/Commands/git.js +++ b/src/Commands/git.js @@ -29,11 +29,21 @@ exports.run = async (aruna, message, args, langc) => { language = langc; } + const error = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setDescription(language.invite.embed.error) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setTimestamp(); + + if (!pkg.repository.url) { + return message.channel.send(error); + } + const embed = new Discord.RichEmbed() .setAuthor(language.generic.embed.title.replace('[username]', message.member.displayName), message.author.avatarURL) - .setDescription(`${language.github.embed.description.line1} -\n${language.github.embed.description.line2.replace('[url]', pkg.repository.url)} -\n${language.github.embed.description.line3}`) + .setDescription(`${language.github.embed.sucess.description.line1} +\n${language.github.embed.sucess.description.line2.replace('[url]', pkg.repository.url)} +\n${language.github.embed.sucess.description.line3}`) .setFooter(language.generic.embed.footer.replace('[usertag]', message.author.tag)) .setTimestamp(); message.channel.send(embed); From fe41d7ecc981c2935fde641215da8e357c20c283 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Thu, 17 Sep 2020 12:28:36 -0300 Subject: [PATCH 086/164] Fix Error --- src/Commands/git.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Commands/git.js b/src/Commands/git.js index fc8754a..75da65b 100644 --- a/src/Commands/git.js +++ b/src/Commands/git.js @@ -31,7 +31,7 @@ exports.run = async (aruna, message, args, langc) => { const error = new Discord.RichEmbed() .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) - .setDescription(language.invite.embed.error) + .setDescription(language.invite.embed.error.description) .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) .setTimestamp(); From 38e0a666681b81baad0d40014de74d172e128c27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Thu, 17 Sep 2020 12:29:53 -0300 Subject: [PATCH 087/164] Invite String --- languages | 2 +- src/Commands/invite.js | 33 +++++++++++++++++++++++++-------- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/languages b/languages index 6828a3f..56baccf 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 6828a3f20932478a96034807e73aef4f05f8e679 +Subproject commit 56baccfcb2104d254a8f6fcedf5ab0ddbb66aa06 diff --git a/src/Commands/invite.js b/src/Commands/invite.js index edf4e7c..944f3f1 100644 --- a/src/Commands/invite.js +++ b/src/Commands/invite.js @@ -18,21 +18,38 @@ */ const { emoji } = require('../Utils'); -const { links } = require('../../Configs'); +const { config, links } = require('../../Configs'); const Discord = require('discord.js'); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); -exports.run = async (aruna, message) => { - const embed = new Discord.RichEmbed().setAuthor( - `Olá, ${message.author.username}` - ) - .setDescription(`Fico feliz que tenha gostado de mim e queira me adicionar :) -\nPara isso, basta clicar [aqui](${links.invites[0]}), selecionar o servidor na lista, confirmar o reCaptcha e pronto! Eu estarei em seu servidor! -\nNovamente, obrigado pelo interesse e nos vemos em seu servidor!`); +exports.run = async (aruna, message, args, langc) => { + if (langc) { + language = langc; + } + + const error = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setDescription(language.invite.embed.error.description) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setTimestamp(); + + if (!links.invites[0]) { + return message.channel.send(error); + } + + const embed = new Discord.RichEmbed() + .setAuthor(language.generic.embed.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setDescription(`${language.invite.embed.sucess.description.line1} +\n${language.invite.embed.sucess.description.line2.replace('[link]', links.invites[0])} +\n${language.invite.embed.sucess.description.line3}`) + .setFooter(language.generic.embed.footer.replace('[usertag]', message.author.tag)) + .setTimestamp(); message.channel.send(embed); }; exports.config = { name: 'invite', aliases: ['convidar', 'convite'], + description: language.invite.config.description, category: `${emoji.robot} Utilidades` }; From 3d228546edbd74135a6f15a0f116d5bbea90eeb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Thu, 17 Sep 2020 13:04:27 -0300 Subject: [PATCH 088/164] Support Command Translations --- languages | 2 +- src/Commands/suporte.js | 30 +++++++++++++++++++++++------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/languages b/languages index 56baccf..bb85303 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 56baccfcb2104d254a8f6fcedf5ab0ddbb66aa06 +Subproject commit bb853036b4bb1861caaabb156d6d8d7535b80f3a diff --git a/src/Commands/suporte.js b/src/Commands/suporte.js index 1db4be4..577a3cb 100644 --- a/src/Commands/suporte.js +++ b/src/Commands/suporte.js @@ -18,19 +18,35 @@ const Discord = require('discord.js'); const { emoji } = require('../Utils'); +const { config, links } = require('../../Configs'); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); -exports.run = async (aruna, message) => { - const embed = new Discord.RichEmbed().setAuthor( - `Olá, ${message.author.username}` - ) - .setDescription(`Encontrou algum erro esquisito, tem alguma reclamação ou sugestões para mim? -\nPara isso, basta clicar [aqui]( -https://discord.gg/NqbBgEf) e venha conversar com meus desenvolvedores!`); +exports.run = async (aruna, message, args, langc) => { + if (langc) { + language = langc; + } + const error = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setDescription(language.support.embed.error.description) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setTimestamp(); + + if (!links.supportServers[0]) { + return message.channel.send(error); + } + const embed = new Discord.RichEmbed() + .setAuthor(language.generic.embed.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setDescription(`${language.support.embed.sucess.description.line1} + \n${language.support.embed.sucess.description.line2.replace('[link]', links.supportServers[0])} + \n${language.support.embed.sucess.description.line3}`) + .setFooter(language.generic.embed.footer.replace('[usertag]', message.author.tag)) + .setTimestamp(); message.channel.send(embed); }; exports.config = { name: 'suporte', aliases: ['support'], + description: language.support.config.description, category: `${emoji.robot} Utilidades` }; From 02a669a208bb358c3cc3770aeef7035143c906d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 28 Sep 2020 21:59:29 -0300 Subject: [PATCH 089/164] Implement public command config, help upgrade, db fix, other things --- .Configs/general.js | 5 ++-- .Configs/mongoose.js | 2 +- src/Commands/avatar.js | 3 +- src/Commands/badges.js | 3 +- src/Commands/ban.js | 3 +- src/Commands/bot.js | 5 ++-- src/Commands/calc.js | 3 +- src/Commands/clear.js | 3 +- src/Commands/config.js | 3 +- src/Commands/dice.js | 3 +- src/Commands/eval.js | 3 +- src/Commands/flip.js | 3 +- src/Commands/git.js | 3 +- src/Commands/help.js | 60 ++++++++++++++++++++++++------------- src/Commands/invite.js | 3 +- src/Commands/kick.js | 3 +- src/Commands/maintenance.js | 3 +- src/Commands/massremove.js | 3 +- src/Commands/massrole.js | 3 +- src/Commands/ping.js | 3 +- src/Commands/prefix.js | 3 +- src/Commands/rank.js | 3 +- src/Commands/say.js | 3 +- src/Commands/serverinfo.js | 3 +- src/Commands/ship.js | 3 +- src/Commands/suporte.js | 3 +- src/Commands/ticket.js | 3 +- src/Commands/unban.js | 3 +- src/Commands/userinfo.js | 3 +- src/Events/message.js | 42 ++++++++++++++++++++++++-- src/Events/ready.js | 19 ++++++++---- src/main.js | 6 ++-- 32 files changed, 154 insertions(+), 60 deletions(-) diff --git a/.Configs/general.js b/.Configs/general.js index da29556..fcf6e09 100644 --- a/.Configs/general.js +++ b/.Configs/general.js @@ -17,12 +17,13 @@ */ module.exports = { + debug: false, prefix: '-', token: '', mongoose: '', superUsersId: ['281515925960654848'], // Your User ID Comes Here! - language: 'br', - defaultLanguage: 'us', + language: 'br', // Console Language + defaultLanguage: 'us', // Bot Language sharding: { totalShards: 'auto', delay: 7500 diff --git a/.Configs/mongoose.js b/.Configs/mongoose.js index 6a4cfee..24403b2 100644 --- a/.Configs/mongoose.js +++ b/.Configs/mongoose.js @@ -47,7 +47,7 @@ var Guild = new Schema({ ticketEnable: { type: Boolean, default: false }, autoRole: { type: Boolean, default: false }, autoRoleRole: { type: String, default: null }, - language: { type: String, default: 'br' }, + language: { type: String, default: config.language }, isPremium: { type: Boolean, default: false }, isPartner: { type: Boolean, default: false } }); diff --git a/src/Commands/avatar.js b/src/Commands/avatar.js index cab7a47..7947086 100644 --- a/src/Commands/avatar.js +++ b/src/Commands/avatar.js @@ -44,5 +44,6 @@ exports.config = { name: 'avatar', aliases: [''], description: language.avatar.config.description, - category: '🎉 Entretenimento' + category: '🎉 Entretenimento', + public: true }; diff --git a/src/Commands/badges.js b/src/Commands/badges.js index d8974fc..d0c93ea 100644 --- a/src/Commands/badges.js +++ b/src/Commands/badges.js @@ -157,5 +157,6 @@ exports.run = async (aruna, message, args) => { exports.config = { name: 'badge', aliases: ['badges'], - category: '🧰 Administração' + category: '🧰 Administração', + public: false }; \ No newline at end of file diff --git a/src/Commands/ban.js b/src/Commands/ban.js index 3388b2d..bd88ef4 100644 --- a/src/Commands/ban.js +++ b/src/Commands/ban.js @@ -128,5 +128,6 @@ exports.run = async (aruna, message, args, langc, prefix, command) => { exports.config = { name: 'banir', aliases: ['ban'], - category: '👮‍♂️ Moderação' + category: '👮‍♂️ Moderação', + public: true }; \ No newline at end of file diff --git a/src/Commands/bot.js b/src/Commands/bot.js index a133a96..765f668 100644 --- a/src/Commands/bot.js +++ b/src/Commands/bot.js @@ -55,7 +55,7 @@ exports.run = (aruna, message) => { .addField('(🖥️) Servidores', `${aruna.guilds.size}`, true) .addField('(🕹️) Usuários', `${aruna.users.size}`, true) .addField('(💻) Seu Shard', `${aruna.shard.id}`, true) - .addField('(💠) Status do Shard', 'ONLINE', true) /** @todo status verdadeiro e-e */ + .addField('(💠) Status do Shard', 'ONLINE', true) /** @todo pensar em algo melhor pra colocar aqui */ .addField('(🏓) Ping do Shard', `${aruna.ping}ms`, true) /** @todo ping do shard, não do bot */ .addField( 'Convite', @@ -78,5 +78,6 @@ exports.config = { name: 'botinfo', aliases: ['bot', 'uptime'], description: 'Lista as Principais informações do bot', - category: `${emojis.robot} Utilidades` + category: `${emojis.robot} Utilidades`, + public: true }; diff --git a/src/Commands/calc.js b/src/Commands/calc.js index 3430ea8..80cf5a9 100644 --- a/src/Commands/calc.js +++ b/src/Commands/calc.js @@ -66,5 +66,6 @@ exports.config = { name: 'calc', description: language.calculator.config.description, aliases: ['calculadora', 'math', 'matematica', 'calcular', 'calculator'], - category: `${emojis.robot} Utilidades` + category: `${emojis.robot} Utilidades`, + public: true }; diff --git a/src/Commands/clear.js b/src/Commands/clear.js index 83bd259..5a74c59 100644 --- a/src/Commands/clear.js +++ b/src/Commands/clear.js @@ -81,5 +81,6 @@ exports.config = { name: 'clear', description: language.clear.config.description, aliases: [], - category: '👮‍♂️ Moderação' + category: '👮‍♂️ Moderação', + public: true }; diff --git a/src/Commands/config.js b/src/Commands/config.js index 32e3750..cefb495 100644 --- a/src/Commands/config.js +++ b/src/Commands/config.js @@ -180,5 +180,6 @@ exports.run = async (aruna, message, args) => { exports.config = { name: 'config', aliases: ['configurar', 'configurações'], - category: '⚙️ Configurações' + category: '⚙️ Configurações', + public: true }; diff --git a/src/Commands/dice.js b/src/Commands/dice.js index 2cbc316..5094218 100644 --- a/src/Commands/dice.js +++ b/src/Commands/dice.js @@ -146,5 +146,6 @@ exports.run = async (aruna, message, args) => { exports.config = { name: 'dice', aliases: ['dado'], - category: '🎉 Entretenimento' + category: '🎉 Entretenimento', + public: true }; diff --git a/src/Commands/eval.js b/src/Commands/eval.js index 6a68055..d322563 100644 --- a/src/Commands/eval.js +++ b/src/Commands/eval.js @@ -72,5 +72,6 @@ exports.run = (aruna, message, args) => { exports.config = { name: 'eval', aliases: [], - category: '🧰 Administração' + category: '🧰 Administração', + public: false }; diff --git a/src/Commands/flip.js b/src/Commands/flip.js index 5f41c03..d70f753 100644 --- a/src/Commands/flip.js +++ b/src/Commands/flip.js @@ -39,5 +39,6 @@ exports.config = { name: 'flip', description: language.flip.config.description, aliases: ['moeda', 'girar'], - category: '🎉 Entretenimento' + category: '🎉 Entretenimento', + public: true }; \ No newline at end of file diff --git a/src/Commands/git.js b/src/Commands/git.js index 75da65b..aa10bb8 100644 --- a/src/Commands/git.js +++ b/src/Commands/git.js @@ -53,5 +53,6 @@ exports.config = { name: 'github', aliases: ['git', 'repo', 'repositório', 'repositorio'], description: language.github.config.description, - category: `${emoji.robot} Utilidades` + category: `${emoji.robot} Utilidades`, + public: true }; \ No newline at end of file diff --git a/src/Commands/help.js b/src/Commands/help.js index 547108f..3582b70 100644 --- a/src/Commands/help.js +++ b/src/Commands/help.js @@ -48,27 +48,44 @@ exports.run = async (aruna, message) => { var categories; - categories = aruna.commands - .map(c => c.config.category) - .filter((v, i, a) => a.indexOf(v) === i); - categories - .sort((a, b) => a.localeCompare(b)) - .forEach(category => { - const commands = aruna.commands - .filter(c => c.config.category === category) - .sort((a, b) => a.config.name.localeCompare(b.config.name)) - .map(c => prefix + c.config.name) - .join(', '); - if (category == '🧰 Administração' && userDB.SUPER == false) { - null; - } else { + if (!userDB.SUPER) { + categories = aruna.commands + .map(c => c.config.category) + .filter((v, i, a) => a.indexOf(v) === i); + categories + .sort((a, b) => a.localeCompare(b)) + .forEach(category => { + const commands = aruna.commands + .filter(c => c.config.category === category && c.config.public === true) + .sort((a, b) => a.config.name.localeCompare(b.config.name)) + .map(c => prefix + c.config.name) + .join(', '); + if (category == '🧰 Administração') { + null; + } else { + embed.addField(`${category}`, '```' + commands + '```', false); + } + }); + } else { + categories = aruna.commands + .map(c => c.config.category) + .filter((v, i, a) => a.indexOf(v) === i); + categories + .sort((a, b) => a.localeCompare(b)) + .forEach(category => { + const commands = aruna.commands + .filter(c => c.config.category === category) + .sort((a, b) => a.config.name.localeCompare(b.config.name)) + .map(c => prefix + c.config.name) + .join(', '); embed.addField(`${category}`, '```' + commands + '```', false); - } - embed.setColor('#004080'); - embed.setAuthor(aruna.user.username, aruna.user.displayAvatarURL); - embed.setFooter(`Comando Solicitado por ${message.author.username}#${message.author.discriminator}`, message.author.avatarURL); - embed.setTimestamp(); - }); + }); + } + + embed.setColor('#004080'); + embed.setAuthor(aruna.user.username, aruna.user.displayAvatarURL); + embed.setFooter(`Comando Solicitado por ${message.author.username}#${message.author.discriminator}`, message.author.avatarURL); + embed.setTimestamp(); message.channel.send(sucesso).then(msg => { message.author.send(embed).catch(err => { @@ -81,5 +98,6 @@ exports.run = async (aruna, message) => { exports.config = { name: 'help', aliases: ['ajuda', 'comandos', 'commands'], - category: `${emoji.robot} Utilidades` + category: `${emoji.robot} Utilidades`, + public: true }; diff --git a/src/Commands/invite.js b/src/Commands/invite.js index 944f3f1..ab9cf15 100644 --- a/src/Commands/invite.js +++ b/src/Commands/invite.js @@ -51,5 +51,6 @@ exports.config = { name: 'invite', aliases: ['convidar', 'convite'], description: language.invite.config.description, - category: `${emoji.robot} Utilidades` + category: `${emoji.robot} Utilidades`, + public: true }; diff --git a/src/Commands/kick.js b/src/Commands/kick.js index af22b8e..7e93dc7 100644 --- a/src/Commands/kick.js +++ b/src/Commands/kick.js @@ -128,5 +128,6 @@ exports.run = async (aruna, message, args, langc, prefix, command) => { exports.config = { name: 'kickar', aliases: ['kick', 'expulsar'], - category: '👮‍♂️ Moderação' + category: '👮‍♂️ Moderação', + public: true }; \ No newline at end of file diff --git a/src/Commands/maintenance.js b/src/Commands/maintenance.js index 9900c36..c535ee5 100644 --- a/src/Commands/maintenance.js +++ b/src/Commands/maintenance.js @@ -16,5 +16,6 @@ exports.run = (aruna, message, args) => { exports.config = { name: 'manutenção', aliases: [], - category: '🧰 Administração' + category: '🧰 Administração', + public: false }; \ No newline at end of file diff --git a/src/Commands/massremove.js b/src/Commands/massremove.js index 2d0024b..e3af88e 100644 --- a/src/Commands/massremove.js +++ b/src/Commands/massremove.js @@ -121,5 +121,6 @@ exports.run = (aruna, message, args, langc) => { exports.config = { name: 'massremove', aliases: ['masscargoremove'], - category: '👮‍♂️ Moderação' + category: '👮‍♂️ Moderação', + public: true }; \ No newline at end of file diff --git a/src/Commands/massrole.js b/src/Commands/massrole.js index bfa70dd..6ce6716 100644 --- a/src/Commands/massrole.js +++ b/src/Commands/massrole.js @@ -116,5 +116,6 @@ exports.config = { name: 'massrole', description: language.massRole.config.description, aliases: ['masscargo', 'cargomassivo'], - category: '👮‍♂️ Moderação' + category: '👮‍♂️ Moderação', + public: true }; \ No newline at end of file diff --git a/src/Commands/ping.js b/src/Commands/ping.js index ce0b4d4..f5ac343 100644 --- a/src/Commands/ping.js +++ b/src/Commands/ping.js @@ -51,5 +51,6 @@ exports.config = { name: 'ping', description: language.ping.config.description, aliases: ['pong'], - category: `${emoji.robot} Utilidades` + category: `${emoji.robot} Utilidades`, + public: true }; diff --git a/src/Commands/prefix.js b/src/Commands/prefix.js index d977259..4ab395f 100644 --- a/src/Commands/prefix.js +++ b/src/Commands/prefix.js @@ -98,5 +98,6 @@ exports.config = { name: 'prefix', description: language.prefix.config.description, aliases: ['prefixo', 'pref'], - category: '⚙️ Configurações' + category: '⚙️ Configurações', + public: true }; diff --git a/src/Commands/rank.js b/src/Commands/rank.js index 337f38f..b72f1b5 100644 --- a/src/Commands/rank.js +++ b/src/Commands/rank.js @@ -70,5 +70,6 @@ exports.config = { name: 'rank', description: language.rank.config.description, aliases: ['perfil'], - category: '🎉 Entretenimento' + category: '🎉 Entretenimento', + public: true }; diff --git a/src/Commands/say.js b/src/Commands/say.js index 496cbd7..ba97b10 100644 --- a/src/Commands/say.js +++ b/src/Commands/say.js @@ -62,5 +62,6 @@ exports.config = { name: 'say', description: language.say.config.description, aliases: ['falar'], - category: '🎉 Entretenimento' + category: '🎉 Entretenimento', + public: true }; \ No newline at end of file diff --git a/src/Commands/serverinfo.js b/src/Commands/serverinfo.js index f3ad1ea..4376729 100644 --- a/src/Commands/serverinfo.js +++ b/src/Commands/serverinfo.js @@ -124,5 +124,6 @@ exports.run = async (aruna, message) => { exports.config = { name: 'serverinfo', aliases: ['si'], - category: `${emoji.robot} Utilidades` + category: `${emoji.robot} Utilidades`, + public: true }; diff --git a/src/Commands/ship.js b/src/Commands/ship.js index 26010e7..cbb4598 100644 --- a/src/Commands/ship.js +++ b/src/Commands/ship.js @@ -100,5 +100,6 @@ exports.run = async (client, message) => { exports.config = { name: 'ship', aliases: ['shipar', 'shipp', 'casal'], - category: '🎉 Entretenimento' + category: '🎉 Entretenimento', + public: true }; diff --git a/src/Commands/suporte.js b/src/Commands/suporte.js index 577a3cb..5d1f9b3 100644 --- a/src/Commands/suporte.js +++ b/src/Commands/suporte.js @@ -48,5 +48,6 @@ exports.config = { name: 'suporte', aliases: ['support'], description: language.support.config.description, - category: `${emoji.robot} Utilidades` + category: `${emoji.robot} Utilidades`, + public: true }; diff --git a/src/Commands/ticket.js b/src/Commands/ticket.js index e3b94d6..2a4a4ee 100644 --- a/src/Commands/ticket.js +++ b/src/Commands/ticket.js @@ -93,5 +93,6 @@ exports.run = async (aruna, message, args) => { exports.config = { name: 'ticket', aliases: [], - category: `${emoji.robot} Utilidades` + category: `${emoji.robot} Utilidades`, + public: false }; diff --git a/src/Commands/unban.js b/src/Commands/unban.js index 11b91bf..df4e694 100644 --- a/src/Commands/unban.js +++ b/src/Commands/unban.js @@ -83,5 +83,6 @@ exports.run = async (aruna, message, args, langc, prefix, command) => { exports.config = { name: 'desbanir', aliases: ['unban'], - category: '👮‍♂️ Moderação' + category: '👮‍♂️ Moderação', + public: true }; \ No newline at end of file diff --git a/src/Commands/userinfo.js b/src/Commands/userinfo.js index 6b26f58..894cb60 100644 --- a/src/Commands/userinfo.js +++ b/src/Commands/userinfo.js @@ -155,5 +155,6 @@ exports.run = (aruna, message, args) => { exports.config = { name: 'userinfo', aliases: ['ui'], - category: `${emoji.robot} Utilidades` + category: `${emoji.robot} Utilidades`, + public: true }; diff --git a/src/Events/message.js b/src/Events/message.js index 3ebff9f..0a08a27 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -18,6 +18,7 @@ */ const Discord = require('discord.js'); +const chalk = require('chalk'); var { database, config, links } = require('../../Configs'); const { cooldown, utils } = require('../Utils'); @@ -49,7 +50,7 @@ exports.run = async (aruna, message) => { } else { language = config.defaultLanguage; } - console.log('No Server!'); + debug('No Server!'); var saveG = await new database.Guilds({ _id: message.guild.id, language: language @@ -59,7 +60,7 @@ exports.run = async (aruna, message) => { } if (!user) { - console.log('No User!'); + debug('No User!'); var isSuper = false; if (config.superUsersId.includes(message.author.id)) { isSuper = true; @@ -80,6 +81,7 @@ exports.run = async (aruna, message) => { const lang = require(`../../languages/bot/${language}/events.json`); const langc = require(`../../languages/bot/${language}/commands.json`); + const langI = require(`../../languages/bot/${config.language}/internal.json`); const emojiError = lang.message.errors.emojiError.replace('[externalEmojis]', langc.generic.permissions.useExternalEmojis); const linkError = lang.message.errors.linkError.replace('[sendLinks]', langc.generic.permissions.embedLinks); @@ -151,6 +153,14 @@ exports.run = async (aruna, message) => { return message.reply(emojiError); } else if (!message.guild.members.get(aruna.user.id).hasPermission('EMBED_LINKS')) { return message.reply(linkError); + } else if (!user.SUPER && !commandFile.config.public) { + const denied = new Discord.RichEmbed() + .setAuthor(language.generic.embed.denied.title, message.author.avatarURL) + .setDescription(`${language.generic.embed.denied.description.line1.replace('[username]', message.member.displayName).replace('[command]', command)}\n + ${language.generic.embed.denied.description.line2.replace('[prefix]', prefix)}`) + .setFooter(language.generic.embed.denied.footer) + .setTimestamp(); + return message.channel.send(denied); } commandFile.run(aruna, message, args, langc, prefix, command); } else if (!commandFile) { @@ -167,4 +177,32 @@ exports.run = async (aruna, message) => { } } } + function logPrefix() { + return `${chalk.gray('[')}${isSharded() ? `${langI.generic.shard} ${chalk.blue(aruna.shard.id)}` : aruna.user.username}${chalk.gray(']')}`; + } + + // eslint-disable-next-line no-unused-vars + function log(...a) { + return console.log(logPrefix(), ...a); + } + + // eslint-disable-next-line no-unused-vars + function warn(...a) { + return console.warn(logPrefix(), chalk.yellow(...a)); + } + + // eslint-disable-next-line no-unused-vars + function error(...a) { + return console.error(logPrefix(), chalk.red(...a)); + } + + function debug(...a) { + if (config.debug) { + return console.debug(logPrefix(), chalk.magenta(...a)); + } else return; + } + + function isSharded() { + return !!aruna.shard; + } }; diff --git a/src/Events/ready.js b/src/Events/ready.js index f00550a..2dbca9e 100644 --- a/src/Events/ready.js +++ b/src/Events/ready.js @@ -35,7 +35,7 @@ exports.run = async (aruna) => { const minutes = Math.floor(totalSeconds / 60); const seconds = Math.floor(totalSeconds % 60); - var uptime = ''; + var uptime; if (days >= 1) { uptime = `${days}d, ${hours}h, ${minutes}m`; @@ -80,7 +80,14 @@ exports.run = async (aruna) => { ]; async function setStatus() { var maintenance = await database.System.findOne({ _id: 1 }); - var inMaintenance = maintenance.maintenance; + var inMaintenance; + if (!maintenance) { + inMaintenance = false; + await new database.System({ _id: 1 }); + debug(langE.ready.databaseAdd); + } else { + inMaintenance = maintenance.maintenance; + } if (inMaintenance === true){ aruna.user.setPresence({ game: { name: langE.ready.maintenance.replace('[date]', maintenance.date).replace('[time]', maintenance.time)}}); } else { @@ -110,7 +117,9 @@ exports.run = async (aruna) => { } function debug(...a) { - return console.debug(logPrefix(), chalk.magenta(...a)); + if (config.debug) { + return console.debug(logPrefix(), chalk.magenta(...a)); + } else return; } function isSharded() { @@ -132,11 +141,11 @@ exports.run = async (aruna) => { // Optional events dbl.on('posted', () => { - console.log('Server count posted!'); + log(`[${langE.dbl}] => ${langE.ready.posted}`); }); dbl.on('error', e => { - console.log(`Oops! ${e}`); + warn(`[${langE.dbl}][${language.main.error}] => ${e}`); }); } }; \ No newline at end of file diff --git a/src/main.js b/src/main.js index a501f72..2751d94 100644 --- a/src/main.js +++ b/src/main.js @@ -55,7 +55,7 @@ fs.readdir('./src/Commands/', (err, files) => { if (jsfile.length <= 0) { return warn(`[${language.main.commands}] ${language.generic.notFound}`); } - jsfile.forEach(f => { + jsfile.forEach(async f => { const pull = require(`./Commands/${f}`); aruna.commands.set(pull.config.name, pull); log(`[${language.main.command}] => ${f}`); @@ -84,7 +84,9 @@ function error(...a) { // eslint-disable-next-line no-unused-vars function debug(...a) { - return console.debug(logPrefix(), chalk.magenta(...a)); + if (config.debug) { + return console.debug(logPrefix(), chalk.magenta(...a)); + } else return; } function isSharded() { From ebc177b4de8c7cde461b8ac2c9c13b0537f3281c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 28 Sep 2020 22:07:14 -0300 Subject: [PATCH 090/164] Minor Bugs Fixed --- languages | 2 +- src/Events/message.js | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/languages b/languages index bb85303..1349996 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit bb853036b4bb1861caaabb156d6d8d7535b80f3a +Subproject commit 134999688f2acc2549e0ae94fefbb1baeb5310a4 diff --git a/src/Events/message.js b/src/Events/message.js index 0a08a27..939ee80 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -155,10 +155,10 @@ exports.run = async (aruna, message) => { return message.reply(linkError); } else if (!user.SUPER && !commandFile.config.public) { const denied = new Discord.RichEmbed() - .setAuthor(language.generic.embed.denied.title, message.author.avatarURL) - .setDescription(`${language.generic.embed.denied.description.line1.replace('[username]', message.member.displayName).replace('[command]', command)}\n - ${language.generic.embed.denied.description.line2.replace('[prefix]', prefix)}`) - .setFooter(language.generic.embed.denied.footer) + .setAuthor(langc.generic.embed.denied.title, message.author.avatarURL) + .setDescription(`${langc.generic.embed.denied.description.line1.replace('[username]', message.member.displayName).replace('[command]', command)}\n + ${langc.generic.embed.denied.description.line2.replace('[prefix]', prefix)}`) + .setFooter(langc.generic.embed.denied.footer) .setTimestamp(); return message.channel.send(denied); } From e822520356a07afc8203ad71602d00e020ad906f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 28 Sep 2020 22:08:42 -0300 Subject: [PATCH 091/164] Language Update --- languages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/languages b/languages index 1349996..0337376 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 134999688f2acc2549e0ae94fefbb1baeb5310a4 +Subproject commit 03373767ee66ab3cff85417efd5ca8ad0fa59c3e From d6f7b37fae8a7dda72498831b1a87d9de243c462 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 28 Sep 2020 22:12:08 -0300 Subject: [PATCH 092/164] Loop Fix --- src/Events/ready.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Events/ready.js b/src/Events/ready.js index 2dbca9e..02f311c 100644 --- a/src/Events/ready.js +++ b/src/Events/ready.js @@ -83,7 +83,7 @@ exports.run = async (aruna) => { var inMaintenance; if (!maintenance) { inMaintenance = false; - await new database.System({ _id: 1 }); + await new database.System({ _id: 1 }).save(); debug(langE.ready.databaseAdd); } else { inMaintenance = maintenance.maintenance; From 08f32cbe8437fe9d64c3db1a1d59de5a1baec17a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Tue, 29 Sep 2020 18:59:12 -0300 Subject: [PATCH 093/164] Add Event Not Found Warn --- src/main.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main.js b/src/main.js index 2751d94..030161a 100644 --- a/src/main.js +++ b/src/main.js @@ -41,6 +41,10 @@ aruna.aliases = new Discord.Collection(); fs.readdir('./src/Events/', (erro, files) => { if (erro) return error(`[${language.main.error}] => ${erro}`); + const jsfile = files.filter(f => f.split('.').pop() === 'js'); + if (jsfile.length <= 0) { + return warn(`[${language.main.event}] ${language.generic.notFound}`); + } files.forEach(file => { const eventFunction = require(`./Events/${file}`); log(`[${language.main.event}] => ${file}`); From daf5ea430707214516d9ca4bd1f0dd38d9f506b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Tue, 29 Sep 2020 19:05:18 -0300 Subject: [PATCH 094/164] Change log system --- src/main.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.js b/src/main.js index 030161a..9402453 100644 --- a/src/main.js +++ b/src/main.js @@ -98,7 +98,7 @@ function isSharded() { } aruna.login(config.token).then(() => { - console.log(`${infoPrefix} ${language.initialization.complete}`); + log(`=> ${language.initialization.complete}`); }).catch(e => { - console.exception(`${errorPrefix} ${language.initialization.fail} ${e}`); + error(`=> ${language.initialization.fail} ${e}`); }); \ No newline at end of file From 84f5b27cc34885cf323aee3792f1e7aa09d5058d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Tue, 29 Sep 2020 19:11:30 -0300 Subject: [PATCH 095/164] Plural Fix --- languages | 2 +- src/main.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/languages b/languages index 0337376..af4a33b 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 03373767ee66ab3cff85417efd5ca8ad0fa59c3e +Subproject commit af4a33bd0993a23ab7463aae99b59f8f2d5eb2de diff --git a/src/main.js b/src/main.js index 9402453..e6cade8 100644 --- a/src/main.js +++ b/src/main.js @@ -43,7 +43,7 @@ fs.readdir('./src/Events/', (erro, files) => { if (erro) return error(`[${language.main.error}] => ${erro}`); const jsfile = files.filter(f => f.split('.').pop() === 'js'); if (jsfile.length <= 0) { - return warn(`[${language.main.event}] ${language.generic.notFound}`); + return warn(`[${language.main.events}] ${language.generic.notFound}`); } files.forEach(file => { const eventFunction = require(`./Events/${file}`); From ed874417191db07e607371f28471fdc731bf1dd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Thu, 1 Oct 2020 10:24:14 -0300 Subject: [PATCH 096/164] Major Bug Fixed --- src/Events/message.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/Events/message.js b/src/Events/message.js index 939ee80..877e6a4 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -23,17 +23,17 @@ var { database, config, links } = require('../../Configs'); const { cooldown, utils } = require('../Utils'); exports.run = async (aruna, message) => { + const langI = require(`../../languages/bot/${config.language}/internal.json`); if (message.author.bot) return; if (message.channel.type == 'dm') { const dmUser = await database.Users.findOne({ _id: message.author.id }); - const defaultDmEventL = require('../../languages/bot/br/internal.json'); if (!dmUser) { - return message.reply(defaultDmEventL.message.errors.dmError); + return message.reply(langI.message.errors.dmError); } else { var dmEventL; if (dmUser.language == null) { - dmEventL = defaultDmEventL; + dmEventL = langI; } else { dmEventL = require(`../../languages/bot/${dmUser.language}/internal.json`); } @@ -77,11 +77,9 @@ exports.run = async (aruna, message) => { } else { language = language || guild.language; } - - const lang = require(`../../languages/bot/${language}/events.json`); - const langc = require(`../../languages/bot/${language}/commands.json`); - const langI = require(`../../languages/bot/${config.language}/internal.json`); + const lang = require(`../../languages/bot/${language || config.defaultLanguage}/events.json`); + const langc = require(`../../languages/bot/${language || config.defaultLanguage}/commands.json`); const emojiError = lang.message.errors.emojiError.replace('[externalEmojis]', langc.generic.permissions.useExternalEmojis); const linkError = lang.message.errors.linkError.replace('[sendLinks]', langc.generic.permissions.embedLinks); From f0c89fac2ceb96aa7959aa082349da81d4a5d3f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Thu, 1 Oct 2020 10:26:38 -0300 Subject: [PATCH 097/164] Anti Fake System --- .Configs/general.js | 1 + .Configs/mongoose.js | 1 + .eslintrc.json | 2 +- languages | 2 +- src/Events/guildMemberAdd.js | 41 +++++++++++++++++++++++++++++++++--- 5 files changed, 42 insertions(+), 5 deletions(-) diff --git a/.Configs/general.js b/.Configs/general.js index fcf6e09..98d5233 100644 --- a/.Configs/general.js +++ b/.Configs/general.js @@ -22,6 +22,7 @@ module.exports = { token: '', mongoose: '', superUsersId: ['281515925960654848'], // Your User ID Comes Here! + noFakeId: ['187915892384858112', '281515925960654848'], language: 'br', // Console Language defaultLanguage: 'us', // Bot Language sharding: { diff --git a/.Configs/mongoose.js b/.Configs/mongoose.js index 24403b2..91aa197 100644 --- a/.Configs/mongoose.js +++ b/.Configs/mongoose.js @@ -41,6 +41,7 @@ var User = new Schema({ var Guild = new Schema({ _id: { type: String }, prefix: { type: String, default: config.prefix }, + antifake: { type: Boolean, default: true }, ticketLogID: { type: String, default: null }, ticketSupportID: { type: String, default: null }, rankEnable: { type: Boolean, default: false }, diff --git a/.eslintrc.json b/.eslintrc.json index e40f8be..5038308 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -30,7 +30,7 @@ "max-len": [ "warn", { - "code": 160, + "code": 165, "ignoreComments": true, "ignoreUrls": true } diff --git a/languages b/languages index af4a33b..38440b0 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit af4a33bd0993a23ab7463aae99b59f8f2d5eb2de +Subproject commit 38440b04a7b4ea712cc4c9a7b8eb1b22e3a7dac6 diff --git a/src/Events/guildMemberAdd.js b/src/Events/guildMemberAdd.js index 324238b..54f17fd 100644 --- a/src/Events/guildMemberAdd.js +++ b/src/Events/guildMemberAdd.js @@ -21,17 +21,52 @@ var { config, database } = require('../../Configs'); const { links } = require('../../Configs'); const lang = require(`../../languages/bot/${config.language}/events.json`); -const langD = require(`../../languages/bot/${config.defaultLanguage}/events.json`); const serverStatsPrincipal = { guildID: '660610178009530380', oldGuildID: '610206821763776522' }; + +var noFakeId = config.noFakeId; + exports.run = async (aruna, member) => { const user = database.Users.findOne({ _id: member.user.id }); - // eslint-disable-next-line no-unused-vars const guild = database.Guilds.findOne({ _id: member.guild.id }); + + const langD = require(`../../languages/bot/${guild.language || config.defaultLanguage}/events.json`); + + if (guild.antifake !== false) { + const kickFakeEmbed = new Discord.RichEmbed() + .setAuthor(langD.memberAdd.antifake.embed.fakemember.title.replace('[username]', member.user.username), member.user.avatarURL) + .setFooter(langD.memberAdd.antifake.embed.fakemember.footer.replace('[username]', member.user.username)) + .setDescription(langD.memberAdd.antifake.embed.fakemember.description) + .setTimestamp(); + + noFakeId.forEach(async id => { + if (member.guild.member(id)) { + const userNew = member.user.username.toLocaleLowerCase().replace(/\s+/g, '').normalize('NFD').replace(/[\u0300-\u036f]/g, ''); + const noFakeUser = await aruna.fetchUser(id); + const noFakeUsername = noFakeUser.username.toLocaleLowerCase().replace(/\s+/g, '').normalize('NFD').replace(/[\u0300-\u036f]/g, ''); + if (userNew == noFakeUsername && !noFakeId.includes(member.user.id)) { + if (member.guild.members.get(aruna.user.id).hasPermission('KICK_MEMBERS')) { + member.kick(langD.memberAdd.antifake.kickMessage); + member.send(kickFakeEmbed); + } else { + const guildOwner = member.guild.owner; + const fakeUser = member.user; + const adminFakeWarn = new Discord.RichEmbed() + .setAuthor(langD.memberAdd.antifake.embed.adminwarn.title.replace('[username]', guildOwner.user.username), guildOwner.user.avatarURL) + .setFooter(langD.memberAdd.antifake.embed.adminwarn.footer) + .setDescription(`${langD.memberAdd.antifake.embed.adminwarn.description.line1.replace('[fakeTag]', fakeUser.tag).replace('[fakeId]', fakeUser.id)}\n + ${langD.memberAdd.antifake.embed.adminwarn.description.line2.replace('[prefix]', guild.prefix)}`) + .setTimestamp(); + guildOwner.send(adminFakeWarn); + } + } + } + }); + } if (!user) { var saveU = await new database.Users({ _id: member.user.id }); @@ -61,4 +96,4 @@ exports.run = async (aruna, member) => { /* AUTOROLE FOR USERS */ -}; +}; \ No newline at end of file From c3ef8e54507f3287c4796be762a95a77d344303b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 4 Oct 2020 14:04:19 -0300 Subject: [PATCH 098/164] Ban Languages and add issue info --- languages | 2 +- src/Commands/ban.js | 80 +++++++++++++++++++++++++++------------------ 2 files changed, 50 insertions(+), 32 deletions(-) diff --git a/languages b/languages index 38440b0..acd4923 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 38440b04a7b4ea712cc4c9a7b8eb1b22e3a7dac6 +Subproject commit acd492317744aa643c8019870a7676306a9a8457 diff --git a/src/Commands/ban.js b/src/Commands/ban.js index bd88ef4..2bc8f4b 100644 --- a/src/Commands/ban.js +++ b/src/Commands/ban.js @@ -18,59 +18,77 @@ */ const Discord = require('discord.js'); +const { config } = require('../../Configs'); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); // eslint-disable-next-line no-unused-vars const { date } = require('../Utils'); const dateFormat = require('dateformat'); const now = new Date(); exports.run = async (aruna, message, args, langc, prefix, command) => { + if (langc) { + language = langc; + } const error1 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Você não possui a permissão de `Banir Membros`!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.ban.embed.error.description1.replace('[banMembers]', language.generic.permissions.banMembers)) .setTimestamp(); const error2 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Eu não possuo a permissão de `Banir Membros`!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.ban.embed.error.description2.replace('[banMembers]', language.generic.permissions.banMembers)) .setTimestamp(); const error3 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Você deve inserir um usuário para ser punido!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.ban.embed.error.description3) + .setTimestamp(); + + const error8 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(`${language.ban.embed.error.userNotFound.line1}\n + ${language.ban.embed.error.userNotFound.line2}`) .setTimestamp(); if (!args[0] || isNaN(args[0]) && (!args[0].includes('<@') || !args[0].includes('>'))) return message.channel.send(error3); - const buser = await aruna.fetchUser(message.mentions.users.first() || args[0]); + const buser = await aruna.fetchUser(message.mentions.users.first() || args[0]).catch(e => { + console.warn(e); + if (args[0].length !== 18) return null; + message.channel.send(error8); + return 'STOP'; + }); /** @todo: Fix #30 */ if (!buser) return message.channel.send(error3); + if (buser == 'STOP') return; const error4 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription(`Você não pode banir ${buser.username} pois este é o(a) dono(a) do servidor!`) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.ban.embed.error.description4.replace('[ownerName]', buser.username)) .setTimestamp(); const error5 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription(`Você não pode banir este usuário pois seu cargo é igual ou inferior ao de ${buser.username}.`) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.ban.embed.error.description5.replace('[username]', buser.username)) .setTimestamp(); const error6 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription(`Eu não posso banir este usuário pois meu cargo é igual ou inferior ao de ${buser.username}`) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.ban.embed.error.description6.replace('[username]', buser.username)) .setTimestamp(); const error7 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription(`Infelizmente não sei informar qual o erro. Sinto muito ${message.author.username} :(`) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.generic.embed.error.description) .setTimestamp(); if (!message.member.hasPermission('BAN_MEMBERS')) @@ -102,19 +120,18 @@ exports.run = async (aruna, message, args, langc, prefix, command) => { } if (!reason) { - reason = `Punido por: ${message.author.username}`; + reason = language.ban.reason['1'].replace('[username]', message.author.username); } else { - reason = - `Punido por: ${message.author.username} com o Motivo: ${reason}`; + reason = language.ban.reason['2'].replace('[username]', message.author.username).replace('[reason]', reason); } const embed = new Discord.RichEmbed() - .setAuthor('Banimento Efetuado com Sucesso!') - .setDescription(`Banimento efetuado por ${message.author.username}`) - .addField('Usuário Banido: ', `${buser} id ${buser.id}`, false) - .addField('Banido por: ', `<@${message.author.id}>`, false) - .addField('Data do Banimento: ', dateFormat(now, 'dd/mm/yyyy "às" HH:MM:ss'), false) - .addField('Motivo: ', `${reason}`, false) + .setAuthor(language.ban.embed.sucess.title) + .setDescription(language.ban.embed.sucess.description.replace('[username]', buser.username)) + .addField(language.ban.embed.sucess.field1.title, language.ban.embed.sucess.field1.content.replace('[username]', buser.username).replace('[userId]', buser.id), false) + .addField(language.ban.embed.sucess.field2, message.author, false) + .addField(language.ban.embed.sucess.field3, dateFormat(now, 'dd/mm/yyyy "às" HH:MM:ss'), false) // Localize the date + .addField(language.ban.embed.sucess.field4, reason, false) .setTimestamp(); message.channel.send(embed).then(async msg => { @@ -128,6 +145,7 @@ exports.run = async (aruna, message, args, langc, prefix, command) => { exports.config = { name: 'banir', aliases: ['ban'], + description: language.ban.config.description, category: '👮‍♂️ Moderação', public: true }; \ No newline at end of file From 52e2f26b4a56873e81c982a2ebc15ff964702d6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Fri, 30 Oct 2020 10:59:00 -0300 Subject: [PATCH 099/164] Update Emojis --- src/Utils/emojis.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Utils/emojis.js b/src/Utils/emojis.js index 572bb48..459b74a 100644 --- a/src/Utils/emojis.js +++ b/src/Utils/emojis.js @@ -39,5 +39,6 @@ module.exports = { partner: '<:partner:728849144734810163>', partnerPlus: '<:partnerPlus:728845414274564146>', premium: '<:vip:728816348892889118>', - loading: '' + loading: '', + stop: '<:stop:759833432443977768>' }; From 6d730c06bcc8e2e40da3acab1a6743fc5ab62498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Fri, 30 Oct 2020 11:20:58 -0300 Subject: [PATCH 100/164] Fix: #31 --- src/Commands/clear.js | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/Commands/clear.js b/src/Commands/clear.js index 5a74c59..047a208 100644 --- a/src/Commands/clear.js +++ b/src/Commands/clear.js @@ -17,12 +17,11 @@ */ function verify(messages, args, message, language) { - if (args[0] == messages.size) + if (args[0] == messages.size) { return (language.clear.sucess.message1.replace('[messages]', messages.size).replace('[user]', message.author)); - else - return ( - language.clear.sucess.message2.replace('[messages]', messages.size).replace('[user]', message.author).replace('[request]', args[0]) - ); + } else { + return (language.clear.sucess.message2.replace('[messages]', messages.size).replace('[user]', message.author).replace('[request]', args[0])); + } } const Discord = require('discord.js'); @@ -70,11 +69,14 @@ exports.run = async (aruna, message, args, langc) => { if (args[0] > 100 || args[0] <= 1) return message.channel.send(error4); - await message.delete(); - await message.channel.bulkDelete(args[0]).then(messages => { - message.channel - .send(verify(messages, args, message, language)) - .then(msg => msg.delete(10000)); + await message.delete().then(async () => { + await message.channel.fetchMessages({ limit: args[0] }).then(async messages => { + await message.channel.bulkDelete(messages, true).then(msgs => { + message.channel.send(verify(msgs, args, message, language)).then(msg => { + msg.delete(10000); + }); + }); + }); }); }; exports.config = { From 771352e60703999e3ebe60a953bd245c3a24bb28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Fri, 30 Oct 2020 11:37:25 -0300 Subject: [PATCH 101/164] Fix Total Shard count --- src/Commands/bot.js | 18 +++++++++--------- src/Events/ready.js | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/Commands/bot.js b/src/Commands/bot.js index 765f668..e359879 100644 --- a/src/Commands/bot.js +++ b/src/Commands/bot.js @@ -44,18 +44,18 @@ exports.run = (aruna, message) => { const user = message.guild.member(aruna.user); - const name = user.nickname !== null ? user.nickname : aruna.user.username; + const name = user.displayName; const embed = new Discord.RichEmbed() .setAuthor(aruna.user.username, `${aruna.user.avatarURL}`) - .addField(`(${emojis.robot}) Nome na Guild`, `${name}`, true) - .addField('(📡) Versão', `${pak.version}`, true) - .addField('(🕰️) Uptime', `${uptime}`, true) - .addField('(📃) Canais', `${aruna.channels.size}`, true) - .addField('(🖥️) Servidores', `${aruna.guilds.size}`, true) - .addField('(🕹️) Usuários', `${aruna.users.size}`, true) - .addField('(💻) Seu Shard', `${aruna.shard.id}`, true) - .addField('(💠) Status do Shard', 'ONLINE', true) /** @todo pensar em algo melhor pra colocar aqui */ + .addField(`(${emojis.robot}) Nome na Guild`, name, true) + .addField('(📡) Versão', pak.version, true) + .addField('(🕰️) Uptime', uptime, true) + .addField('(📃) Canais', aruna.channels.size, true) + .addField('(🖥️) Servidores', aruna.guilds.size, true) + .addField('(🕹️) Usuários', aruna.users.size, true) + .addField('(💻) Seu Shard', aruna.shard.id, true) + .addField('(💠) Total de Shards', aruna.shard.count, true) .addField('(🏓) Ping do Shard', `${aruna.ping}ms`, true) /** @todo ping do shard, não do bot */ .addField( 'Convite', diff --git a/src/Events/ready.js b/src/Events/ready.js index 02f311c..514a7ce 100644 --- a/src/Events/ready.js +++ b/src/Events/ready.js @@ -133,10 +133,10 @@ exports.run = async (aruna) => { const dbl = new DBL(apiKeys.topgg, client); - dbl.postStats(client.guilds.size, client.shard.id, 1); /** @todo total shard fix */ + dbl.postStats(client.guilds.size, client.shard.id, client.shard.count); setInterval(() => { - dbl.postStats(client.guilds.size, client.shard.id, 1); /** @todo total shard fix */ + dbl.postStats(client.guilds.size, client.shard.id, client.shard.count); }, 900000); // Optional events From 41a43506ff3f18510a14b7c5600593e1735a2792 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Fri, 30 Oct 2020 13:05:03 -0300 Subject: [PATCH 102/164] Upgrade Botinfo Command to use shard methods --- src/Commands/bot.js | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/src/Commands/bot.js b/src/Commands/bot.js index e359879..d7a78bb 100644 --- a/src/Commands/bot.js +++ b/src/Commands/bot.js @@ -21,9 +21,14 @@ const Discord = require('discord.js'); const pak = require('../../package.json'); const { links } = require('../../Configs'); -exports.run = (aruna, message) => { +exports.run = async (aruna, message) => { - let totalSeconds = (aruna.uptime / 1000); + async function getUptime() { + const req = await aruna.shard.broadcastEval('this.uptime'); + return req[0]; + } + + let totalSeconds = (await getUptime() / 1000); const days = Math.floor(totalSeconds / 86400); const hours = Math.floor(totalSeconds / 3600); totalSeconds %= 3600; @@ -42,6 +47,24 @@ exports.run = (aruna, message) => { uptime = `${seconds}s`; } + async function getServerCount() { + const req = await aruna.shard.fetchClientValues('guilds.size'); + + return req.reduce((p, n) => p + n, 0); + } + + async function getChannelCount() { + const req = await aruna.shard.fetchClientValues('channels.size'); + + return req.reduce((p, n) => p + n, 0); + } + + async function getUserCount() { + const req = await aruna.shard.fetchClientValues('users.size'); + + return req.reduce((p, n) => p + n, 0); + } + const user = message.guild.member(aruna.user); const name = user.displayName; @@ -51,12 +74,12 @@ exports.run = (aruna, message) => { .addField(`(${emojis.robot}) Nome na Guild`, name, true) .addField('(📡) Versão', pak.version, true) .addField('(🕰️) Uptime', uptime, true) - .addField('(📃) Canais', aruna.channels.size, true) - .addField('(🖥️) Servidores', aruna.guilds.size, true) - .addField('(🕹️) Usuários', aruna.users.size, true) + .addField('(📃) Canais', await getChannelCount(), true) + .addField('(🖥️) Servidores', await getServerCount(), true) + .addField('(🕹️) Usuários', await getUserCount(), true) .addField('(💻) Seu Shard', aruna.shard.id, true) .addField('(💠) Total de Shards', aruna.shard.count, true) - .addField('(🏓) Ping do Shard', `${aruna.ping}ms`, true) /** @todo ping do shard, não do bot */ + .addField('(🏓) Ping do Shard', `${aruna.ping}ms`, true) .addField( 'Convite', `${links.invites[0] ? `[Link](${links.invites[0]})` : 'INDISPONÍVEL'}`, From 982d661d80d8c20c33264ad6e3e67a96a99b0fa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= Date: Thu, 5 Nov 2020 23:46:13 -0300 Subject: [PATCH 103/164] Really Better Botinfo command --- package-lock.json | 7 ++- package.json | 3 +- src/Commands/bot.js | 113 +++++++++++++++++++++++++++++++++++-- src/Utils/GetSystemData.js | 22 ++++++++ src/Utils/index.js | 3 +- 5 files changed, 140 insertions(+), 8 deletions(-) create mode 100644 src/Utils/GetSystemData.js diff --git a/package-lock.json b/package-lock.json index e1a6e5f..35666e9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2481,6 +2481,11 @@ "has-flag": "^4.0.0" } }, + "systeminformation": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-4.28.1.tgz", + "integrity": "sha512-g9WQy+Igsf0efbbTlXzDkV7iYeUerFJeqI/zh07F9sWHxclejmXn5hrGdgHf2ok+1DuRmC9t4mEh7XS0b8Zk9w==" + }, "table": { "version": "5.4.6", "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", @@ -2755,4 +2760,4 @@ } } } -} \ No newline at end of file +} diff --git a/package.json b/package.json index 39fbc6f..af7558a 100644 --- a/package.json +++ b/package.json @@ -28,9 +28,10 @@ "moment-duration-format": "^2.3.2", "mongoose": "^5.10.5", "superagent": "^6.1.0", + "systeminformation": "^4.28.1", "ytdl-core": "^3.2.2" }, "devDependencies": { "eslint": "^7.9.0" } -} \ No newline at end of file +} diff --git a/src/Commands/bot.js b/src/Commands/bot.js index d7a78bb..19836f3 100644 --- a/src/Commands/bot.js +++ b/src/Commands/bot.js @@ -1,3 +1,4 @@ +/* eslint-disable no-unused-vars */ /* This File is part of ArunaBot Copyright (C) LoboMetalurgico (and contributors) 2019-2020 @@ -16,10 +17,9 @@ along with this program. If not, see . */ -const { emojis } = require('../Utils'); +const { emojis, sysdata } = require('../Utils'); const Discord = require('discord.js'); -const pak = require('../../package.json'); -const { links } = require('../../Configs'); +const { config, links } = require('../../Configs'); exports.run = async (aruna, message) => { @@ -69,10 +69,13 @@ exports.run = async (aruna, message) => { const name = user.displayName; + const version = process.env['npm_package_version']; + const embed = new Discord.RichEmbed() .setAuthor(aruna.user.username, `${aruna.user.avatarURL}`) + .setDescription('`Informações Básicas`') .addField(`(${emojis.robot}) Nome na Guild`, name, true) - .addField('(📡) Versão', pak.version, true) + .addField('(📡) Versão', version, true) .addField('(🕰️) Uptime', uptime, true) .addField('(📃) Canais', await getChannelCount(), true) .addField('(🖥️) Servidores', await getServerCount(), true) @@ -94,7 +97,107 @@ exports.run = async (aruna, message) => { .setThumbnail(`${aruna.user.displayAvatarURL}`) .setFooter(`Informações Solicitadas por ${message.author.tag}`, message.author.avatarURL) .setTimestamp(); - message.channel.send(embed); + + var os = await sysdata.GetOSData(); + + var rambo = await sysdata.GetMemoryAmount(); + + const ram = Math.round(rambo.used / 1024 / 1024 * 10) / 10; + + const ramT = Math.round(rambo.total / 1024 / 1024 * 10) / 10; + + var cpu = await sysdata.GetCPUModel(); + + const time = 60000; + + const embed2 = new Discord.RichEmbed() + .setAuthor(aruna.user.username, `${aruna.user.avatarURL}`) + .setDescription('`Informações Avançadas`') + .addField('Versão do Node', process.version) + .addField('Versão do discord.js', process.env['npm_package_dependencies_discord_js'].replace('^', '')) + .addField('Informações da Host', `Sistema Operacional: ${os.distro}\n + Processador: ${cpu.manufacturer} ${cpu.brand}\n + Núcleos do Processador: ${cpu.cores}\n + Uso de Ram: ${ram}mb / ${ramT}mb`) + .addField('Criada Por', `${process.env['npm_package_author_name']} (<@${config.superUsersId[0]}>)`) + .setFooter(`Informações Solicitadas por ${message.author.tag}`, message.author.avatarURL) + .setTimestamp(); + + message.channel.send(embed).then(async msg => { + await collector1(msg, false); + }); + + async function collector1 (msg, needRemoveEmote) { + if (needRemoveEmote) { + await removeEmote(msg); + await msg.edit(embed); + } + await msg.react('🔴'); + await msg.react('▶️'); + + const filter1 = (reaction, user) => { + return ['🔴', '▶️'].includes(reaction.emoji.name) && user.id === message.author.id; + }; + + const collector = msg.createReactionCollector(filter1, { max: 1, time: time, errors: ['time'] }); + + collector.on('collect', async (reaction, reactionCollector) => { + const reactionName = reaction.emoji.name; + + switch (reactionName) { + case '▶️': + collector2(msg, true); + break; + case '🔴': + default: + removeEmote(msg); + break; + } + }); + + collector.on('end', async () => { + await removeEmote(msg); + }); + } + + async function collector2 (msg, needRemoveEmote) { + if (needRemoveEmote) { + await removeEmote(msg); + await msg.edit(embed2); + } + + await msg.react('◀️'); + await msg.react('🔴'); + + const filter1 = (reaction, user) => { + return ['🔴', '◀️'].includes(reaction.emoji.name) && user.id === message.author.id; + }; + + const collector = msg.createReactionCollector(filter1, { max: 1, time: time, errors: ['time'] }); + + collector.on('collect', async (reaction, reactionCollector) => { + const reactionName = reaction.emoji.name; + + switch (reactionName) { + case '◀️': + collector1(msg, true); + break; + case '🔴': + default: + removeEmote(msg); + break; + } + + }); + + collector.on('end', async () => { + await removeEmote(msg); + }); + } + + async function removeEmote(msg) { + await msg.clearReactions(); + } }; exports.config = { diff --git a/src/Utils/GetSystemData.js b/src/Utils/GetSystemData.js new file mode 100644 index 0000000..ef0d568 --- /dev/null +++ b/src/Utils/GetSystemData.js @@ -0,0 +1,22 @@ +const si = require('systeminformation'); + +module.exports = { + GetCPUModel: async () => { + return await si.cpu().then(data => {return data;}); + }, + GetComputerModel: async () => { + return await si.system().then(data => {return data;}); + }, + GetCPUTemp: async () => { + return await si.cpuTemperature().then(data => {return data;}); + }, + GetMemoryAmount: async () => { + return await si.mem().then(data => {return data;}); + }, + GetGPUModel: async () => { + return await si.graphics().then(data => {return data.controllers;}); + }, + GetOSData: async () => { + return await si.osInfo().then(data => {return data;}); + } +}; \ No newline at end of file diff --git a/src/Utils/index.js b/src/Utils/index.js index ed983d8..7074e8e 100644 --- a/src/Utils/index.js +++ b/src/Utils/index.js @@ -23,5 +23,6 @@ module.exports = { emoji: require('./emojis.js'), emojis: require('./emojis.js'), ranksystem: require('./rankSystem.js'), - utils: require('./utils.js') + utils: require('./utils.js'), + sysdata: require('./GetSystemData.js') }; \ No newline at end of file From dce49a44e4d178d7d2efb768105fbd81985f3ae4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= Date: Thu, 5 Nov 2020 23:46:34 -0300 Subject: [PATCH 104/164] Try fix a vulnerability --- src/Commands/eval.js | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/Commands/eval.js b/src/Commands/eval.js index d322563..ad365a8 100644 --- a/src/Commands/eval.js +++ b/src/Commands/eval.js @@ -37,18 +37,25 @@ exports.run = (aruna, message, args) => { if (!code) return message.channel.send(embed); try { - const ev = eval(code); - let str = util.inspect(ev, { depth: 1 }); - str = `${str.replace( - new RegExp(`${aruna.token}|${process.env.TOKEN}|${config.token}`, 'g'), - 'Erro! Você não pode exibir esta informação!' - )}`; + var str; + // eslint-disable-next-line max-len + if (code.includes(`${aruna.token}` || `${process.env.TOKEN}` || `${config.token}` || 'aruna.token' || 'process.env.token' || 'config.token')) { + str = 'Erro! Você não pode exibir esta informação!'; + } else { + const ev = eval(code); + str = util.inspect(ev, { depth: 1 }); + str = `${str.replace( + new RegExp(`${aruna.token}|${process.env.TOKEN}|${config.token}`, 'g'), + 'Erro! Você não pode exibir esta informação!' + )}`; + } if (str.length > 1800) { str = str.substr(0, 1800); str = str + '...'; } + const embed = new Discord.RichEmbed() .setAuthor('Console') .addField( From 894aa58e30b820812e570c64c136889bf3ded141 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= Date: Sun, 8 Nov 2020 01:21:24 -0300 Subject: [PATCH 105/164] Fix Readme --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5621fc3..227bbae 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,8 @@ Nós [recomendamos utilizar a versão pública da Aruna](https://discordapp.com/ 3. Tenha o `git-shell` ou o `git-cli` instalados. No Windows você pode utilizar o `Git Bash`. 4. Caso você precise ou fazer modificações no código-fonte, é recomendado utilizar o [Visual Studio Code](https://code.visualstudio.com/). 5. Execute o comando `git clone https://github.com/ArunaBot/Aruna.git` usando seu terminal git em uma pasta vazia do seu computador. -6. Agora, usando o processador de comandos do seu sistema operacional (CMD, POWERSHELL, Terminal, etc), entre na pasta criada e utilize `npm install`. +6. Acesse a pasta criada usando o processador de comandos do seu sistema operacional (CMD, POWERSHELL, Terminal, etc) e execute o comando `git submodule update --init` para baixar o pacote de idiomas da aruna. +7. Ainda com o processador de comandos, execute o comando `npm install`. 8. Ao terminar de fazer o download de tudo, verifique se foi criado a pasta `node_modules`. 9. Caso essa pasta exista e tenha sido criado o arquivo `package-lock.json` significa que tudo deu certo! 10. Agora, retire o `.` da pasta `.Configs`. From 7ea57f9da4ee2d8a854051ee2e195c7600c31216 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= Date: Sun, 8 Nov 2020 02:23:07 -0300 Subject: [PATCH 106/164] Rewrite Config Command (Part 1 of UNDEFINED) --- .Configs/mongoose.js | 5 +- src/Commands/config.js | 201 +++++++++++++++++++++-------------- src/Events/guildMemberAdd.js | 2 +- src/main.js | 9 +- 4 files changed, 131 insertions(+), 86 deletions(-) diff --git a/.Configs/mongoose.js b/.Configs/mongoose.js index 91aa197..4a6ac83 100644 --- a/.Configs/mongoose.js +++ b/.Configs/mongoose.js @@ -41,12 +41,12 @@ var User = new Schema({ var Guild = new Schema({ _id: { type: String }, prefix: { type: String, default: config.prefix }, - antifake: { type: Boolean, default: true }, + antiFakeEnable: { type: Boolean, default: true }, ticketLogID: { type: String, default: null }, ticketSupportID: { type: String, default: null }, rankEnable: { type: Boolean, default: false }, ticketEnable: { type: Boolean, default: false }, - autoRole: { type: Boolean, default: false }, + autoRoleEnable: { type: Boolean, default: false }, autoRoleRole: { type: String, default: null }, language: { type: String, default: config.language }, isPremium: { type: Boolean, default: false }, @@ -77,7 +77,6 @@ var Support = new Schema({ var Command = new Schema({ _id: { type: String }, - name: { type: String }, public: { type: Boolean, default: false } }); diff --git a/src/Commands/config.js b/src/Commands/config.js index cefb495..dd6b0a4 100644 --- a/src/Commands/config.js +++ b/src/Commands/config.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ /* eslint-disable max-len */ /* This File is part of ArunaBot @@ -21,13 +20,9 @@ const { config, database } = require('../../Configs'); const Discord = require('discord.js'); -exports.run = async (aruna, message, args) => { - var validOptions = ['rank', 'ticket', 'autorole', 'autocargo', 'prefix', 'prefixo']; - - const guild = await database.Guilds.findOne({ _id: message.guild.id }); - - const user = await database.Users.findOne({ _id: message.author.id }); +var options = ['rank', 'autorole', 'prefix']; +exports.run = async (aruna, message, args) => { const noPermission = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) .setFooter(`Algo deu errado, ${message.author.username}`) @@ -36,99 +31,143 @@ exports.run = async (aruna, message, args) => { const error1 = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription( - 'Insira um dos seguintes comandos para que seja efetuado o gerenciamento: ' + - '``' + - validOptions + - '``' - ) + .setDescription(`Por Favor, utilize uma das seguintes opções junto ao comando: ${options}`) .setTimestamp(); const error2 = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription( - 'Este comando ainda não pode ser ativado. Desculpe pelo incoveniente.' - ) - .setTimestamp(); - const prefixError = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setDescription( - 'Insira se você deseja definir um prefixo (set) ou se deseja voltar ao padrão (remove).' - ) - .setTimestamp(); - const prefixError2 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Você deve inserir o prefixo desejado!') - .setTimestamp(); - const prefixError3 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('O prefixo atual já é o prefixo padrão!') - .setTimestamp(); - const prefixRemove = new Discord.RichEmbed() - .setColor([0, 255, 0]) - .setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL) - .setFooter('Sucesso!') - .setDescription( - `Prefixo redefinido para \`${config.prefix}\` com sucesso!` - ) - .setTimestamp(); - const prefixDefinido = new Discord.RichEmbed() - .setColor([0, 255, 0]) - .setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL) - .setFooter('Sucesso!') - .setDescription(`Prefixo definido para \`${args[2]}\` com sucesso!`) + .setDescription('Esse comando não pode ser configurado no momento :(') .setTimestamp(); + const guild = await database.Guilds.findOne({ _id: message.guild.id }); + + const user = await database.Users.findOne({ _id: message.author.id }); + if (!message.member.hasPermission('MANAGE_GUILD')) return message.channel.send(noPermission); if (!args || !args[0]) return message.channel.send(error1); - if (!validOptions.includes(args[0].toLowerCase())) return message.channel.send(error1); + if (!options.includes(args[0].toLowerCase())) { + return message.channel.send(error1); + } - const command = args[0].toLowerCase(); + switch (args[0].toLowerCase()) { + case 'prefix': + prefixVar(args[1] || null); + break; + default: + return message.channel.send(error1); + } - if (command === 'rank') { - guild.verify = guild.rankEnable; - } else if (command === 'ticket') { - guild.verify = guild.ticketEnable; - } else if (command === 'autocargo' || command === 'autorole') { - guild.verify = guild.autoRole; - } else if (command === 'prefix' || command === 'prefixo') { - guild.verify = true; + async function prefixVar(action) { + const actionList = ['set', 'remove', 'definir', 'remover']; + + if (!action || !actionList.includes(action)) return invalidAction(actionList); + + const prefixError = new Discord.RichEmbed() + .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) + .setFooter(`Algo deu errado, ${message.author.username}`) + .setDescription('Você deve inserir o prefixo desejado!') + .setTimestamp(); + const prefixError2 = new Discord.RichEmbed() + .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) + .setFooter(`Algo deu errado, ${message.author.username}`) + .setDescription('Esse já é o prefixo atual!') + .setTimestamp(); + const prefixError3 = new Discord.RichEmbed() + .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) + .setFooter(`Algo deu errado, ${message.author.username}`) + .setDescription('O prefixo atual já é o prefixo padrão!') + .setTimestamp(); + const prefixRemove = new Discord.RichEmbed() + .setColor([0, 255, 0]) + .setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL) + .setFooter('Sucesso!') + .setDescription( + `Prefixo redefinido para \`${config.prefix}\` com sucesso!` + ) + .setTimestamp(); + const prefixDefinido = new Discord.RichEmbed() + .setColor([0, 255, 0]) + .setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL) + .setFooter('Sucesso!') + .setDescription(`Prefixo definido para \`${args[2] || undefined}\` com sucesso!`) + .setTimestamp(); + + switch (action) { + case 'set': + case 'definir': + if (!args[2]) return message.channel.send(prefixError); + + if (args[2] === guild.prefix) return message.channel.send(prefixError2); + + guild.prefix = args[2]; + + guild.save(); + + message.channel.send(prefixDefinido); + + break; + case 'remove': + case 'remover': + if (guild.prefix === config.general.prefix) return message.channel.send(prefixError3); + + guild.prefix = config.prefix; + + guild.save(); + + message.channel.send(prefixRemove); + + break; + default: + return invalidAction(actionList); + } } - const no = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription( - `Neste momento, o comando ${command} está desativado. Para ativar, use \`\`${guild.prefix}config ${command} ativar\`\`.` - ) - .setTimestamp(); - const yes = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription( - `Neste momento, o comando ${command} está ativado. Para desativar, use \`\`${guild.prefix}config ${command} desativar\`\`.` - ) - .setTimestamp(); + async function isEnabled (command) { + const dbCommand = await database.Commands.findOne({ _id: `${command}` }); - const dbCommand = await database.Comandos.findOne({ name: `${command}` }); + if (!dbCommand || (!dbCommand.public && !user.SUPER)) { + message.channel.send(error2); + return false; + } - if (!dbCommand || dbCommand.public !== true && user.SUPER !== true) - return message.channel.send(error2); - - - - if (!args[1] || args[1] !== 'ativar' && args[1] !== 'desativar' && args[1] !== 'enable' && args[1] !== 'disable') { - if (guild.verify === false) { - return message.channel.send(no); - } else { - return message.channel.send(yes); + const no = new Discord.RichEmbed() + .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) + .setFooter(`Algo deu errado, ${message.author.username}`) + .setDescription( + `Neste momento, o comando ${command} está desativado. Para ativar, use \`\`${guild.prefix}config ${command} ativar\`\`.` + ) + .setTimestamp(); + const yes = new Discord.RichEmbed() + .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) + .setFooter(`Algo deu errado, ${message.author.username}`) + .setDescription( + `Neste momento, o comando ${command} está ativado. Para desativar, use \`\`${guild.prefix}config ${command} desativar\`\`.` + ) + .setTimestamp(); + + if (guild[command + 'Enable']) { + message.channel.send(yes); + return true; + } else if (!guild[command + 'Enable']) { + message.channel.send(no); + return false; } + return undefined; } + + function invalidAction (option) { + const optionError = new Discord.RichEmbed() + .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) + .setFooter(`Algo deu errado, ${message.author.username}`) + .setDescription(`Por Favor, utilize uma das seguintes ações após a seleção da opção: ${option}`) + .setTimestamp(); + return message.channel.send(optionError); + } + + /* Below this line, old code */ const toDo = args[1].toLowerCase(); diff --git a/src/Events/guildMemberAdd.js b/src/Events/guildMemberAdd.js index 54f17fd..fe1b286 100644 --- a/src/Events/guildMemberAdd.js +++ b/src/Events/guildMemberAdd.js @@ -36,7 +36,7 @@ exports.run = async (aruna, member) => { const langD = require(`../../languages/bot/${guild.language || config.defaultLanguage}/events.json`); - if (guild.antifake !== false) { + if (guild.antiFakeEnable) { const kickFakeEmbed = new Discord.RichEmbed() .setAuthor(langD.memberAdd.antifake.embed.fakemember.title.replace('[username]', member.user.username), member.user.avatarURL) .setFooter(langD.memberAdd.antifake.embed.fakemember.footer.replace('[username]', member.user.username)) diff --git a/src/main.js b/src/main.js index e6cade8..fbfb2cb 100644 --- a/src/main.js +++ b/src/main.js @@ -21,7 +21,7 @@ require('events').EventEmitter.defaultMaxListeners = 999; const Discord = require('discord.js'); const fs = require('fs'); -const { config } = require('../Configs'); +const { config, database } = require('../Configs'); const chalk = require('chalk'); const pkg = require('../package.json'); @@ -62,6 +62,13 @@ fs.readdir('./src/Commands/', (err, files) => { jsfile.forEach(async f => { const pull = require(`./Commands/${f}`); aruna.commands.set(pull.config.name, pull); + if (pull.config.register) { + const verReg = await database.Commands.findOne({ _id: pull.config.name}); + if (!verReg) { + const reg = new database.Commands({ _id: pull.config.name, public: pull.config.register.public }); + await reg.save(); + } + } log(`[${language.main.command}] => ${f}`); pull.config.aliases.forEach(alias => { aruna.aliases.set(alias, pull.config.name); From 759457aa07314e4de0735065792c9b3f607f09bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= Date: Sun, 8 Nov 2020 02:27:48 -0300 Subject: [PATCH 107/164] Fix eslint indent for SwitchCase --- .eslintrc.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.eslintrc.json b/.eslintrc.json index 5038308..89db7d4 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -18,7 +18,8 @@ "computed-property-spacing": "warn", "indent": [ "warn", - 2 + 2, + { "SwitchCase": 1 } ], "keyword-spacing": [ "warn", From fef4f567a09ae644a17c05150c2460c0dae9cf7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= Date: Sun, 8 Nov 2020 15:12:47 -0300 Subject: [PATCH 108/164] Rewrite Config Command (Part 2 of 2) --- languages | 2 +- src/Commands/config.js | 118 +++++++++++++++++++++++------------------ src/Commands/prefix.js | 6 +-- src/Commands/rank.js | 7 ++- src/Events/message.js | 6 +-- src/main.js | 15 +++--- 6 files changed, 86 insertions(+), 68 deletions(-) diff --git a/languages b/languages index acd4923..b5c07f1 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit acd492317744aa643c8019870a7676306a9a8457 +Subproject commit b5c07f111f0eaf8c76c70a3bee2c5ce772faa9b8 diff --git a/src/Commands/config.js b/src/Commands/config.js index dd6b0a4..9d3944e 100644 --- a/src/Commands/config.js +++ b/src/Commands/config.js @@ -56,6 +56,9 @@ exports.run = async (aruna, message, args) => { case 'prefix': prefixVar(args[1] || null); break; + case 'rank': + rankVar(args[1] || null); + break; default: return message.channel.send(error1); } @@ -125,12 +128,50 @@ exports.run = async (aruna, message, args) => { } } - async function isEnabled (command) { + async function rankVar (action) { + const actionList = ['enable', 'ativar', 'disable', 'desativar']; + + if (!action) return isEnabled ('rank', true); + + if (!actionList.includes(action)) return invalidAction(actionList); + + const result = await isEnabled('rank', false); + + if (result === undefined) return; + + switch (action) { + case 'enable': + case 'ativar': + if (result.enabled) return message.channel.send(result.message); + + guild.rankEnable = true; + + await guild.save(); + + final(true, 'rank'); + break; + case 'disable': + case 'desativar': + if (!result.enabled) return message.channel.send(result.message); + + guild.rankEnable = false; + + await guild.save(); + + final(false, 'rank'); + break; + default: + invalidAction(actionList); + break; + } + } + + async function isEnabled (command, sendMessage) { const dbCommand = await database.Commands.findOne({ _id: `${command}` }); if (!dbCommand || (!dbCommand.public && !user.SUPER)) { message.channel.send(error2); - return false; + return undefined; } const no = new Discord.RichEmbed() @@ -149,13 +190,12 @@ exports.run = async (aruna, message, args) => { .setTimestamp(); if (guild[command + 'Enable']) { - message.channel.send(yes); - return true; - } else if (!guild[command + 'Enable']) { - message.channel.send(no); - return false; + if (sendMessage) message.channel.send(yes); + return { enabled: true, message: yes }; + } else { + if (sendMessage) message.channel.send(no); + return { enabled: false, message: no }; } - return undefined; } function invalidAction (option) { @@ -167,53 +207,27 @@ exports.run = async (aruna, message, args) => { return message.channel.send(optionError); } - /* Below this line, old code */ - - const toDo = args[1].toLowerCase(); - - const ativo = new Discord.RichEmbed() - .setColor([0, 255, 0]) - .setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL) - .setFooter('Sucesso!') - .setDescription(`O comando \`${command}\` foi ativado com sucesso!`) - .setTimestamp(); + function final (result, command) { + const enabled = new Discord.RichEmbed() + .setColor([0, 255, 0]) + .setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL) + .setFooter('Sucesso!') + .setDescription(`O comando \`${command}\` foi ativado com sucesso!`) + .setTimestamp(); - const inativo = new Discord.RichEmbed() - .setColor([0, 255, 0]) - .setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL) - .setFooter('Sucesso!') - .setDescription(`O comando \`${command}\` foi desativado com sucesso!`) - .setTimestamp(); + const disabled = new Discord.RichEmbed() + .setColor([0, 255, 0]) + .setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL) + .setFooter('Sucesso!') + .setDescription(`O comando \`${command}\` foi desativado com sucesso!`) + .setTimestamp(); - if (toDo == 'ativar' && guild.verify === false || toDo == 'enable' && guild.verify === true) { - if (command === 'rank') { - guild.rankEnable = true; - guild.save(); - } else if (command === 'ticket') { - const { activeticket } = require('../Utils'); - activeticket.run(aruna, message); - guild.ticketEnable = true; - guild.save(); - } else if (command === 'autocargo' || command === 'autorole') { - guild.autoRole = true; - guild.save(); + if (result) { + return message.channel.send(enabled); + } else { + return message.channel.send(disabled); } - return message.channel.send(ativo); - } else if (guild.verify === false) return message.channel.send(yes); - - if (toDo == 'desativar' && guild.verify === true || toDo == 'disable' && guild.verify === true) { - if (command === 'rank') { - guild.rankEnable = false; - guild.save(); - } else if (command === 'ticket') { - guild.ticketEnable = false; - guild.save(); - } else if (command === 'autocargo' || command === 'autorole') { - guild.autoRole = false; - guild.save(); - } - return message.channel.send(inativo); - } else if (guild.verify === true) return message.channel.send(no); + } }; exports.config = { diff --git a/src/Commands/prefix.js b/src/Commands/prefix.js index 4ab395f..819ed56 100644 --- a/src/Commands/prefix.js +++ b/src/Commands/prefix.js @@ -50,13 +50,13 @@ exports.run = async (aruna, message, args, langc) => { const prefixRemove = new Discord.RichEmbed() .setColor([0, 255, 0]) .setAuthor(language.generic.embed.sucess.title.replace('[username]', message.member.displayName), message.author.avatarURL) - .setFooter(language.generic.embed.sucess.title) + .setFooter(language.generic.embed.sucess.footer) .setDescription(language.prefix.embed.sucess.description1.replace('[prefix]', config.prefix)) .setTimestamp(); const prefixDefinido = new Discord.RichEmbed() .setColor([0, 255, 0]) .setAuthor(language.generic.embed.sucess.title.replace('[username]', message.member.displayName), message.author.avatarURL) - .setFooter(language.generic.embed.sucess.title) + .setFooter(language.generic.embed.sucess.footer) .setDescription(language.prefix.embed.sucess.description2.replace('[prefix]', args[1])) .setTimestamp(); const deprecatedWarn = new Discord.RichEmbed() @@ -67,7 +67,7 @@ exports.run = async (aruna, message, args, langc) => { .setFooter(language.generic.embed.deprecated.footer) .setTimestamp(); - message.channel.send(deprecatedWarn).then(msg => msg.delete(60000)); + message.channel.send(deprecatedWarn).then(msg => msg.delete(30000)); if (!message.member.hasPermission('MANAGE_GUILD')) return message.channel.send(nopermission); diff --git a/src/Commands/rank.js b/src/Commands/rank.js index b72f1b5..ff734e3 100644 --- a/src/Commands/rank.js +++ b/src/Commands/rank.js @@ -32,7 +32,7 @@ exports.run = async (aruna, message, args, langc) => { const error = new Discord.RichEmbed() .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) - .setDescription(language.generic.embed.disabled.replace('[config]', `${guild.prefix}config`)) + .setDescription(language.generic.embed.disabled.description.replace('[config]', `${guild.prefix}config`)) .setTimestamp(); if (guild.rankEnable !== true) return message.channel.send(error); @@ -61,7 +61,7 @@ exports.run = async (aruna, message, args, langc) => { .addField(language.rank.embed.field1, level, true) .addField(language.rank.embed.field2, xp, true) .addField(language.rank.embed.field3, need, true) - .setFooter(language.generic.footer.replace('[usertag]', message.author.tag)) + .setFooter(language.generic.embed.footer.replace('[usertag]', message.author.tag)) .setTimestamp(); message.channel.send(embed); }; @@ -69,6 +69,9 @@ exports.run = async (aruna, message, args, langc) => { exports.config = { name: 'rank', description: language.rank.config.description, + register: { + public: true + }, aliases: ['perfil'], category: '🎉 Entretenimento', public: true diff --git a/src/Events/message.js b/src/Events/message.js index 877e6a4..dbbbb9f 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -109,7 +109,7 @@ exports.run = async (aruna, message) => { } }); - if (guild.rankEnable === true) { + if (guild.rankEnable) { const rank = await database.Rank.findOne({ _id: `${message.author.id}-${message.guild.id}` }); @@ -123,12 +123,12 @@ exports.run = async (aruna, message) => { guild: message.guild.id }); - saveR.save(); + await saveR.save(); } const db = database; const xpsystem = require('../utils/rankSystem.js'); - xpsystem.run(aruna, message, lang, langc, db, cooldown, utils, Discord); + await xpsystem.run(aruna, message, lang, langc, db, cooldown, utils, Discord); } if (message.content.startsWith(prefix)) { diff --git a/src/main.js b/src/main.js index fbfb2cb..a235279 100644 --- a/src/main.js +++ b/src/main.js @@ -63,10 +63,11 @@ fs.readdir('./src/Commands/', (err, files) => { const pull = require(`./Commands/${f}`); aruna.commands.set(pull.config.name, pull); if (pull.config.register) { - const verReg = await database.Commands.findOne({ _id: pull.config.name}); + const verReg = await database.Commands.findOne({ _id: pull.config.name }); if (!verReg) { const reg = new database.Commands({ _id: pull.config.name, public: pull.config.register.public }); await reg.save(); + debug(`[${language.main.command}] [${language.main.cluster}] ${language.main.registered.replace('[COMMAND]', pull.config.name)}`); } } log(`[${language.main.command}] => ${f}`); @@ -81,20 +82,20 @@ function logPrefix() { return `${chalk.gray('[')}${isSharded() ? `${language.generic.shard} ${chalk.blue(aruna.shard.id)}` : aruna.user.username}${chalk.gray(']')}`; } -function log(...a) { +async function log(...a) { return console.log(infoPrefix, logPrefix(), ...a); } -function warn(...a) { +async function warn(...a) { return console.warn(logPrefix(), chalk.yellow(...a)); } -function error(...a) { +async function error(...a) { return console.error(errorPrefix, logPrefix(), chalk.red(...a)); } // eslint-disable-next-line no-unused-vars -function debug(...a) { +async function debug(...a) { if (config.debug) { return console.debug(logPrefix(), chalk.magenta(...a)); } else return; @@ -104,8 +105,8 @@ function isSharded() { return !!aruna.shard; } -aruna.login(config.token).then(() => { - log(`=> ${language.initialization.complete}`); +aruna.login(config.token).then(async () => { + await log(`=> ${language.initialization.complete}`); }).catch(e => { error(`=> ${language.initialization.fail} ${e}`); }); \ No newline at end of file From 7c3fee78c135d66f1bfea6deeba160824afcb909 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= Date: Sun, 8 Nov 2020 15:37:01 -0300 Subject: [PATCH 109/164] Servericon command --- languages | 2 +- src/Commands/avatar.js | 2 +- src/Commands/servericon.js | 52 ++++++++++++++++++++++++++++++++++++++ src/Commands/serverinfo.js | 1 + 4 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 src/Commands/servericon.js diff --git a/languages b/languages index b5c07f1..f850e38 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit b5c07f111f0eaf8c76c70a3bee2c5ce772faa9b8 +Subproject commit f850e381461d965a9c167aa00cd28843cf0b1723 diff --git a/src/Commands/avatar.js b/src/Commands/avatar.js index 7947086..33d1b7a 100644 --- a/src/Commands/avatar.js +++ b/src/Commands/avatar.js @@ -42,7 +42,7 @@ exports.run = (aruna, message, args, langc) => { exports.config = { name: 'avatar', - aliases: [''], + aliases: ['usericon'], description: language.avatar.config.description, category: '🎉 Entretenimento', public: true diff --git a/src/Commands/servericon.js b/src/Commands/servericon.js new file mode 100644 index 0000000..9a5317c --- /dev/null +++ b/src/Commands/servericon.js @@ -0,0 +1,52 @@ +/* + This File is part of ArunaBot + Copyright (C) LoboMetalurgico (and contributors) 2019-2020 + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +const Discord = require('discord.js'); +const { emoji } = require('../Utils'); +const { config } = require('../../Configs'); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); + +exports.run = (aruna, message, args, langc) => { + + if (langc) { + language = langc; + } + + var guildIcon; + + if (message.guild.iconURL.includes('a_')) { + guildIcon = message.guild.iconURL.slice(0, -3).trim() + 'gif'; + } else { + guildIcon = message.guild.iconURL; + } + + const embed = new Discord.RichEmbed() + .setTitle(language.servericon.embed.title.replace('[emoji]', emoji.picture).replace('[guild]', message.guild.name)) + .setDescription(language.servericon.embed.description.replace('[url]', guildIcon)) + .setImage(guildIcon) + .setTimestamp(); + message.channel.send(embed); +}; + +exports.config = { + name: 'servericon', + aliases: ['guildicon'], + description: language.servericon.config.description, + category: '🎉 Entretenimento', + public: true +}; diff --git a/src/Commands/serverinfo.js b/src/Commands/serverinfo.js index 4376729..52c482d 100644 --- a/src/Commands/serverinfo.js +++ b/src/Commands/serverinfo.js @@ -67,6 +67,7 @@ exports.run = async (aruna, message) => { } else { guildIcon = message.guild.iconURL; } + const embed = new Discord.RichEmbed() .setColor([0, 23, 132]) .setTitle(`${pType} ${message.guild.name}`) From 2abaa9733c94e0ed6a9cc58ae9ff17f3d43c1d63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 9 Nov 2020 16:09:07 -0300 Subject: [PATCH 110/164] Finish Clear --- src/Commands/clear.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Commands/clear.js b/src/Commands/clear.js index 047a208..9d98040 100644 --- a/src/Commands/clear.js +++ b/src/Commands/clear.js @@ -71,9 +71,9 @@ exports.run = async (aruna, message, args, langc) => { await message.delete().then(async () => { await message.channel.fetchMessages({ limit: args[0] }).then(async messages => { - await message.channel.bulkDelete(messages, true).then(msgs => { - message.channel.send(verify(msgs, args, message, language)).then(msg => { - msg.delete(10000); + await message.channel.bulkDelete(messages, true).then(async msgs => { + await message.channel.send(verify(msgs, args, message, language)).then(async msg => { + await msg.delete(10000); }); }); }); @@ -82,7 +82,7 @@ exports.run = async (aruna, message, args, langc) => { exports.config = { name: 'clear', description: language.clear.config.description, - aliases: [], + aliases: ['limpar'], category: '👮‍♂️ Moderação', public: true }; From 5897363de518cd265da6d837d8d8483e0c84a177 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 9 Nov 2020 23:59:09 -0300 Subject: [PATCH 111/164] Config Command Localization --- languages | 2 +- src/Commands/config.js | 96 +++++++++++++++++++++--------------------- 2 files changed, 50 insertions(+), 48 deletions(-) diff --git a/languages b/languages index f850e38..76c92a7 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit f850e381461d965a9c167aa00cd28843cf0b1723 +Subproject commit 76c92a71daddd8978d9377c96659d421f72c5114 diff --git a/src/Commands/config.js b/src/Commands/config.js index 9d3944e..d908040 100644 --- a/src/Commands/config.js +++ b/src/Commands/config.js @@ -18,25 +18,31 @@ */ const { config, database } = require('../../Configs'); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); const Discord = require('discord.js'); var options = ['rank', 'autorole', 'prefix']; -exports.run = async (aruna, message, args) => { +exports.run = async (aruna, message, args, langc) => { + + if (langc) { + language = langc; + } + const noPermission = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Você não possui a permissão de `Gerenciar Servidor`') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.config.embed.error.noperm.replace('[manageGuild]', language.generic.permissions.manageGuild)) .setTimestamp(); const error1 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription(`Por Favor, utilize uma das seguintes opções junto ao comando: ${options}`) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.config.embed.error.description1.replace('[OPTIONS]', options)) .setTimestamp(); const error2 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Esse comando não pode ser configurado no momento :(') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.config.embed.error.description2) .setTimestamp(); const guild = await database.Guilds.findOne({ _id: message.guild.id }); @@ -69,33 +75,31 @@ exports.run = async (aruna, message, args) => { if (!action || !actionList.includes(action)) return invalidAction(actionList); const prefixError = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Você deve inserir o prefixo desejado!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.config.embed.error.prefix.description1) .setTimestamp(); const prefixError2 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Esse já é o prefixo atual!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.config.embed.error.prefix.description2) .setTimestamp(); const prefixError3 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('O prefixo atual já é o prefixo padrão!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.config.embed.error.prefix.description3) .setTimestamp(); const prefixRemove = new Discord.RichEmbed() .setColor([0, 255, 0]) - .setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL) - .setFooter('Sucesso!') - .setDescription( - `Prefixo redefinido para \`${config.prefix}\` com sucesso!` - ) + .setAuthor(language.generic.embed.sucess.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.sucess.footer.replace('[username]', message.member.displayName)) + .setDescription(language.config.embed.sucess.prefix.description1.replace('[prefix]', config.prefix)) .setTimestamp(); const prefixDefinido = new Discord.RichEmbed() .setColor([0, 255, 0]) - .setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL) - .setFooter('Sucesso!') - .setDescription(`Prefixo definido para \`${args[2] || undefined}\` com sucesso!`) + .setAuthor(language.generic.embed.sucess.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.sucess.footer.replace('[username]', message.member.displayName)) + .setDescription(language.config.embed.sucess.prefix.description1.replace('[prefix]', args[2] || undefined)) .setTimestamp(); switch (action) { @@ -174,19 +178,17 @@ exports.run = async (aruna, message, args) => { return undefined; } + const replacer = /\[COMMAND\]/g; + const no = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription( - `Neste momento, o comando ${command} está desativado. Para ativar, use \`\`${guild.prefix}config ${command} ativar\`\`.` - ) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.config.embed.generic.no.replace(replacer, command).replace('[PREFIX]', guild.prefix)) .setTimestamp(); const yes = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription( - `Neste momento, o comando ${command} está ativado. Para desativar, use \`\`${guild.prefix}config ${command} desativar\`\`.` - ) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.config.embed.generic.yes.replace(replacer, command).replace('[PREFIX]', guild.prefix)) .setTimestamp(); if (guild[command + 'Enable']) { @@ -198,11 +200,11 @@ exports.run = async (aruna, message, args) => { } } - function invalidAction (option) { + function invalidAction (options) { const optionError = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription(`Por Favor, utilize uma das seguintes ações após a seleção da opção: ${option}`) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.config.embed.error.invalidaction.replace('[OPTIONS]', options)) .setTimestamp(); return message.channel.send(optionError); } @@ -210,16 +212,16 @@ exports.run = async (aruna, message, args) => { function final (result, command) { const enabled = new Discord.RichEmbed() .setColor([0, 255, 0]) - .setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL) - .setFooter('Sucesso!') - .setDescription(`O comando \`${command}\` foi ativado com sucesso!`) + .setAuthor(language.generic.embed.sucess.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.sucess.footer.replace('[username]', message.member.displayName)) + .setDescription(language.config.embed.sucess.description1.replace('[COMMAND]', command)) .setTimestamp(); const disabled = new Discord.RichEmbed() .setColor([0, 255, 0]) - .setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL) - .setFooter('Sucesso!') - .setDescription(`O comando \`${command}\` foi desativado com sucesso!`) + .setAuthor(language.generic.embed.sucess.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.sucess.footer.replace('[username]', message.member.displayName)) + .setDescription(language.config.embed.sucess.description2.replace('[COMMAND]', command)) .setTimestamp(); if (result) { From 5763ab92e8fbe38072999d9128e6af9538c88ab9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Wed, 11 Nov 2020 15:48:38 -0300 Subject: [PATCH 112/164] Initial Docker Support --- .dockerignore | 8 ++++++++ .gitignore | 1 - Dockerfile | 17 +++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..957f6ab --- /dev/null +++ b/.dockerignore @@ -0,0 +1,8 @@ +.Configs/ +node_modules/ +.vscode/ +Dockerfile +README.md +LICENSE +.eslintrc.json +.eslintignore \ No newline at end of file diff --git a/.gitignore b/.gitignore index eab33cd..3690b00 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -.env Configs/ node_modules/ .vscode/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8f4fec6 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +# Set node version +FROM node:12.16.2 + +# Copy the source +WORKDIR /src +COPY ./ /src + +LABEL maintainer="Lobo Metalúrgico " + +# Update the language submodule +RUN if [ -z "$(ls -A /src/languages)" ]; then git submodule update --init; fi + +# Install Packages +RUN npm install + +# Start bot +CMD ["npm", "start"] \ No newline at end of file From 9cd16aa14518c5cd8bb5b4a5c43310da59b288d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Thu, 19 Nov 2020 21:04:57 -0300 Subject: [PATCH 113/164] chore(lint): Auto-fix linting errors --- src/Commands/bot.js | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/Commands/bot.js b/src/Commands/bot.js index 19836f3..a4c3584 100644 --- a/src/Commands/bot.js +++ b/src/Commands/bot.js @@ -145,13 +145,13 @@ exports.run = async (aruna, message) => { const reactionName = reaction.emoji.name; switch (reactionName) { - case '▶️': - collector2(msg, true); - break; - case '🔴': - default: - removeEmote(msg); - break; + case '▶️': + collector2(msg, true); + break; + case '🔴': + default: + removeEmote(msg); + break; } }); @@ -179,13 +179,13 @@ exports.run = async (aruna, message) => { const reactionName = reaction.emoji.name; switch (reactionName) { - case '◀️': - collector1(msg, true); - break; - case '🔴': - default: - removeEmote(msg); - break; + case '◀️': + collector1(msg, true); + break; + case '🔴': + default: + removeEmote(msg); + break; } }); From e12ed62ef685136ef8743f0e54f1f3f72282c391 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Fri, 20 Nov 2020 11:09:42 -0300 Subject: [PATCH 114/164] Adding more status --- src/Events/ready.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/Events/ready.js b/src/Events/ready.js index 514a7ce..30fee62 100644 --- a/src/Events/ready.js +++ b/src/Events/ready.js @@ -37,6 +37,18 @@ exports.run = async (aruna) => { var uptime; + async function getUserCount() { + const req = await aruna.shard.fetchClientValues('users.size'); + + return req.reduce((p, n) => p + n, 0); + } + + async function getServerCount() { + const req = await aruna.shard.fetchClientValues('guilds.size'); + + return req.reduce((p, n) => p + n, 0); + } + if (days >= 1) { uptime = `${days}d, ${hours}h, ${minutes}m`; } else if (hours >= 1) { @@ -76,6 +88,14 @@ exports.run = async (aruna) => { { name: langE.ready.status['7'], type: 'listening' + }, + { + name: langE.ready.status['8'].replace('[USERS]', await getUserCount()), + type: 'listening' + }, + { + name: langE.ready.status['9'].replace('[GUILDS]', await getServerCount()), + type: 'listening' } ]; async function setStatus() { From 600330a945fbc0dfb12b73523441577a677f76b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Fri, 20 Nov 2020 11:12:50 -0300 Subject: [PATCH 115/164] Update Language --- languages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/languages b/languages index 76c92a7..74450b2 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 76c92a71daddd8978d9377c96659d421f72c5114 +Subproject commit 74450b26601e2ff434937d33f70cab7e3538db9e From 95cb0a99e2df2e0a543755720d01962cd797b5b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Fri, 20 Nov 2020 12:19:19 -0300 Subject: [PATCH 116/164] Fix uptime --- src/Commands/bot.js | 5 +++-- src/Events/ready.js | 47 +++++++++++++++++++++++---------------------- 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/src/Commands/bot.js b/src/Commands/bot.js index a4c3584..573bef5 100644 --- a/src/Commands/bot.js +++ b/src/Commands/bot.js @@ -25,11 +25,12 @@ exports.run = async (aruna, message) => { async function getUptime() { const req = await aruna.shard.broadcastEval('this.uptime'); - return req[0]; + return req.reduce((p, n) => p + n, 0); } - let totalSeconds = (await getUptime() / 1000); + let totalSeconds = ((await getUptime() / aruna.shard.count) / 1000); const days = Math.floor(totalSeconds / 86400); + totalSeconds %= 86400; const hours = Math.floor(totalSeconds / 3600); totalSeconds %= 3600; const minutes = Math.floor(totalSeconds / 60); diff --git a/src/Events/ready.js b/src/Events/ready.js index 30fee62..1b58201 100644 --- a/src/Events/ready.js +++ b/src/Events/ready.js @@ -28,15 +28,6 @@ const langE = require(`../../languages/bot/${config.defaultLanguage}/events.json exports.run = async (aruna) => { log(language.generic.connected); - let totalSeconds = (aruna.uptime / 1000); - const days = Math.floor(totalSeconds / 86400); - const hours = Math.floor(totalSeconds / 3600); - totalSeconds %= 3600; - const minutes = Math.floor(totalSeconds / 60); - const seconds = Math.floor(totalSeconds % 60); - - var uptime; - async function getUserCount() { const req = await aruna.shard.fetchClientValues('users.size'); @@ -49,16 +40,6 @@ exports.run = async (aruna) => { return req.reduce((p, n) => p + n, 0); } - if (days >= 1) { - uptime = `${days}d, ${hours}h, ${minutes}m`; - } else if (hours >= 1) { - uptime = `${hours}h, ${minutes}m, ${seconds}s`; - } else if (minutes >= 1) { - uptime = `${minutes}m, ${seconds}s`; - } else { - uptime = `${seconds}s`; - } - const status = [ { name: langE.ready.status['1'], @@ -69,7 +50,7 @@ exports.run = async (aruna) => { type: 'listening' }, { - name: langE.ready.status['3'].replace('[time]', uptime), + name: langE.ready.status['3'], type: 'playing' }, { @@ -98,7 +79,7 @@ exports.run = async (aruna) => { type: 'listening' } ]; - async function setStatus() { + async function setStatus(time) { var maintenance = await database.System.findOne({ _id: 1 }); var inMaintenance; if (!maintenance) { @@ -111,13 +92,33 @@ exports.run = async (aruna) => { if (inMaintenance === true){ aruna.user.setPresence({ game: { name: langE.ready.maintenance.replace('[date]', maintenance.date).replace('[time]', maintenance.time)}}); } else { - const randomStatus = status[Math.floor(Math.random() * status.length)]; + var randomStatus = status[Math.floor(Math.random() * status.length)]; + randomStatus = { name: randomStatus.name.replace('[time]', time), type: randomStatus.type }; aruna.user.setPresence({ game: randomStatus }); } } setStatus(); setInterval(() => { - setStatus(); + let totalSeconds = (aruna.uptime / 1000); + const days = Math.floor(totalSeconds / 86400); + totalSeconds %= 86400; + const hours = Math.floor(totalSeconds / 3600); + totalSeconds %= 3600; + const minutes = Math.floor(totalSeconds / 60); + const seconds = Math.floor(totalSeconds % 60); + + var uptime; + + if (days >= 1) { + uptime = `${days}d, ${hours}h, ${minutes}m`; + } else if (hours >= 1) { + uptime = `${hours}h, ${minutes}m, ${seconds}s`; + } else if (minutes >= 1) { + uptime = `${minutes}m, ${seconds}s`; + } else { + uptime = `${seconds}s`; + } + setStatus(uptime); }, 15000); function logPrefix() { From d2d9078fa145fce21cbeb8542707ba62e053eb51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Fri, 20 Nov 2020 12:19:50 -0300 Subject: [PATCH 117/164] Minor Bug Fixed --- src/Commands/config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Commands/config.js b/src/Commands/config.js index d908040..9e06fee 100644 --- a/src/Commands/config.js +++ b/src/Commands/config.js @@ -118,7 +118,7 @@ exports.run = async (aruna, message, args, langc) => { break; case 'remove': case 'remover': - if (guild.prefix === config.general.prefix) return message.channel.send(prefixError3); + if (guild.prefix === config.prefix) return message.channel.send(prefixError3); guild.prefix = config.prefix; From 9f0e6760cfb554063e9e39aa19224000622570fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sat, 21 Nov 2020 21:22:17 -0300 Subject: [PATCH 118/164] Perfomance Fix --- package-lock.json | 40 ++++++++++++++++++++-------------------- src/Commands/ship.js | 17 ++++++++--------- 2 files changed, 28 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index 35666e9..164367b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -83,9 +83,9 @@ } }, "@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", "requires": { "regenerator-runtime": "^0.13.4" } @@ -590,9 +590,9 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "bl": { "version": "2.2.1", @@ -660,12 +660,12 @@ "integrity": "sha512-kDuEzldR21lHciPQAIulLs1LZlCXdLziXI6Mb/TDkwXhb//UORJNPXgcRs2CuO4H0DcMkpfT3/ySsP3unoZjBg==" }, "buffer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", - "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, "buffer-equal": { @@ -1436,9 +1436,9 @@ } }, "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "ignore": { "version": "4.0.6", @@ -2559,9 +2559,9 @@ "dev": true }, "timm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.0.tgz", - "integrity": "sha512-oVYHPG5KiUJ3KrbBTmW2kTauIO9E1lDEUM6K92HVuwnPfTt7W8UXZG3vqOo4tVaHRI9AHToVHqhzIUUFkDN6rA==" + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" }, "tiny-emitter": { "version": "2.1.0", @@ -2569,9 +2569,9 @@ "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" }, "tinycolor2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", - "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=" + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", + "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==" }, "toidentifier": { "version": "1.0.0", diff --git a/src/Commands/ship.js b/src/Commands/ship.js index cbb4598..42a7b9a 100644 --- a/src/Commands/ship.js +++ b/src/Commands/ship.js @@ -31,25 +31,24 @@ exports.run = async (client, message) => { porcentagem = aleatorio; - const user1 = message.mentions.users.first() || message.author; - const user2 = message.mentions.users.array()[1]; + const user1 = message.mentions.users.first(); + const user2 = message.mentions.users.array()[1] || message.author; if (!user2) return message.channel.send(error1); const richard_lindu = await Jimp.read(user1.avatarURL); const richard_dmais = await Jimp.read(user2.avatarURL); - await richard_lindu.resize(115, 115); - await richard_dmais.resize(115, 115); + richard_lindu.resize(115, 115); + richard_dmais.resize(115, 115); const eu_amo_o_richard = await Jimp.read( 'https://cdn.discordapp.com/attachments/486016051851689994/509883077707694100/ships.png' ); - await eu_amo_o_richard.composite(richard_lindu, 1, 1); - await eu_amo_o_richard - .composite(richard_dmais, 229, 1) - .write(`./tmp/img/${user1.id}${user2.id}.png`); + eu_amo_o_richard.composite(richard_lindu, 1, 1); + eu_amo_o_richard.composite(richard_dmais, 229, 1); + eu_amo_o_richard.write(`./tmp/img/${user1.id}-${user2.id}.png`); const aido = new Array(); aido[1] = 'Msg 1'; @@ -90,7 +89,7 @@ exports.run = async (client, message) => { }, files: [ { - attachment: './tmp/img/' + user1.id + user2.id + '.png', + attachment: `./tmp/img/${user1.id}-${user2.id}.png`, name: 'file.jpg' } ] From baa5df3035de8630ae6d88109e9a9fdf5ad62b14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Tue, 24 Nov 2020 19:52:13 -0300 Subject: [PATCH 119/164] Adding AGPL required text --- .dockerignore | 3 ++- .eslintignore | 3 ++- .gitignore | 3 ++- src/Commands/badges.js | 18 ++++++++++++++++++ src/Commands/maintenance.js | 18 ++++++++++++++++++ src/Utils/GetSystemData.js | 18 ++++++++++++++++++ src/Utils/date.js | 18 ++++++++++++++++++ src/sharding.js | 1 + 8 files changed, 79 insertions(+), 3 deletions(-) diff --git a/.dockerignore b/.dockerignore index 957f6ab..2cb9d64 100644 --- a/.dockerignore +++ b/.dockerignore @@ -5,4 +5,5 @@ Dockerfile README.md LICENSE .eslintrc.json -.eslintignore \ No newline at end of file +.eslintignore +tmp/ \ No newline at end of file diff --git a/.eslintignore b/.eslintignore index 0d81a1a..05e23b4 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,2 +1,3 @@ .Config -Config/ \ No newline at end of file +Config/ +tmp/ \ No newline at end of file diff --git a/.gitignore b/.gitignore index 3690b00..811c73d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ Configs/ node_modules/ -.vscode/ \ No newline at end of file +.vscode/ +tmp/ \ No newline at end of file diff --git a/src/Commands/badges.js b/src/Commands/badges.js index d0c93ea..a31eb0f 100644 --- a/src/Commands/badges.js +++ b/src/Commands/badges.js @@ -1,4 +1,22 @@ /* eslint-disable no-unused-vars */ +/* + This File is part of ArunaBot + Copyright (C) LoboMetalurgico (and contributors) 2019-2020 + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + const Discord = require('discord.js'); const { database, config } = require('../../Configs'); const { premium } = require('../Utils/emojis'); diff --git a/src/Commands/maintenance.js b/src/Commands/maintenance.js index c535ee5..e42f0e1 100644 --- a/src/Commands/maintenance.js +++ b/src/Commands/maintenance.js @@ -1,4 +1,22 @@ /* eslint-disable no-unused-vars */ +/* + This File is part of ArunaBot + Copyright (C) LoboMetalurgico (and contributors) 2019-2020 + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + const Discord = require('discord.js'); const { database, config } = require('../../Configs'); diff --git a/src/Utils/GetSystemData.js b/src/Utils/GetSystemData.js index ef0d568..8bf1b50 100644 --- a/src/Utils/GetSystemData.js +++ b/src/Utils/GetSystemData.js @@ -1,3 +1,21 @@ +/* + This File is part of ArunaBot + Copyright (C) LoboMetalurgico (and contributors) 2019-2020 + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + const si = require('systeminformation'); module.exports = { diff --git a/src/Utils/date.js b/src/Utils/date.js index ce05b16..d87e992 100644 --- a/src/Utils/date.js +++ b/src/Utils/date.js @@ -1,4 +1,22 @@ /* eslint-disable max-len */ +/* + This File is part of ArunaBot + Copyright (C) LoboMetalurgico (and contributors) 2019-2020 + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + var dateFormat = require('dateformat'); dateFormat.i18n = { dayNames: [ diff --git a/src/sharding.js b/src/sharding.js index 7d4c574..41c72ea 100644 --- a/src/sharding.js +++ b/src/sharding.js @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ + const Discord = require('discord.js'); const chalk = require('chalk'); const { config } = require('../Configs'); From 84e059c27c1efdd3903c3479e055ea8074625eb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Tue, 24 Nov 2020 20:16:19 -0300 Subject: [PATCH 120/164] Help Command Localization --- languages | 2 +- src/Commands/help.js | 44 +++++++++++++++++++++++--------------------- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/languages b/languages index 74450b2..cccb16d 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 74450b26601e2ff434937d33f70cab7e3538db9e +Subproject commit cccb16d9c53351a514949f37f91af0ab351d26b9 diff --git a/src/Commands/help.js b/src/Commands/help.js index 3582b70..c928bad 100644 --- a/src/Commands/help.js +++ b/src/Commands/help.js @@ -18,27 +18,29 @@ */ const Discord = require('discord.js'); -const { database } = require('../../Configs'); +const { config, database } = require('../../Configs'); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); const { emoji } = require('../Utils'); -exports.run = async (aruna, message) => { +exports.run = async (aruna, message, args, langc) => { + + if (langc) { + language = langc; + } + const embed = new Discord.RichEmbed(message.author); - const error1 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) + const error = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) .setColor([255, 0, 0]) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription( - 'Verifique se tenho permissão para lhe enviar mensagens no privado pois, é por lá que envio os comandos.' - ) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.help.embed.error.description) .setTimestamp(); - const sucesso = new Discord.RichEmbed() + const sucess = new Discord.RichEmbed() .setColor([0, 255, 0]) - .setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL) - .setFooter('Comandos Enviados') - .setDescription( - 'Os comandos foram enviados em seu privado com sucesso!' - ) + .setAuthor(language.generic.embed.sucess.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.footer.replace('[usertag]', message.author.tag)) + .setDescription(language.help.embed.sucess.description) .setTimestamp(); const guildDB = await database.Guilds.findOne({ _id: message.guild.id }); @@ -84,20 +86,20 @@ exports.run = async (aruna, message) => { embed.setColor('#004080'); embed.setAuthor(aruna.user.username, aruna.user.displayAvatarURL); - embed.setFooter(`Comando Solicitado por ${message.author.username}#${message.author.discriminator}`, message.author.avatarURL); + embed.setFooter(language.generic.embed.footer.replace('[usertag]', message.author.tag), message.author.avatarURL); embed.setTimestamp(); - message.channel.send(sucesso).then(msg => { - message.author.send(embed).catch(err => { - console.log(err); - msg.edit(error1); - }); + message.author.send(embed).then(() => { + message.channel.send(sucess); + }).catch(() => { + message.channel.send(error); }); }; exports.config = { name: 'help', - aliases: ['ajuda', 'comandos', 'commands'], + aliases: ['ajuda', 'comandos', 'commands', 'comando', 'command'], category: `${emoji.robot} Utilidades`, + description: language.help.config.description, public: true }; From 60e0bf028630324143d54fb14cb8d0949f5de606 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Tue, 24 Nov 2020 20:57:04 -0300 Subject: [PATCH 121/164] Adding Language Change option into Config Command --- .Configs/general.js | 1 + languages | 2 +- src/Commands/config.js | 86 ++++++++++++++++++++++++++++++++++++++---- 3 files changed, 80 insertions(+), 9 deletions(-) diff --git a/.Configs/general.js b/.Configs/general.js index 98d5233..f7cb877 100644 --- a/.Configs/general.js +++ b/.Configs/general.js @@ -23,6 +23,7 @@ module.exports = { mongoose: '', superUsersId: ['281515925960654848'], // Your User ID Comes Here! noFakeId: ['187915892384858112', '281515925960654848'], + validLanguages: ['br', 'us', 'es'], // DON'T CHANGE THIS IF YOU DON'T KNOW WHAT ARE YOU DOING! language: 'br', // Console Language defaultLanguage: 'us', // Bot Language sharding: { diff --git a/languages b/languages index cccb16d..c962086 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit cccb16d9c53351a514949f37f91af0ab351d26b9 +Subproject commit c962086b3c32e7c5ec3bf6bfa7cf9923b0b528cd diff --git a/src/Commands/config.js b/src/Commands/config.js index 9e06fee..6b563b7 100644 --- a/src/Commands/config.js +++ b/src/Commands/config.js @@ -21,7 +21,8 @@ const { config, database } = require('../../Configs'); var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); const Discord = require('discord.js'); -var options = ['rank', 'autorole', 'prefix']; +var options = ['rank', 'autorole', 'prefix', 'language', 'idioma']; +var userOptions = ['language', 'idioma']; exports.run = async (aruna, message, args, langc) => { @@ -37,7 +38,7 @@ exports.run = async (aruna, message, args, langc) => { const error1 = new Discord.RichEmbed() .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) - .setDescription(language.config.embed.error.description1.replace('[OPTIONS]', options)) + .setDescription(language.config.embed.error.description1.replace('[OPTIONS]', options.join(', '))) .setTimestamp(); const error2 = new Discord.RichEmbed() .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) @@ -49,12 +50,12 @@ exports.run = async (aruna, message, args, langc) => { const user = await database.Users.findOne({ _id: message.author.id }); - if (!message.member.hasPermission('MANAGE_GUILD')) + if (!message.member.hasPermission('MANAGE_GUILD') && (!args || !args[0] || !userOptions.includes(args[0].toLowerCase()))) return message.channel.send(noPermission); if (!args || !args[0]) return message.channel.send(error1); - if (!options.includes(args[0].toLowerCase())) { + if (!options.includes(args[0].toLowerCase()) || !userOptions.includes(args[0].toLowerCase())) { return message.channel.send(error1); } @@ -65,6 +66,10 @@ exports.run = async (aruna, message, args, langc) => { case 'rank': rankVar(args[1] || null); break; + case 'language': + case 'idioma': + languageVar(args[1] || null); + break; default: return message.channel.send(error1); } @@ -92,13 +97,13 @@ exports.run = async (aruna, message, args, langc) => { const prefixRemove = new Discord.RichEmbed() .setColor([0, 255, 0]) .setAuthor(language.generic.embed.sucess.title.replace('[username]', message.member.displayName), message.author.avatarURL) - .setFooter(language.generic.embed.sucess.footer.replace('[username]', message.member.displayName)) + .setFooter(language.generic.embed.sucess.footer2.replace('[username]', message.member.displayName)) .setDescription(language.config.embed.sucess.prefix.description1.replace('[prefix]', config.prefix)) .setTimestamp(); const prefixDefinido = new Discord.RichEmbed() .setColor([0, 255, 0]) .setAuthor(language.generic.embed.sucess.title.replace('[username]', message.member.displayName), message.author.avatarURL) - .setFooter(language.generic.embed.sucess.footer.replace('[username]', message.member.displayName)) + .setFooter(language.generic.embed.sucess.footer2.replace('[username]', message.member.displayName)) .setDescription(language.config.embed.sucess.prefix.description1.replace('[prefix]', args[2] || undefined)) .setTimestamp(); @@ -170,6 +175,71 @@ exports.run = async (aruna, message, args, langc) => { } } + async function languageVar (sLanguage) { + const validLanguages = config.validLanguages; + const actionList = ['user', 'guild']; + + const invalidLanguage = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.config.embed.error.language.description1.replace('[LANGUAGES]', validLanguages.join(', '))) + .setTimestamp(); + + if (!sLanguage || !validLanguages.includes(sLanguage)) return message.channel.send(invalidLanguage); + + if (!args[2] || !actionList.includes(args[2])) return invalidAction(actionList); + + if (args[2] === 'guild' && !message.member.hasPermission('MANAGE_GUILD')) return message.channel.send(noPermission); + + const setGuildLanguage = new Discord.RichEmbed() + .setAuthor(language.generic.embed.sucess.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.sucess.footer2.replace('[username]', message.member.displayName)) + .setDescription(language.config.embed.sucess.language.description1.replace('[LANGUAGE]', args[2])) + .setTimestamp(); + + const errorGuildLanguage = new Discord.RichEmbed() + .setAuthor(language.generic.embed.sucess.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.sucess.footer2.replace('[username]', message.member.displayName)) + .setDescription(language.config.embed.error.language.description2) + .setTimestamp(); + + const setUserLanguage = new Discord.RichEmbed() + .setAuthor(language.generic.embed.sucess.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.sucess.footer2.replace('[username]', message.member.displayName)) + .setDescription(language.config.embed.sucess.language.description2.replace('[LANGUAGE]', args[2])) + .setTimestamp(); + + const errorUserLanguage = new Discord.RichEmbed() + .setAuthor(language.generic.embed.sucess.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.sucess.footer2.replace('[username]', message.member.displayName)) + .setDescription(language.config.embed.error.language.description3) + .setTimestamp(); + + switch (args[2]) { + case 'guild': + if (guild.language === args[2]) return message.channel.send(errorGuildLanguage); + + guild.language = args[2]; + + await guild.save(); + + message.channel.send(setGuildLanguage); + break; + case 'user': + if (user.language === args[2]) return message.channel.send(errorUserLanguage); + + user.language = args[2]; + + await user.save(); + + message.channel.send(setUserLanguage); + break; + default: + invalidAction(actionList); + break; + } + } + async function isEnabled (command, sendMessage) { const dbCommand = await database.Commands.findOne({ _id: `${command}` }); @@ -200,11 +270,11 @@ exports.run = async (aruna, message, args, langc) => { } } - function invalidAction (options) { + function invalidAction (optionL) { const optionError = new Discord.RichEmbed() .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) - .setDescription(language.config.embed.error.invalidaction.replace('[OPTIONS]', options)) + .setDescription(language.config.embed.error.invalidaction.replace('[OPTIONS]', optionL.join(', '))) .setTimestamp(); return message.channel.send(optionError); } From d14179543c12a9f860a83e0fe6d2e5ae980ebc45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Tue, 24 Nov 2020 21:12:13 -0300 Subject: [PATCH 122/164] Fix config - language bug --- .Configs/general.js | 4 ++-- src/Commands/config.js | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.Configs/general.js b/.Configs/general.js index f7cb877..d604409 100644 --- a/.Configs/general.js +++ b/.Configs/general.js @@ -23,9 +23,9 @@ module.exports = { mongoose: '', superUsersId: ['281515925960654848'], // Your User ID Comes Here! noFakeId: ['187915892384858112', '281515925960654848'], - validLanguages: ['br', 'us', 'es'], // DON'T CHANGE THIS IF YOU DON'T KNOW WHAT ARE YOU DOING! + validLanguages: ['br', 'en', 'es'], // DON'T CHANGE THIS IF YOU DON'T KNOW WHAT ARE YOU DOING! language: 'br', // Console Language - defaultLanguage: 'us', // Bot Language + defaultLanguage: 'en', // Bot Language sharding: { totalShards: 'auto', delay: 7500 diff --git a/src/Commands/config.js b/src/Commands/config.js index 6b563b7..93c28ad 100644 --- a/src/Commands/config.js +++ b/src/Commands/config.js @@ -175,7 +175,7 @@ exports.run = async (aruna, message, args, langc) => { } } - async function languageVar (sLanguage) { + async function languageVar (type) { const validLanguages = config.validLanguages; const actionList = ['user', 'guild']; @@ -184,12 +184,12 @@ exports.run = async (aruna, message, args, langc) => { .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) .setDescription(language.config.embed.error.language.description1.replace('[LANGUAGES]', validLanguages.join(', '))) .setTimestamp(); - - if (!sLanguage || !validLanguages.includes(sLanguage)) return message.channel.send(invalidLanguage); - - if (!args[2] || !actionList.includes(args[2])) return invalidAction(actionList); - - if (args[2] === 'guild' && !message.member.hasPermission('MANAGE_GUILD')) return message.channel.send(noPermission); + + if (!type || !actionList.includes(type)) return invalidAction(actionList); + + if (type === 'guild' && !message.member.hasPermission('MANAGE_GUILD')) return message.channel.send(noPermission); + + if (!args[2] || !validLanguages.includes(args[2])) return message.channel.send(invalidLanguage); const setGuildLanguage = new Discord.RichEmbed() .setAuthor(language.generic.embed.sucess.title.replace('[username]', message.member.displayName), message.author.avatarURL) @@ -215,7 +215,7 @@ exports.run = async (aruna, message, args, langc) => { .setDescription(language.config.embed.error.language.description3) .setTimestamp(); - switch (args[2]) { + switch (args[1]) { case 'guild': if (guild.language === args[2]) return message.channel.send(errorGuildLanguage); From 024247efc053df0049a3e381f0ffdeef4700a83c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 29 Nov 2020 20:18:36 -0300 Subject: [PATCH 123/164] Localize Kick Command --- languages | 2 +- src/Commands/kick.js | 80 ++++++++++++++++++++++++-------------------- 2 files changed, 44 insertions(+), 38 deletions(-) diff --git a/languages b/languages index c962086..6520046 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit c962086b3c32e7c5ec3bf6bfa7cf9923b0b528cd +Subproject commit 652004633dd74b4912bca464d71615f49a66e4cf diff --git a/src/Commands/kick.js b/src/Commands/kick.js index 7e93dc7..2c7aada 100644 --- a/src/Commands/kick.js +++ b/src/Commands/kick.js @@ -18,29 +18,34 @@ */ const Discord = require('discord.js'); +const { config } = require('../../Configs'); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); // eslint-disable-next-line no-unused-vars const { date } = require('../Utils'); const dateFormat = require('dateformat'); const now = new Date(); exports.run = async (aruna, message, args, langc, prefix, command) => { - + if (langc) { + language = langc; + } + const error1 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Você não possui a permissão de `Expulsar Membros`!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.kick.embed.error.description1.replace('[kickMembers]', language.generic.permissions.kickMembers)) .setTimestamp(); const error2 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Eu não possuo a permissão de `Expulsar Membros`!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.kick.embed.error.description2.replace('[kickMembers]', language.generic.permissions.kickMembers)) .setTimestamp(); const error3 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Você deve inserir um usuário para ser punido!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.kick.embed.error.description3) .setTimestamp(); if (!args[0] || isNaN(args[0]) && (!args[0].includes('<@') || !args[0].includes('>'))) return message.channel.send(error3); @@ -50,27 +55,27 @@ exports.run = async (aruna, message, args, langc, prefix, command) => { if (!kuser) return message.channel.send(error3); const error4 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription(`Você não pode banir ${kuser.username} pois este é o(a) dono(a) do servidor!`) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.kick.embed.error.description4.replace('[ownerName]', kuser.username)) .setTimestamp(); const error5 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription(`Você não pode banir este usuário pois seu cargo é igual ou inferior ao de ${kuser.username}.`) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.kick.embed.error.description5.replace('[username]', kuser.username)) .setTimestamp(); const error6 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription(`Eu não posso banir este usuário pois meu cargo é igual ou inferior ao de ${kuser.username}`) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.kick.embed.error.description6.replace('[username]', kuser.username)) .setTimestamp(); - + const error7 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription(`Infelizmente não sei informar qual o erro. Sinto muito ${message.author.username} :(`) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.generic.embed.error.description) .setTimestamp(); if (!message.member.hasPermission('KICK_MEMBERS')) @@ -102,32 +107,33 @@ exports.run = async (aruna, message, args, langc, prefix, command) => { } if (!reason) { - reason = `Punido por: ${message.author.username}`; + reason = language.kick.reason['1'].replace('[username]', message.author.username); } else { - reason = - `Punido por: ${message.author.username} com o Motivo: ${reason}`; + reason = language.kick.reason['2'].replace('[username]', message.author.username).replace('[reason]', reason); } const embed = new Discord.RichEmbed() - .setAuthor('Expulsão Efetuada com Sucesso!') - .setDescription(`Expulsão efetuada por ${message.author.username}`) - .addField('Usuário Expulso: ', `${kuser} id ${kuser.id}`, false) - .addField('Expulso por: ', `<@${message.author.id}>`, false) - .addField('Data de Expulsão: ', dateFormat(now, 'dd/mm/yyyy "às" HH:MM:ss'), false) - .addField('Motivo: ', `${reason}`, false) + .setAuthor(language.kick.embed.sucess.title) + .setDescription(language.kick.embed.sucess.description.replace('[username]', kuser.username)) + .addField(language.kick.embed.sucess.field1.title, language.kick.embed.sucess.field1.content.replace('[username]', kuser.username).replace('[userId]', kuser.id), false) + .addField(language.kick.embed.sucess.field2, message.author, false) + .addField(language.kick.embed.sucess.field3, dateFormat(now, 'dd/mm/yyyy "às" HH:MM:ss'), false) // Localize the date + .addField(language.kick.embed.sucess.field4, reason, false) .setTimestamp(); - message.channel.send(embed).then(async msg => { - await message.guild.ban(kuser, reason).catch(err => { - console.log(err); - msg.edit(error7); - }); + + message.guild.member(kuser).kick(reason).catch(err => { + console.log(err); + message.channel.send(error7); + }).then(() => { + message.channel.send(embed); }); }; exports.config = { name: 'kickar', aliases: ['kick', 'expulsar'], + description: language.kick.config.description, category: '👮‍♂️ Moderação', public: true }; \ No newline at end of file From 394f75c87b95f36d57edab3c559c8965f32a1d96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 29 Nov 2020 20:20:58 -0300 Subject: [PATCH 124/164] Increment Ban Command --- src/Commands/ban.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Commands/ban.js b/src/Commands/ban.js index 2bc8f4b..2474967 100644 --- a/src/Commands/ban.js +++ b/src/Commands/ban.js @@ -134,11 +134,11 @@ exports.run = async (aruna, message, args, langc, prefix, command) => { .addField(language.ban.embed.sucess.field4, reason, false) .setTimestamp(); - message.channel.send(embed).then(async msg => { - await message.guild.ban(buser, reason).catch(err => { - console.log(err); - msg.edit(error7); - }); + message.guild.ban(buser, reason).catch(err => { + console.log(err); + message.channel.send(error7); + }).then(() => { + message.channel.send(embed); }); }; From e7ab285e2d631e8c093f145c33b192612c7636a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 29 Nov 2020 23:47:41 -0300 Subject: [PATCH 125/164] Optimizing Code --- src/Commands/badges.js | 13 +----- src/Commands/eval.js | 92 +++++++++++++++++-------------------- src/Commands/maintenance.js | 8 ---- 3 files changed, 42 insertions(+), 71 deletions(-) diff --git a/src/Commands/badges.js b/src/Commands/badges.js index a31eb0f..e501771 100644 --- a/src/Commands/badges.js +++ b/src/Commands/badges.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ /* This File is part of ArunaBot Copyright (C) LoboMetalurgico (and contributors) 2019-2020 @@ -18,17 +17,11 @@ */ const Discord = require('discord.js'); -const { database, config } = require('../../Configs'); -const { premium } = require('../Utils/emojis'); +const { database } = require('../../Configs'); exports.run = async (aruna, message, args) => { - const user = await database.Users.findOne({ _id: message.author.id }); const guild = await database.Guilds.findOne({ _id: message.guild.id }); - const errored = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setDescription('Você não tem permissão para executar esse comando!') - .setFooter(`Algo deu errado, ${message.author.username}`); const error1 = new Discord.RichEmbed() .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) .setFooter(`Algo deu errado, ${message.author.username}`) @@ -79,8 +72,6 @@ exports.run = async (aruna, message, args) => { .setFooter(`Algo deu errado, ${message.author.username}`) .setDescription('Opção Inválida! Use apenas `partner`, `vip` ou `partner+` como argumento secundário!') .setTimestamp(); - - if (user.SUPER !== true) return message.channel.send(errored); if (!args[0]) { return message.channel.send(error10); @@ -168,8 +159,6 @@ exports.run = async (aruna, message, args) => { } } else return message.channel.send(error8); } else return message.channel.send(error8); - - }; exports.config = { diff --git a/src/Commands/eval.js b/src/Commands/eval.js index ad365a8..9af64d3 100644 --- a/src/Commands/eval.js +++ b/src/Commands/eval.js @@ -1,3 +1,4 @@ +/* eslint-disable no-unused-vars */ /* This File is part of ArunaBot Copyright (C) LoboMetalurgico (and contributors) 2019-2020 @@ -19,61 +20,50 @@ const Discord = require('discord.js'); const { database, config } = require('../../Configs'); -exports.run = (aruna, message, args) => { - database.Users.findOne({ _id: message.author.id }, function(erro, user) { - - const errored = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setDescription('Você não tem permissão para executar esse comando!') - .setFooter(`Algo deu errado, ${message.author.username}`); - - if (user.SUPER !== true) return message.channel.send(errored); - const util = require('util'); - const code = args.join(' '); - const embed = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setDescription('Você precisa digitar um código!') - .setFooter(`Algo deu errado, ${message.author.username}`); - if (!code) return message.channel.send(embed); +exports.run = async (aruna, message, args, langc, prefix, comando) => { + const util = require('util'); + const code = args.join(' '); + const embed = new Discord.RichEmbed() + .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) + .setDescription('Você precisa digitar um código!') + .setFooter(`Algo deu errado, ${message.author.username}`); + if (!code) return message.channel.send(embed); - try { - - var str; - // eslint-disable-next-line max-len - if (code.includes(`${aruna.token}` || `${process.env.TOKEN}` || `${config.token}` || 'aruna.token' || 'process.env.token' || 'config.token')) { - str = 'Erro! Você não pode exibir esta informação!'; - } else { - const ev = eval(code); - str = util.inspect(ev, { depth: 1 }); - str = `${str.replace( - new RegExp(`${aruna.token}|${process.env.TOKEN}|${config.token}`, 'g'), - 'Erro! Você não pode exibir esta informação!' - )}`; - } + try { - if (str.length > 1800) { - str = str.substr(0, 1800); - str = str + '...'; - } + var str; + // eslint-disable-next-line max-len + if (code.includes(`${aruna.token}` || `${process.env.TOKEN}` || `${config.token}` || 'aruna.token' || 'process.env.token' || 'config.token')) { + str = 'Erro! Você não pode exibir esta informação!'; + } else { + const ev = await eval(code); + str = util.inspect(ev, { depth: 1 }); + str = `${str.replace( + new RegExp(`${aruna.token}|${process.env.TOKEN}|${config.token}`, 'g'), + 'Erro! Você não pode exibir esta informação!' + )}`; + } - const embed = new Discord.RichEmbed() - .setAuthor('Console') - .addField( - '(<:uploaduisvgrepocom:637027335173832727>) Entrada', - `\`\`\`js\n${code}\`\`\`` - ) - .addField( - '(<:developmentsvgrepocom:637027334553337896>) Saida', - `\`\`\`js\n${str}\`\`\`` - ) - .setColor([54, 57, 63]); - message.channel.send(embed); - } catch (err) { - message.channel.send(err.stack, { code: 'js' }); + if (str.length > 1800) { + str = str.substr(0, 1800); + str = str + '...'; } - }).catch(e => { - console.log(e); - }); + + const embed = new Discord.RichEmbed() + .setAuthor('Console') + .addField( + '(<:uploaduisvgrepocom:637027335173832727>) Entrada', + `\`\`\`js\n${code}\`\`\`` + ) + .addField( + '(<:developmentsvgrepocom:637027334553337896>) Saida', + `\`\`\`js\n${str}\`\`\`` + ) + .setColor([54, 57, 63]); + message.channel.send(embed); + } catch (err) { + message.channel.send(err.stack, { code: 'js' }); + } }; exports.config = { diff --git a/src/Commands/maintenance.js b/src/Commands/maintenance.js index e42f0e1..477bbc6 100644 --- a/src/Commands/maintenance.js +++ b/src/Commands/maintenance.js @@ -21,14 +21,6 @@ const Discord = require('discord.js'); const { database, config } = require('../../Configs'); exports.run = (aruna, message, args) => { - const user = database.Users.findOne({ _id: message.author.id }); - - const errored = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setDescription('Você não tem permissão para executar esse comando!') - .setFooter(`Algo deu errado, ${message.author.username}`); - - if (user.SUPER !== true) return message.channel.send(errored); }; exports.config = { From 6810952d3e0d85f498af03b6f8be0ce074ac68ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 30 Nov 2020 11:32:45 -0300 Subject: [PATCH 126/164] Removing Unecessary await's --- src/Events/guildCreate.js | 2 +- src/Events/guildMemberAdd.js | 2 +- src/Events/message.js | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Events/guildCreate.js b/src/Events/guildCreate.js index 305d9cf..da59d74 100644 --- a/src/Events/guildCreate.js +++ b/src/Events/guildCreate.js @@ -27,7 +27,7 @@ exports.run = async (aruna, guild) => { } else { language = config.defaultLanguage; } - var saveG = await new database.Guilds({ _id: guild.id, language: language }); + var saveG = new database.Guilds({ _id: guild.id, language: language }); await saveG.save(); console.log(lang.guild.create.replace('[guildName]', guild.name)); }; diff --git a/src/Events/guildMemberAdd.js b/src/Events/guildMemberAdd.js index fe1b286..811a6d8 100644 --- a/src/Events/guildMemberAdd.js +++ b/src/Events/guildMemberAdd.js @@ -69,7 +69,7 @@ exports.run = async (aruna, member) => { } if (!user) { - var saveU = await new database.Users({ _id: member.user.id }); + var saveU = new database.Users({ _id: member.user.id }); await saveU.save(); console.log(lang.memberAdd.db); } diff --git a/src/Events/message.js b/src/Events/message.js index dbbbb9f..4eddf51 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -51,7 +51,7 @@ exports.run = async (aruna, message) => { language = config.defaultLanguage; } debug('No Server!'); - var saveG = await new database.Guilds({ + var saveG = new database.Guilds({ _id: message.guild.id, language: language }); @@ -65,7 +65,7 @@ exports.run = async (aruna, message) => { if (config.superUsersId.includes(message.author.id)) { isSuper = true; } - var saveU = await new database.Users({ _id: message.author.id, SUPER: isSuper }); + var saveU = new database.Users({ _id: message.author.id, SUPER: isSuper }); await saveU.save(); user = await database.Users.findOne({ _id: message.author.id }); } From 9ff4b34ab050995606824a168417ac16a306bacf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 30 Nov 2020 11:35:03 -0300 Subject: [PATCH 127/164] old code remove --- src/main.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main.js b/src/main.js index a235279..82dd494 100644 --- a/src/main.js +++ b/src/main.js @@ -17,8 +17,6 @@ along with this program. If not, see . */ -require('events').EventEmitter.defaultMaxListeners = 999; - const Discord = require('discord.js'); const fs = require('fs'); const { config, database } = require('../Configs'); From 992be075d351d236197b4d5334e1f1a3a88153c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 30 Nov 2020 13:39:29 -0300 Subject: [PATCH 128/164] Dice command localization --- languages | 2 +- src/Commands/dice.js | 92 ++++++++++++++++++++------------------------ 2 files changed, 43 insertions(+), 51 deletions(-) diff --git a/languages b/languages index 6520046..0f4b93c 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 652004633dd74b4912bca464d71615f49a66e4cf +Subproject commit 0f4b93cfebc0d12c9fc0e136a6856f5f92bfadb0 diff --git a/src/Commands/dice.js b/src/Commands/dice.js index 5094218..a4bed2b 100644 --- a/src/Commands/dice.js +++ b/src/Commands/dice.js @@ -17,56 +17,61 @@ */ const Discord = require('discord.js'); +const { config } = require('../../Configs'); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); -exports.run = async (aruna, message, args) => { +exports.run = async (aruna, message, args, langc, prefix, comando) => { + if (langc) { + language = langc; + } const error1 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Você deve inserir o tipo do dado que devo girar!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.dice.embed.error.description1) .setTimestamp(); const error2 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Só aceito até d100.') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.dice.embed.error.description2) .setTimestamp(); const error3 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Essa quantidade de dados é absurda!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.dice.embed.error.description3) .setTimestamp(); const error4 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Acho que esse número nem existe!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.dice.embed.error.description4) .setTimestamp(); const error5 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Insira algo como 1d6 por favor') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.dice.embed.error.description5) .setTimestamp(); const error6 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Todos sabemos que o resultado do d0 é 0!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.dice.embed.error.description6) .setTimestamp(); const error7 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('0 não é uma quantidade de dados que se possa girar!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.dice.embed.error.description7) .setTimestamp(); if (!args[0]) return message.channel.send(error5); const split = message.content - .slice(5) + .slice(comando.length + prefix.length) .trim() - .split('d' || 'D'); + .split('d' || 'D' || ' '); if (!split) return message.channel.send(error5); @@ -86,15 +91,12 @@ exports.run = async (aruna, message, args) => { if (number == 0) return message.channel.send(error7); - var diceStr = ''; - - if (number == 1) diceStr = 'dado'; - else diceStr = 'dados'; + var diceStr = number == 1 ? language.dice.embed.generic.dice : language.dice.embed.generic.dices; const error8 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription(`Todos sabemos que o resultado de ${number} ${diceStr} de 1 lado é ${number}!`) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.dice.embed.error.description8.replace(/\[NUMBER\]/g, number).replace('[diceString]', diceStr)) .setTimestamp(); if (dice == 1) return message.channel.send(error8); @@ -102,30 +104,19 @@ exports.run = async (aruna, message, args) => { var result = []; var loop = number; - var embed = ''; + var embed = new Discord.RichEmbed() + .setFooter(language.generic.embed.footer.replace('[usertag]', message.author.tag)) + .setTimestamp(); var idVar = setInterval(() => { if (loop <= 0) { - if (number > 1) { - - embed = new Discord.RichEmbed() - .setAuthor( - `Resultado dos ${number} dados de ${dice} lados girados por ${message.author.username}`, - message.author.avatarURL - ) - .setDescription(`\`${result}\``) - .setFooter(`Dados de ${message.author.username}`) - .setTimestamp(); + embed.setAuthor(language.dice.embed.sucess['1'].title.replace('[username]', message.member.displayName).replace('[NUMBER]', number).replace('[DICE]', dice), + message.author.avatarURL) + .setDescription(language.dice.embed.sucess['1'].description.replace('[DICES]', result.join(', ')).replace('[TOTAL]', result.reduce((a, b) => a + b))); } else { - embed = new Discord.RichEmbed() - .setAuthor( - `Resultado do dado de ${dice} lados girado por ${message.author.username}`, - message.author.avatarURL - ) - .setDescription(`\`${result[0]}\``) - .setFooter(`Dados de ${message.author.username}`) - .setTimestamp(); + embed.setAuthor(language.dice.embed.sucess['2'].title.replace('[username]', message.member.displayName).replace('[DICE]', dice), message.author.avatarURL) + .setDescription(language.dice.embed.sucess['2'].description.replace('[DICES]', result[0])); } clearInterval(idVar); return message.channel.send(embed); @@ -146,6 +137,7 @@ exports.run = async (aruna, message, args) => { exports.config = { name: 'dice', aliases: ['dado'], + description: language.dice.config.description, category: '🎉 Entretenimento', public: true }; From f25410f1bd86033940afa54a9f612e10ee5c4989 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 30 Nov 2020 16:17:27 -0300 Subject: [PATCH 129/164] Add contributors Info --- .dockerignore | 34 ++++++++++++++++++++++++++-------- Dockerfile | 22 +++++++--------------- docker-compose.debug.yml | 13 +++++++++++++ docker-compose.yml | 10 ++++++++++ package.json | 12 +++++++++++- src/Commands/bot.js | 4 +++- 6 files changed, 70 insertions(+), 25 deletions(-) create mode 100644 docker-compose.debug.yml create mode 100644 docker-compose.yml diff --git a/.dockerignore b/.dockerignore index 2cb9d64..26b3349 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,9 +1,27 @@ -.Configs/ -node_modules/ -.vscode/ -Dockerfile +**/.classpath +**/.dockerignore +**/.env +**/.eslintrc.json +**/.eslintignore +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/azds.yaml +**/charts +**/docker-compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +**/tmp README.md -LICENSE -.eslintrc.json -.eslintignore -tmp/ \ No newline at end of file +LICENSE \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 8f4fec6..5136382 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,17 +1,9 @@ -# Set node version FROM node:12.16.2 - -# Copy the source -WORKDIR /src -COPY ./ /src - LABEL maintainer="Lobo Metalúrgico " - -# Update the language submodule -RUN if [ -z "$(ls -A /src/languages)" ]; then git submodule update --init; fi - -# Install Packages -RUN npm install - -# Start bot -CMD ["npm", "start"] \ No newline at end of file +ENV NODE_ENV=production +WORKDIR /usr/src/app +COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"] +RUN npm install --production --silent && mv node_modules ../ +COPY . . +RUN git clone https://github.com/ArunaBot/ArunaLanguages.git languages +CMD ["npm", "start"] diff --git a/docker-compose.debug.yml b/docker-compose.debug.yml new file mode 100644 index 0000000..364b558 --- /dev/null +++ b/docker-compose.debug.yml @@ -0,0 +1,13 @@ +version: '3.4' + +services: + arunabot: + image: arunabot + build: + context: . + dockerfile: ./Dockerfile + environment: + NODE_ENV: development + ports: + - 9229:9229 + command: ["node", "--inspect=0.0.0.0:9229", "src/main.js"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..b26eaff --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,10 @@ +version: '3.4' + +services: + arunabot: + image: arunabot + build: + context: . + dockerfile: ./Dockerfile + environment: + NODE_ENV: production diff --git a/package.json b/package.json index af7558a..3b691ac 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,17 @@ "type": "git", "url": "https://github.com/ArunaBot/Aruna.git" }, - "author": "Lobo Metalurgico", + "author": { + "name": "Lobo Metalurgico", + "email": "contato@lobometalurgico.tk", + "url": "https://youtube.com/LoboMetalurgico" + }, + "contributors": [ + { + "name": "Kira's Art", + "url": "https://twitter.com/kiratokioArt/" + } + ], "license": "AGPL-3.0", "dependencies": { "@discordjs/opus": "^0.3.2", diff --git a/src/Commands/bot.js b/src/Commands/bot.js index 573bef5..8e9f1be 100644 --- a/src/Commands/bot.js +++ b/src/Commands/bot.js @@ -120,7 +120,9 @@ exports.run = async (aruna, message) => { Processador: ${cpu.manufacturer} ${cpu.brand}\n Núcleos do Processador: ${cpu.cores}\n Uso de Ram: ${ram}mb / ${ramT}mb`) - .addField('Criada Por', `${process.env['npm_package_author_name']} (<@${config.superUsersId[0]}>)`) + .addField('Criada e Desenvolvida Por', 'Lobo Metalurgico (<@281515925960654848>)\n\nContato: https://youtube.com/LoboMetalurgico | contato@lobometalurgico.tk') + .addField('Idealizada Por', 'Carson (<@773670346921476166>') + .addField('Avatar Por', 'Kira\'s Art (<@207023257512181760>)\n\nContato: https://twitter.com/kiratokioArt/') .setFooter(`Informações Solicitadas por ${message.author.tag}`, message.author.avatarURL) .setTimestamp(); From c9642d9660e2f69e839bea2fb0b1ab3b71df3e04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 30 Nov 2020 16:20:06 -0300 Subject: [PATCH 130/164] () --- src/Commands/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Commands/bot.js b/src/Commands/bot.js index 8e9f1be..19ea328 100644 --- a/src/Commands/bot.js +++ b/src/Commands/bot.js @@ -121,7 +121,7 @@ exports.run = async (aruna, message) => { Núcleos do Processador: ${cpu.cores}\n Uso de Ram: ${ram}mb / ${ramT}mb`) .addField('Criada e Desenvolvida Por', 'Lobo Metalurgico (<@281515925960654848>)\n\nContato: https://youtube.com/LoboMetalurgico | contato@lobometalurgico.tk') - .addField('Idealizada Por', 'Carson (<@773670346921476166>') + .addField('Idealizada Por', 'Carson (<@773670346921476166>)') .addField('Avatar Por', 'Kira\'s Art (<@207023257512181760>)\n\nContato: https://twitter.com/kiratokioArt/') .setFooter(`Informações Solicitadas por ${message.author.tag}`, message.author.avatarURL) .setTimestamp(); From 344e1406db80ee951c441c4647ec5d806b8ec3d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 30 Nov 2020 16:20:39 -0300 Subject: [PATCH 131/164] / --- src/Commands/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Commands/bot.js b/src/Commands/bot.js index 19ea328..74efe1c 100644 --- a/src/Commands/bot.js +++ b/src/Commands/bot.js @@ -122,7 +122,7 @@ exports.run = async (aruna, message) => { Uso de Ram: ${ram}mb / ${ramT}mb`) .addField('Criada e Desenvolvida Por', 'Lobo Metalurgico (<@281515925960654848>)\n\nContato: https://youtube.com/LoboMetalurgico | contato@lobometalurgico.tk') .addField('Idealizada Por', 'Carson (<@773670346921476166>)') - .addField('Avatar Por', 'Kira\'s Art (<@207023257512181760>)\n\nContato: https://twitter.com/kiratokioArt/') + .addField('Avatar Por', 'Kira\'s Art (<@207023257512181760>)\n\nContato: https://twitter.com/kiratokioArt') .setFooter(`Informações Solicitadas por ${message.author.tag}`, message.author.avatarURL) .setTimestamp(); From bd9eb268bfca799d83ba27ee2aa137c747ba5e15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= Date: Mon, 14 Dec 2020 12:40:13 -0300 Subject: [PATCH 132/164] Fix some bugs related with process.env --- src/Commands/bot.js | 32 +++++++++++++++++--------------- src/Commands/serverinfo.js | 2 +- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/Commands/bot.js b/src/Commands/bot.js index 74efe1c..7b67f9c 100644 --- a/src/Commands/bot.js +++ b/src/Commands/bot.js @@ -20,6 +20,7 @@ const { emojis, sysdata } = require('../Utils'); const Discord = require('discord.js'); const { config, links } = require('../../Configs'); +const pkg = require('../../package.json'); exports.run = async (aruna, message) => { @@ -61,7 +62,7 @@ exports.run = async (aruna, message) => { } async function getUserCount() { - const req = await aruna.shard.fetchClientValues('users.size'); + const req = await aruna.shard.broadcastEval('this.guilds.reduce((p, n) => p + n.memberCount, 0)'); return req.reduce((p, n) => p + n, 0); } @@ -70,7 +71,7 @@ exports.run = async (aruna, message) => { const name = user.displayName; - const version = process.env['npm_package_version']; + const version = pkg.version; const embed = new Discord.RichEmbed() .setAuthor(aruna.user.username, `${aruna.user.avatarURL}`) @@ -83,22 +84,23 @@ exports.run = async (aruna, message) => { .addField('(🕹️) Usuários', await getUserCount(), true) .addField('(💻) Seu Shard', aruna.shard.id, true) .addField('(💠) Total de Shards', aruna.shard.count, true) - .addField('(🏓) Ping do Shard', `${aruna.ping}ms`, true) - .addField( - 'Convite', - `${links.invites[0] ? `[Link](${links.invites[0]})` : 'INDISPONÍVEL'}`, - true - ) - .addField('Meu Site', `${links.website ? `[Link](${links.website})` : 'Em Breve™️'}`, true) - .addField( - 'Servidor de Suporte', - `${links.supportServers[0] ? `[Link](${links.supportServers[0]})` : 'INDISPONÍVEL'}`, - true - ) + .addField('(🏓) Ping do Shard', `${Math.round(aruna.ping)}ms`, true) .setThumbnail(`${aruna.user.displayAvatarURL}`) .setFooter(`Informações Solicitadas por ${message.author.tag}`, message.author.avatarURL) .setTimestamp(); + if (links.invites[0]) { + embed.addField('Convite', `${`[Link](${links.invites[0]})`}`, true); + } + + if (links.website) { + embed.addField('Meu Site', `[Link](${links.website})}`, true); + } + + if (links.supportServers[0]) { + embed.addField('Servidor de Suporte', `[Link](${links.supportServers[0]})}`, true); + } + var os = await sysdata.GetOSData(); var rambo = await sysdata.GetMemoryAmount(); @@ -115,7 +117,7 @@ exports.run = async (aruna, message) => { .setAuthor(aruna.user.username, `${aruna.user.avatarURL}`) .setDescription('`Informações Avançadas`') .addField('Versão do Node', process.version) - .addField('Versão do discord.js', process.env['npm_package_dependencies_discord_js'].replace('^', '')) + .addField('Versão do discord.js', pkg.dependencies['discord.js'].replace('^', '')) .addField('Informações da Host', `Sistema Operacional: ${os.distro}\n Processador: ${cpu.manufacturer} ${cpu.brand}\n Núcleos do Processador: ${cpu.cores}\n diff --git a/src/Commands/serverinfo.js b/src/Commands/serverinfo.js index 52c482d..1e56f79 100644 --- a/src/Commands/serverinfo.js +++ b/src/Commands/serverinfo.js @@ -91,7 +91,7 @@ exports.run = async (aruna, message) => { false ) .addField( - `:busts_in_silhouette: ${message.guild.members.size} Membros (Sendo ${message.guild.members.filter(m => m.user.bot).size} Bots e ${message.guild.members.filter(m => !m.user.bot).size} Humanos)`, + `:busts_in_silhouette: ${message.guild.memberCount} Membros (Sendo ${message.guild.members.filter(m => m.user.bot).size} Bots e ${message.guild.members.filter(m => !m.user.bot).size} Humanos)`, `${status['online']}: ${ message.guild.members.filter(m => m.presence.status === 'online').size }\n${status['idle']}: ${ From 26fd7b25e7acada39becac209ae5832b8525a7d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= Date: Mon, 14 Dec 2020 13:03:02 -0300 Subject: [PATCH 133/164] Update dependencies MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Lobo Metalúrgico --- package-lock.json | 504 +++++++++++++++++++++++++++++++--------------- package.json | 19 +- 2 files changed, 354 insertions(+), 169 deletions(-) diff --git a/package-lock.json b/package-lock.json index 164367b..ac50aec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -90,6 +90,17 @@ "regenerator-runtime": "^0.13.4" } }, + "@derhuerst/http-basic": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@derhuerst/http-basic/-/http-basic-8.2.1.tgz", + "integrity": "sha512-Rmn7qQQulw2sxJ8qGfZ7OuqMWuhz8V+L5xnYKMF5cXVcYqmgWqlVEAme90pF7Ya8OVhxVxLmhh0rI2k6t7ITWw==", + "requires": { + "caseless": "^0.12.0", + "concat-stream": "^1.6.2", + "http-response-object": "^3.0.1", + "parse-cache-control": "^1.0.1" + } + }, "@discordjs/node-pre-gyp": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/@discordjs/node-pre-gyp/-/node-pre-gyp-0.1.0.tgz", @@ -108,18 +119,18 @@ } }, "@discordjs/opus": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@discordjs/opus/-/opus-0.3.2.tgz", - "integrity": "sha512-T/ubykd4Xi19vDfw7/Oe+iTQBJ28yMI2PQAzK+Zue0PB9OpEYaeIXU7k5255061RwL+rHX9w7P/P2of+x2Vu2A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@discordjs/opus/-/opus-0.3.3.tgz", + "integrity": "sha512-n3hUs4RY0K8cz8vJ2GiZE4EdJlexoxs1vGsaft5lZlAnU6wsZfncpv4px+HVOMKN8ddtjriGfsrG4lVkAyZcmQ==", "requires": { "@discordjs/node-pre-gyp": "^0.1.0", - "node-addon-api": "^2.0.0" + "node-addon-api": "^3.0.2" } }, "@eslint/eslintrc": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.1.3.tgz", - "integrity": "sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", + "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -135,12 +146,12 @@ }, "dependencies": { "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "strip-json-comments": { @@ -472,11 +483,33 @@ "regenerator-runtime": "^0.13.3" } }, + "@types/bson": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.3.tgz", + "integrity": "sha512-mVRvYnTOZJz3ccpxhr3wgxVmSeiYinW+zlzQz3SXWaJmD1DuL05Jeq7nKw3SnbKmbleW5qrLG5vdyWe/A9sXhw==", + "requires": { + "@types/node": "*" + } + }, "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" }, + "@types/mongodb": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.3.tgz", + "integrity": "sha512-6YNqGP1hk5bjUFaim+QoFFuI61WjHiHE1BNeB41TA00Xd2K7zG4lcWyLLq/XtIp36uMavvS5hoAUJ+1u/GcX2Q==", + "requires": { + "@types/bson": "*", + "@types/node": "*" + } + }, + "@types/node": { + "version": "14.14.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.13.tgz", + "integrity": "sha512-vbxr0VZ8exFMMAjCW8rJwaya0dMCDyYW2ZRdTyjtrCvJoENMpdUHOT/eTzvgyA5ZnqRZ/sI0NwqAxNHKYokLJQ==" + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -492,9 +525,9 @@ } }, "acorn": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", - "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true }, "acorn-jsx": { @@ -503,10 +536,28 @@ "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", "dev": true }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + } + } + }, "ajv": { - "version": "6.12.5", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.5.tgz", - "integrity": "sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -673,6 +724,11 @@ "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=" }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, "bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", @@ -684,6 +740,11 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, "chalk": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", @@ -739,6 +800,17 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -789,9 +861,9 @@ } }, "dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.3.1.tgz", + "integrity": "sha512-xhq1wI5BQ0TMJDvio0BLP8lNeYlhAvmh/7H52H9n6kfzqSmRpIhH5KEIjJ7onFEAh5CQVrAP2MAG8wZ6j0BKzQ==" }, "dblapi.js": { "version": "2.4.1", @@ -799,17 +871,17 @@ "integrity": "sha512-g+u1inF/qOLit5qPK4hBGk5pKL1vy09uBLV+nukkRMvw2S9D1PyiyO70n4fboUXOgbExPp6Sho/Y782OqQOUiQ==" }, "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "requires": { "ms": "^2.1.1" } }, "decimal.js": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.0.tgz", - "integrity": "sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw==" + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", + "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==" }, "deep-extend": { "version": "0.6.0", @@ -903,6 +975,11 @@ "ansi-colors": "^4.1.1" } }, + "env-paths": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", + "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==" + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -920,26 +997,26 @@ "dev": true }, "eslint": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.9.0.tgz", - "integrity": "sha512-V6QyhX21+uXp4T+3nrNfI3hQNBDa/P8ga7LoQOenwrlEFXrEnUEE+ok1dMtaS3b6rmLXhT1TkTIsG75HMLbknA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.15.0.tgz", + "integrity": "sha512-Vr64xFDT8w30wFll643e7cGrIkPEU50yIiI36OdSIDoSGguIeaLzBo0vpGvzo9RECUqq7htURfwEtKqwytkqzA==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.1.3", + "@eslint/eslintrc": "^0.2.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.0.1", "doctrine": "^3.0.0", "enquirer": "^2.3.5", - "eslint-scope": "^5.1.0", + "eslint-scope": "^5.1.1", "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^1.3.0", - "espree": "^7.3.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", "esquery": "^1.2.0", "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", + "file-entry-cache": "^6.0.0", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", "globals": "^12.1.0", @@ -971,12 +1048,12 @@ "dev": true }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "strip-ansi": { @@ -1013,23 +1090,39 @@ "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } } }, "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", "dev": true }, "espree": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz", - "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, "requires": { "acorn": "^7.4.0", - "acorn-jsx": "^5.2.0", + "acorn-jsx": "^5.3.1", "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } } }, "esprima": { @@ -1209,13 +1302,32 @@ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" }, + "ffmpeg": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/ffmpeg/-/ffmpeg-0.0.4.tgz", + "integrity": "sha1-HEYN+OfaUSf2LO70v6BsWciWMMs=", + "requires": { + "when": ">= 0.0.1" + } + }, + "ffmpeg-static": { + "version": "4.2.7", + "resolved": "https://registry.npmjs.org/ffmpeg-static/-/ffmpeg-static-4.2.7.tgz", + "integrity": "sha512-SGnOr2d+k0/9toRIv9t5/hN/DMYbm5XMtG0wVwGM1tEyXJAD6dbcWOEvfHq4LOySm9uykKL6LMC4eVPeteUnbQ==", + "requires": { + "@derhuerst/http-basic": "^8.2.0", + "env-paths": "^2.2.0", + "https-proxy-agent": "^5.0.0", + "progress": "^2.0.3" + } + }, "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", + "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", "dev": true, "requires": { - "flat-cache": "^2.0.1" + "flat-cache": "^3.0.4" } }, "file-type": { @@ -1253,31 +1365,19 @@ } }, "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } + "flatted": "^3.1.0", + "rimraf": "^3.0.2" } }, "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", + "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", "dev": true }, "form-data": { @@ -1404,9 +1504,9 @@ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, "html-entities": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", - "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==" + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.3.tgz", + "integrity": "sha512-/VulV3SYni1taM7a4RMdceqzJWR39gpZHjBwUnsCFKWV/GJkD14CJ5F7eWcZozmHJK0/f/H5U3b3SiPkuvxMgg==" }, "http-errors": { "version": "1.7.2", @@ -1427,6 +1527,40 @@ } } }, + "http-response-object": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", + "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", + "requires": { + "@types/node": "^10.0.3" + }, + "dependencies": { + "@types/node": { + "version": "10.17.49", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.49.tgz", + "integrity": "sha512-PGaJNs5IZz5XgzwJvL/1zRfZB7iaJ5BydZ8/Picm+lUNYoNO9iVTQkVy5eUh0dZDrx3rBOIs3GCbCRmMuYyqwg==" + } + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "requires": { + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + } + } + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -1460,9 +1594,9 @@ "integrity": "sha1-/IQJlmRGC5DKhi2TALa/u7+/gFY=" }, "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz", + "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -1490,9 +1624,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "ipaddr.js": { "version": "1.9.1", @@ -1567,9 +1701,9 @@ "dev": true }, "js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -1589,9 +1723,9 @@ "dev": true }, "kareem": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.1.tgz", - "integrity": "sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw==" + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz", + "integrity": "sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==" }, "levn": { "version": "0.4.1", @@ -1630,32 +1764,25 @@ "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" }, "m3u8stream": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.7.1.tgz", - "integrity": "sha512-z6ldnAdhbuWOL6LmMkwptSZGzj+qbRytMKLTbNicwF/bJMjf9U9lqD57RNQUFecvWadEkzy6PDjcNJFFgi19uQ==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.8.3.tgz", + "integrity": "sha512-0nAcdrF8YJKUkb6PzWdvGftTPyCVWgoiot1AkNVbPKTeIGsWs6DrOjifrJ0Zi8WQfQmD2SuVCjkYIOip12igng==", "requires": { - "miniget": "^1.6.1", + "miniget": "^4.0.0", "sax": "^1.2.4" - }, - "dependencies": { - "miniget": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/miniget/-/miniget-1.7.2.tgz", - "integrity": "sha512-USPNNK2bnHLOplX8BZVMehUkyQizS/DFpBdoH0TS+fM+hQoLNg9tWg4MeY9wE8gfY0pbzmx5UBEODujt3Lz8AA==" - } } }, "mathjs": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-7.2.0.tgz", - "integrity": "sha512-9UBMWBB94eyrxX8gskBzkVJZBEig2BUL8CBglQoRW4X/ljdW6hBVm8sT6Jp1MhyEp+2flKJo81qwml6twScxFw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-8.1.0.tgz", + "integrity": "sha512-Nf41Ms01FX+gP1xnJ5lWcGwMY/snFdqbYPe0LU16rXtLwk+UPfllKC6rStOuOqiPKwj5imJtkHO1vI8X4Y2aSw==", "requires": { "complex.js": "^2.0.11", - "decimal.js": "^10.2.0", + "decimal.js": "^10.2.1", "escape-latex": "^1.2.0", "fraction.js": "^4.0.12", "javascript-natural-sort": "^0.7.1", - "seed-random": "^2.2.0", + "seedrandom": "^3.0.5", "tiny-emitter": "^2.1.0", "typed-function": "^2.0.0" } @@ -1708,9 +1835,9 @@ } }, "miniget": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/miniget/-/miniget-2.0.1.tgz", - "integrity": "sha512-MX+QfVIPAutz6c+T7WKuFKtjcw0nOyRRh1ubhTDD+z/e/pKcSAsfAV63aQKUgb1MFRT1GyfJeW53N5fHkX0wIA==" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/miniget/-/miniget-4.1.0.tgz", + "integrity": "sha512-kzhrNv5L7LlomwGmPGQsLQ2PnT1LeJJWfB0wNFGyv426gEM1gsfziBQmfkr6XOBA8EusZg9nowlNT5CbuKTjZg==" }, "minimatch": { "version": "3.0.4", @@ -1734,9 +1861,9 @@ } }, "minizlib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.0.tgz", - "integrity": "sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "requires": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -1751,9 +1878,9 @@ } }, "moment": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.28.0.tgz", - "integrity": "sha512-Z5KOjYmnHyd/ukynmFd/WwyXHd7L4J9vTI/nn5Ap9AVUgaAE15VvQ9MOGmJJygEUklupqIrFnor/tjTwRU+tQw==" + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" }, "moment-duration-format": { "version": "2.3.2", @@ -1761,9 +1888,9 @@ "integrity": "sha512-cBMXjSW+fjOb4tyaVHuaVE/A5TqkukDWiOfxxAjY+PEqmmBQlLwn+8OzwPiG3brouXKY5Un4pBjAeB6UToXHaQ==" }, "mongodb": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.2.tgz", - "integrity": "sha512-sSZOb04w3HcnrrXC82NEh/YGCmBuRgR+C1hZgmmv4L6dBz4BkRse6Y8/q/neXer9i95fKUBbFi4KgeceXmbsOA==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.3.tgz", + "integrity": "sha512-rOZuR0QkodZiM+UbQE5kDsJykBqWi0CL4Ec2i1nrGrUI3KO11r6Fbxskqmq3JK2NH7aW4dcccBuUujAP0ERl5w==", "requires": { "bl": "^2.2.1", "bson": "^1.1.4", @@ -1774,16 +1901,17 @@ } }, "mongoose": { - "version": "5.10.5", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.10.5.tgz", - "integrity": "sha512-BOQZsZn9Y79f3rWZFLD1gvOLNN5gOiGvGr5raqQ5v/T4fdAmnjXGCVynpW4SRnQLtrcCeLXyaaXVRT75863Q0w==", + "version": "5.11.7", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.11.7.tgz", + "integrity": "sha512-9FQ3BNPMU7GVHw1jVrxPXQpVJWuMESEO5bf4SWgI4S6+OT1Kk6fdLGWibUh2UAVSolfizljOZQQ6Z+cTLyoFOw==", "requires": { + "@types/mongodb": "^3.5.27", "bson": "^1.1.4", - "kareem": "2.3.1", - "mongodb": "3.6.2", + "kareem": "2.3.2", + "mongodb": "3.6.3", "mongoose-legacy-pluralize": "1.0.2", - "mpath": "0.7.0", - "mquery": "3.2.2", + "mpath": "0.8.1", + "mquery": "3.2.3", "ms": "2.1.2", "regexp-clone": "1.0.0", "safe-buffer": "5.2.1", @@ -1804,14 +1932,14 @@ "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==" }, "mpath": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.7.0.tgz", - "integrity": "sha512-Aiq04hILxhz1L+f7sjGyn7IxYzWm1zLNNXcfhDtx04kZ2Gk7uvFdgZ8ts1cWa/6d0TQmag2yR8zSGZUmp0tFNg==" + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.8.1.tgz", + "integrity": "sha512-norEinle9aFc05McBawVPwqgFZ7npkts9yu17ztIVLwPwO9rq0OTp89kGVTqvv5rNLMz96E5iWHpVORjI411vA==" }, "mquery": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.2.tgz", - "integrity": "sha512-XB52992COp0KP230I3qloVUbkLUxJIu328HBP2t2EsxSFtf4W1HPSOBWOXf1bqxK4Xbb66lfMJ+Bpfd9/yZE1Q==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.3.tgz", + "integrity": "sha512-cIfbP4TyMYX+SkaQ2MntD+F2XbqaBHUYWk3j+kqdDztPWok3tgyssOZxMHMtzbV1w9DaSlvEea0Iocuro41A4g==", "requires": { "bluebird": "3.5.1", "debug": "3.1.0", @@ -1847,9 +1975,9 @@ "dev": true }, "needle": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.0.tgz", - "integrity": "sha512-o/qITSDR0JCyCKEQ1/1bnUXMmznxabbwi/Y4WwJElf+evwJNFNwIDMCCt5IigFVxgeGBJESLohGtIS9gEzo1fA==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.2.tgz", + "integrity": "sha512-LbRIwS9BfkPvNwNHlsA41Q29kL2L/6VaOJ0qisM5lLWsTV3nP15abO5ITL6L81zqFhzjRKDAYjpcBcwM0AVvLQ==", "requires": { "debug": "^3.2.6", "iconv-lite": "^0.4.4", @@ -1862,9 +1990,9 @@ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, "node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.2.tgz", + "integrity": "sha512-+D4s2HCnxPd5PjjI0STKwncjXTUKKqm74MDMz9OPXavjsGmjkvwgLtA5yoxJUdmpj52+2u+RrXgPipahKczMKg==" }, "nopt": { "version": "4.0.3", @@ -2011,6 +2139,11 @@ "xml2js": "^0.4.5" } }, + "parse-cache-control": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha1-juqz5U+laSD+Fro493+iGqzC104=" + }, "parse-headers": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz", @@ -2079,8 +2212,7 @@ "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, "proxy-addr": { "version": "2.0.6", @@ -2223,10 +2355,10 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, - "seed-random": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/seed-random/-/seed-random-2.2.0.tgz", - "integrity": "sha1-KpsZ4lCoFwmSMaW5mk2vgLf77VQ=" + "seedrandom": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", + "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" }, "semver": { "version": "7.3.2", @@ -2482,9 +2614,9 @@ } }, "systeminformation": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-4.28.1.tgz", - "integrity": "sha512-g9WQy+Igsf0efbbTlXzDkV7iYeUerFJeqI/zh07F9sWHxclejmXn5hrGdgHf2ok+1DuRmC9t4mEh7XS0b8Zk9w==" + "version": "4.31.1", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-4.31.1.tgz", + "integrity": "sha512-dVCDWNMN8ncMZo5vbMCA5dpAdMgzafK2ucuJy5LFmGtp1cG6farnPg8QNvoOSky9SkFoEX1Aw0XhcOFV6TnLYA==" }, "table": { "version": "5.4.6", @@ -2533,14 +2665,14 @@ } }, "tar": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.2.tgz", - "integrity": "sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.5.tgz", + "integrity": "sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg==", "requires": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "minipass": "^3.0.0", - "minizlib": "^2.1.0", + "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" }, @@ -2612,6 +2744,11 @@ "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-2.0.0.tgz", "integrity": "sha512-Hhy1Iwo/e4AtLZNK10ewVVcP2UEs408DS35ubP825w/YgSBK1KVLwALvvIG4yX75QJrxjCpcWkzkVRB0BwwYlA==" }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, "uid-safe": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", @@ -2653,9 +2790,9 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "v8-compile-cache": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", "dev": true }, "vary": { @@ -2663,6 +2800,11 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, + "when": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", + "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=" + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -2691,15 +2833,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, "ws": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", @@ -2749,15 +2882,64 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "ytdl-core": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-3.2.2.tgz", - "integrity": "sha512-DVE7uhk4WYB2Op742QQVGE/b9G7cr9kSB3ZDpDXmyRPhO55h9u8gwORlDIHWKucWVmCsdsdKzNP89QylpJEgiw==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.1.5.tgz", + "integrity": "sha512-3MSGIFg3jBWuYZthumSZh69pLwC8/0Wz4Ov+Q6StsGsGcbwBN0OGtz3XvtlYS5YWLrxLeIs/FRBMXrgeEOSA+w==", "requires": { "html-entities": "^1.3.1", - "m3u8stream": "^0.7.1", - "miniget": "^2.0.1", + "m3u8stream": "^0.8.3", + "miniget": "^4.0.0", "sax": "^1.1.3" } + }, + "ytdl-core-discord": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/ytdl-core-discord/-/ytdl-core-discord-1.2.4.tgz", + "integrity": "sha512-1FjjwcFHuzDHk3ZJ15GM1gIj874qqLFQ0tTNDYUCsIWCmMzipP5qDjAW4v3sbIzdk22gyLFymh8t8VuYb9a6Lg==", + "requires": { + "@types/node": "^14.14.2", + "prism-media": "^1.2.2", + "ytdl-core": "^3.4.2" + }, + "dependencies": { + "m3u8stream": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.7.1.tgz", + "integrity": "sha512-z6ldnAdhbuWOL6LmMkwptSZGzj+qbRytMKLTbNicwF/bJMjf9U9lqD57RNQUFecvWadEkzy6PDjcNJFFgi19uQ==", + "requires": { + "miniget": "^1.6.1", + "sax": "^1.2.4" + }, + "dependencies": { + "miniget": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/miniget/-/miniget-1.7.2.tgz", + "integrity": "sha512-USPNNK2bnHLOplX8BZVMehUkyQizS/DFpBdoH0TS+fM+hQoLNg9tWg4MeY9wE8gfY0pbzmx5UBEODujt3Lz8AA==" + } + } + }, + "miniget": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/miniget/-/miniget-2.1.0.tgz", + "integrity": "sha512-fy9x3d/0oOIhkwAms6kgxTYkHwdELhMfgj+9a/aYZpJdTWIIWGta9aXHUtnzUn+LjBmRoTdPRQSi2hkmEvXk3A==" + }, + "prism-media": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.2.3.tgz", + "integrity": "sha512-fSrR66n0l6roW9Rx4rSLMyTPTjRTiXy5RVqDOurACQ6si1rKHHKDU5gwBJoCsIV0R3o9gi+K50akl/qyw1C74A==" + }, + "ytdl-core": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-3.4.2.tgz", + "integrity": "sha512-R6m1XZQK+iXxb9Q9Wo14/K8mti1r4HnKv4zKrbp5FvMG/jDbeV0xQHUHqqDLk+uiDy/VU6fVATm5x2ms0QaF5w==", + "requires": { + "html-entities": "^1.3.1", + "m3u8stream": "^0.7.1", + "miniget": "^2.0.1", + "sax": "^1.1.3" + } + } + } } } } diff --git a/package.json b/package.json index 3b691ac..b0bbcf5 100644 --- a/package.json +++ b/package.json @@ -25,23 +25,26 @@ ], "license": "AGPL-3.0", "dependencies": { - "@discordjs/opus": "^0.3.2", + "@discordjs/opus": "^0.3.3", "chalk": "^4.1.0", - "dateformat": "^3.0.3", + "dateformat": "^4.3.1", "dblapi.js": "^2.4.1", "discord.js": "^11.6.4", "express": "^4.17.1", "express-session": "^1.17.1", + "ffmpeg": "0.0.4", + "ffmpeg-static": "^4.2.7", "jimp": "^0.16.1", - "mathjs": "^7.2.0", - "moment": "^2.28.0", + "mathjs": "^8.1.0", + "moment": "^2.29.1", "moment-duration-format": "^2.3.2", - "mongoose": "^5.10.5", + "mongoose": "^5.11.7", "superagent": "^6.1.0", - "systeminformation": "^4.28.1", - "ytdl-core": "^3.2.2" + "systeminformation": "^4.31.1", + "ytdl-core": "^4.1.5", + "ytdl-core-discord": "^1.2.4" }, "devDependencies": { - "eslint": "^7.9.0" + "eslint": "^7.15.0" } } From faa2ca1f05b1dc9cdac9fa466fb42f8bd5d9f420 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= Date: Mon, 14 Dec 2020 13:25:39 -0300 Subject: [PATCH 134/164] Fix eslint workflow --- .github/workflows/eslint.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yml index 1264238..40dbb42 100644 --- a/.github/workflows/eslint.yml +++ b/.github/workflows/eslint.yml @@ -1,15 +1,14 @@ name: ESLint -on: - push: - paths: - - "src/**" - - ".eslintrc.*" - - ".github/workflows/eslint.yml" +on: [push, pull_request] jobs: update: name: ESLint + runs-on: ubuntu-latest + + if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository + steps: - name: Checkout repository uses: actions/checkout@v2 From 8dbe06aa0cde0bdc9e512a64217a8abc70e52db9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 14 Dec 2020 13:40:15 -0300 Subject: [PATCH 135/164] Better DBL event report --- src/Events/ready.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Events/ready.js b/src/Events/ready.js index 1b58201..d8672b4 100644 --- a/src/Events/ready.js +++ b/src/Events/ready.js @@ -154,12 +154,6 @@ exports.run = async (aruna) => { const dbl = new DBL(apiKeys.topgg, client); - dbl.postStats(client.guilds.size, client.shard.id, client.shard.count); - - setInterval(() => { - dbl.postStats(client.guilds.size, client.shard.id, client.shard.count); - }, 900000); - // Optional events dbl.on('posted', () => { log(`[${langE.dbl}] => ${langE.ready.posted}`); @@ -168,5 +162,11 @@ exports.run = async (aruna) => { dbl.on('error', e => { warn(`[${langE.dbl}][${language.main.error}] => ${e}`); }); + + dbl.postStats(client.guilds.size, client.shard.id, client.shard.count); + + setInterval(() => { + dbl.postStats(client.guilds.size, client.shard.id, client.shard.count); + }, 900000); } }; \ No newline at end of file From 345fdb8388a3e6dc89d857c4dc28a8711c3a1b13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 14 Dec 2020 20:16:39 -0300 Subject: [PATCH 136/164] add id support --- src/Commands/ship.js | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/Commands/ship.js b/src/Commands/ship.js index 42a7b9a..40066a1 100644 --- a/src/Commands/ship.js +++ b/src/Commands/ship.js @@ -19,11 +19,11 @@ const Discord = require('discord.js'); const Jimp = require('jimp'); -exports.run = async (client, message) => { +exports.run = async (client, message, args) => { const error1 = new Discord.RichEmbed() .setAuthor('Oops!', message.author.avatarURL) .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Você deve mencionar um segundo usuário!') + .setDescription('Você deve mencionar no mínimo 1 usuário!') .setTimestamp(); var porcentagem = 0; @@ -31,10 +31,29 @@ exports.run = async (client, message) => { porcentagem = aleatorio; - const user1 = message.mentions.users.first(); - const user2 = message.mentions.users.array()[1] || message.author; + if (!message.mentions.users.first() && isNaN(args[0])) { + return message.channel.send(error1); + } else if (!message.mentions.users.array()[1] && !!args[1] && isNaN(args[1])) { + return message.channel.send(error1); + } - if (!user2) return message.channel.send(error1); + var user1; + + if (message.mentions.users.first()) { + user1 = message.mentions.users.first(); + } else if (message.guild.members.get(args[0])) { + user1 = message.guild.members.get(args[0]).user; + } else user1 = null; + + var user2; + + if (message.mentions.users.array()[1]) { + user2 = message.mentions.users.array()[1]; + } else if (message.guild.members.get(args[1])) { + user2 = message.guild.members.get(args[1]).user; + } else user2 = message.author; + + if (!user1 || user1 === user2) return message.channel.send(error1); const richard_lindu = await Jimp.read(user1.avatarURL); const richard_dmais = await Jimp.read(user2.avatarURL); From 60e8dd42f7325c2c7493bf67c7bd3b4e0a5526ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 14 Dec 2020 20:51:33 -0300 Subject: [PATCH 137/164] fix a minor bug --- src/Commands/ship.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Commands/ship.js b/src/Commands/ship.js index 40066a1..c4b2da5 100644 --- a/src/Commands/ship.js +++ b/src/Commands/ship.js @@ -53,7 +53,7 @@ exports.run = async (client, message, args) => { user2 = message.guild.members.get(args[1]).user; } else user2 = message.author; - if (!user1 || user1 === user2) return message.channel.send(error1); + if (!user1 && user1 === user2) return message.channel.send(error1); const richard_lindu = await Jimp.read(user1.avatarURL); const richard_dmais = await Jimp.read(user2.avatarURL); From 7057ffa3eff6d4b311cff512b2fed91090cbf5b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 27 Dec 2020 00:54:56 -0300 Subject: [PATCH 138/164] Ultimate FakeName Verification --- src/Events/guildMemberAdd.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Events/guildMemberAdd.js b/src/Events/guildMemberAdd.js index 811a6d8..acb0982 100644 --- a/src/Events/guildMemberAdd.js +++ b/src/Events/guildMemberAdd.js @@ -45,9 +45,11 @@ exports.run = async (aruna, member) => { noFakeId.forEach(async id => { if (member.guild.member(id)) { - const userNew = member.user.username.toLocaleLowerCase().replace(/\s+/g, '').normalize('NFD').replace(/[\u0300-\u036f]/g, ''); + const userNew = member.user.username.toLocaleLowerCase().replace('4','a').replace('3','e').replace('5','s').replace('@','a') + .replace('i','u').replace('u','l').replace(/\s+/g, '').normalize('NFD').replace(/[\u0300-\u036f]/g, '').replace(/[^a-zA-Z0-9]/g, ''); const noFakeUser = await aruna.fetchUser(id); - const noFakeUsername = noFakeUser.username.toLocaleLowerCase().replace(/\s+/g, '').normalize('NFD').replace(/[\u0300-\u036f]/g, ''); + const noFakeUsername = noFakeUser.username.toLocaleLowerCase().replace('4','a').replace('3','e').replace('5','s').replace('@','a') + .replace('i','u').replace('u','l').replace(/\s+/g, '').normalize('NFD').replace(/[\u0300-\u036f]/g, '').replace(/[^a-zA-Z0-9]/g, ''); if (userNew == noFakeUsername && !noFakeId.includes(member.user.id)) { if (member.guild.members.get(aruna.user.id).hasPermission('KICK_MEMBERS')) { member.kick(langD.memberAdd.antifake.kickMessage); From ab480d8449a3e2679e1d3b1aa964338f991ceb1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 27 Dec 2020 01:00:17 -0300 Subject: [PATCH 139/164] Update Packages --- package-lock.json | 220 ++++++++++++++++++---------------------------- package.json | 13 +-- 2 files changed, 93 insertions(+), 140 deletions(-) diff --git a/package-lock.json b/package-lock.json index ac50aec..0c8b0ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,18 +5,18 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, "requires": { "@babel/highlight": "^7.10.4" } }, "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", "dev": true }, "@babel/highlight": { @@ -506,9 +506,9 @@ } }, "@types/node": { - "version": "14.14.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.13.tgz", - "integrity": "sha512-vbxr0VZ8exFMMAjCW8rJwaya0dMCDyYW2ZRdTyjtrCvJoENMpdUHOT/eTzvgyA5ZnqRZ/sI0NwqAxNHKYokLJQ==" + "version": "14.14.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.16.tgz", + "integrity": "sha512-naXYePhweTi+BMv11TgioE2/FXU4fSl29HAH1ffxVciNsH3rYXjNP2yM8wqmSm7jS20gM8TIklKiTen+1iVncw==" }, "abbrev": { "version": "1.1.1", @@ -620,9 +620,9 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, "async-limiter": { @@ -861,9 +861,9 @@ } }, "dateformat": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.3.1.tgz", - "integrity": "sha512-xhq1wI5BQ0TMJDvio0BLP8lNeYlhAvmh/7H52H9n6kfzqSmRpIhH5KEIjJ7onFEAh5CQVrAP2MAG8wZ6j0BKzQ==" + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.4.1.tgz", + "integrity": "sha512-3V9b/50QBYmFtd2c3cPOmdr2xNfnDphoBLxh/UVBoPIsylWkbUYGq3f4EQYuEaK7Mq4vcIpQCmOyJ37pqW/Uug==" }, "dblapi.js": { "version": "2.4.1", @@ -956,9 +956,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "encodeurl": { @@ -975,6 +975,11 @@ "ansi-colors": "^4.1.1" } }, + "entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" + }, "env-paths": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", @@ -997,9 +1002,9 @@ "dev": true }, "eslint": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.15.0.tgz", - "integrity": "sha512-Vr64xFDT8w30wFll643e7cGrIkPEU50yIiI36OdSIDoSGguIeaLzBo0vpGvzo9RECUqq7htURfwEtKqwytkqzA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.16.0.tgz", + "integrity": "sha512-iVWPS785RuDA4dWuhhgXTNrGxHHK3a8HLSMBgbbU59ruJDubUraXN8N5rn7kb8tG6sjg74eE0RA3YWT51eusEw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -1036,7 +1041,7 @@ "semver": "^7.2.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.0", - "table": "^5.2.3", + "table": "^6.0.4", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, @@ -1503,11 +1508,6 @@ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, - "html-entities": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.3.tgz", - "integrity": "sha512-/VulV3SYni1taM7a4RMdceqzJWR39gpZHjBwUnsCFKWV/GJkD14CJ5F7eWcZozmHJK0/f/H5U3b3SiPkuvxMgg==" - }, "http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", @@ -1594,9 +1594,9 @@ "integrity": "sha1-/IQJlmRGC5DKhi2TALa/u7+/gFY=" }, "import-fresh": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz", - "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -1901,9 +1901,9 @@ } }, "mongoose": { - "version": "5.11.7", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.11.7.tgz", - "integrity": "sha512-9FQ3BNPMU7GVHw1jVrxPXQpVJWuMESEO5bf4SWgI4S6+OT1Kk6fdLGWibUh2UAVSolfizljOZQQ6Z+cTLyoFOw==", + "version": "5.11.8", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.11.8.tgz", + "integrity": "sha512-RRfrYLg7pyuyx7xu5hwadjIZZJB9W2jqIMkL1CkTmk/uOCX3MX2tl4BVIi2rJUtgMNwn6dy3wBD3soB8I9Nlog==", "requires": { "@types/mongodb": "^3.5.27", "bson": "^1.1.4", @@ -2331,6 +2331,15 @@ "glob": "^7.1.3" } }, + "rss-parser": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/rss-parser/-/rss-parser-3.10.0.tgz", + "integrity": "sha512-TC6FNvEmdFeaW6r/60MSJT7cp4d95X4M9As+mvNtxRx7YXHxpV95syMnWZthZSeD1BRN7SEKdq6c3nxMLQRopw==", + "requires": { + "entities": "^2.0.3", + "xml2js": "^0.4.19" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -2454,44 +2463,20 @@ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true } } @@ -2614,52 +2599,52 @@ } }, "systeminformation": { - "version": "4.31.1", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-4.31.1.tgz", - "integrity": "sha512-dVCDWNMN8ncMZo5vbMCA5dpAdMgzafK2ucuJy5LFmGtp1cG6farnPg8QNvoOSky9SkFoEX1Aw0XhcOFV6TnLYA==" + "version": "4.33.1", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-4.33.1.tgz", + "integrity": "sha512-ZSAluWiZWNfyJMKXk+cBGVSh+dwa3dYEfJHKUVAUdJmtJAXms2Hurxk/TufM0ZUHthyimj85xAuXKnRMMAbgmQ==" }, "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.4.tgz", + "integrity": "sha512-sBT4xRLdALd+NFBvwOz8bw4b15htyythha+q+DVZqy2RS08PPC8O2sZFgJYEY7bJvbCFKccs+WIZ/cd+xxTWCw==", "dev": true, "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" + "ajv": "^6.12.4", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" } } } @@ -2882,62 +2867,29 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "ytdl-core": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.1.5.tgz", - "integrity": "sha512-3MSGIFg3jBWuYZthumSZh69pLwC8/0Wz4Ov+Q6StsGsGcbwBN0OGtz3XvtlYS5YWLrxLeIs/FRBMXrgeEOSA+w==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.2.1.tgz", + "integrity": "sha512-7zAoJiWpaBGgiAUCQuvKBuWom7tmSCV0A70gRdrPxR96yQoJOrCZkW6Wg1CofvPtAeQVWTVWThC8bXRsE+SBeA==", "requires": { - "html-entities": "^1.3.1", "m3u8stream": "^0.8.3", "miniget": "^4.0.0", "sax": "^1.1.3" } }, "ytdl-core-discord": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/ytdl-core-discord/-/ytdl-core-discord-1.2.4.tgz", - "integrity": "sha512-1FjjwcFHuzDHk3ZJ15GM1gIj874qqLFQ0tTNDYUCsIWCmMzipP5qDjAW4v3sbIzdk22gyLFymh8t8VuYb9a6Lg==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/ytdl-core-discord/-/ytdl-core-discord-1.2.5.tgz", + "integrity": "sha512-VS7Z7q9sfEpmTBWs31qU36O+qt52eLKCcbjs1VgkptwsHkeq2v6gBthUs6+4ZT6EzZopuZMSP/joZ0urXa1gcA==", "requires": { - "@types/node": "^14.14.2", - "prism-media": "^1.2.2", - "ytdl-core": "^3.4.2" + "@types/node": "^14.14.14", + "prism-media": "^1.2.3", + "ytdl-core": "^4.2.1" }, "dependencies": { - "m3u8stream": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.7.1.tgz", - "integrity": "sha512-z6ldnAdhbuWOL6LmMkwptSZGzj+qbRytMKLTbNicwF/bJMjf9U9lqD57RNQUFecvWadEkzy6PDjcNJFFgi19uQ==", - "requires": { - "miniget": "^1.6.1", - "sax": "^1.2.4" - }, - "dependencies": { - "miniget": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/miniget/-/miniget-1.7.2.tgz", - "integrity": "sha512-USPNNK2bnHLOplX8BZVMehUkyQizS/DFpBdoH0TS+fM+hQoLNg9tWg4MeY9wE8gfY0pbzmx5UBEODujt3Lz8AA==" - } - } - }, - "miniget": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/miniget/-/miniget-2.1.0.tgz", - "integrity": "sha512-fy9x3d/0oOIhkwAms6kgxTYkHwdELhMfgj+9a/aYZpJdTWIIWGta9aXHUtnzUn+LjBmRoTdPRQSi2hkmEvXk3A==" - }, "prism-media": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.2.3.tgz", "integrity": "sha512-fSrR66n0l6roW9Rx4rSLMyTPTjRTiXy5RVqDOurACQ6si1rKHHKDU5gwBJoCsIV0R3o9gi+K50akl/qyw1C74A==" - }, - "ytdl-core": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-3.4.2.tgz", - "integrity": "sha512-R6m1XZQK+iXxb9Q9Wo14/K8mti1r4HnKv4zKrbp5FvMG/jDbeV0xQHUHqqDLk+uiDy/VU6fVATm5x2ms0QaF5w==", - "requires": { - "html-entities": "^1.3.1", - "m3u8stream": "^0.7.1", - "miniget": "^2.0.1", - "sax": "^1.1.3" - } } } } diff --git a/package.json b/package.json index b0bbcf5..cbee27a 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "dependencies": { "@discordjs/opus": "^0.3.3", "chalk": "^4.1.0", - "dateformat": "^4.3.1", + "dateformat": "^4.4.1", "dblapi.js": "^2.4.1", "discord.js": "^11.6.4", "express": "^4.17.1", @@ -38,13 +38,14 @@ "mathjs": "^8.1.0", "moment": "^2.29.1", "moment-duration-format": "^2.3.2", - "mongoose": "^5.11.7", + "mongoose": "^5.11.8", + "rss-parser": "^3.10.0", "superagent": "^6.1.0", - "systeminformation": "^4.31.1", - "ytdl-core": "^4.1.5", - "ytdl-core-discord": "^1.2.4" + "systeminformation": "^4.33.1", + "ytdl-core": "^4.2.1", + "ytdl-core-discord": "^1.2.5" }, "devDependencies": { - "eslint": "^7.15.0" + "eslint": "^7.16.0" } } From 093705a6fc2bdfb21b118b33cb68668d9c4943da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 27 Dec 2020 01:03:14 -0300 Subject: [PATCH 140/164] Fix bot command --- src/Commands/bot.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Commands/bot.js b/src/Commands/bot.js index 7b67f9c..a5bb890 100644 --- a/src/Commands/bot.js +++ b/src/Commands/bot.js @@ -90,15 +90,15 @@ exports.run = async (aruna, message) => { .setTimestamp(); if (links.invites[0]) { - embed.addField('Convite', `${`[Link](${links.invites[0]})`}`, true); + embed.addField('Convite', `[Link](${links.invites[0]})`, true); } if (links.website) { - embed.addField('Meu Site', `[Link](${links.website})}`, true); + embed.addField('Meu Site', `[Link](${links.website})`, true); } if (links.supportServers[0]) { - embed.addField('Servidor de Suporte', `[Link](${links.supportServers[0]})}`, true); + embed.addField('Servidor de Suporte', `[Link](${links.supportServers[0]})`, true); } var os = await sysdata.GetOSData(); From a6acaa906db460bc4d672f54b0fa02e4346b627d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 27 Dec 2020 01:12:49 -0300 Subject: [PATCH 141/164] Optmizing ready.js --- src/Events/ready.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Events/ready.js b/src/Events/ready.js index d8672b4..ab911e6 100644 --- a/src/Events/ready.js +++ b/src/Events/ready.js @@ -90,15 +90,16 @@ exports.run = async (aruna) => { inMaintenance = maintenance.maintenance; } if (inMaintenance === true){ + aruna.user.setStatus('dnd'); aruna.user.setPresence({ game: { name: langE.ready.maintenance.replace('[date]', maintenance.date).replace('[time]', maintenance.time)}}); } else { + aruna.user.setStatus('online'); var randomStatus = status[Math.floor(Math.random() * status.length)]; randomStatus = { name: randomStatus.name.replace('[time]', time), type: randomStatus.type }; aruna.user.setPresence({ game: randomStatus }); } } - setStatus(); - setInterval(() => { + async function getUptime() { let totalSeconds = (aruna.uptime / 1000); const days = Math.floor(totalSeconds / 86400); totalSeconds %= 86400; @@ -118,7 +119,11 @@ exports.run = async (aruna) => { } else { uptime = `${seconds}s`; } - setStatus(uptime); + return uptime; + } + setStatus(await getUptime()); + setInterval(async () => { + setStatus(await getUptime()); }, 15000); function logPrefix() { From f36405444aa04543c33ab85e71211c2d651fd9a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 27 Dec 2020 01:14:03 -0300 Subject: [PATCH 142/164] Fix Optimization --- src/Events/ready.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Events/ready.js b/src/Events/ready.js index ab911e6..5acaddd 100644 --- a/src/Events/ready.js +++ b/src/Events/ready.js @@ -79,7 +79,7 @@ exports.run = async (aruna) => { type: 'listening' } ]; - async function setStatus(time) { + async function setStatus() { var maintenance = await database.System.findOne({ _id: 1 }); var inMaintenance; if (!maintenance) { @@ -95,7 +95,7 @@ exports.run = async (aruna) => { } else { aruna.user.setStatus('online'); var randomStatus = status[Math.floor(Math.random() * status.length)]; - randomStatus = { name: randomStatus.name.replace('[time]', time), type: randomStatus.type }; + randomStatus = { name: randomStatus.name.replace('[time]', await getUptime()), type: randomStatus.type }; aruna.user.setPresence({ game: randomStatus }); } } @@ -121,9 +121,9 @@ exports.run = async (aruna) => { } return uptime; } - setStatus(await getUptime()); - setInterval(async () => { - setStatus(await getUptime()); + setStatus(); + setInterval(() => { + setStatus(); }, 15000); function logPrefix() { From 25c472bffa1719c7015ff9216090b25470940afb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 27 Dec 2020 01:16:14 -0300 Subject: [PATCH 143/164] Remove Comment --- src/Events/ready.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Events/ready.js b/src/Events/ready.js index 5acaddd..448fdbd 100644 --- a/src/Events/ready.js +++ b/src/Events/ready.js @@ -159,7 +159,6 @@ exports.run = async (aruna) => { const dbl = new DBL(apiKeys.topgg, client); - // Optional events dbl.on('posted', () => { log(`[${langE.dbl}] => ${langE.ready.posted}`); }); From bc33d42158f11903b017c95a10399687767b0709 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 27 Dec 2020 02:37:28 -0300 Subject: [PATCH 144/164] Serverinfo command localization --- languages | 2 +- src/Commands/serverinfo.js | 129 ++++++++++++++++++++++++------------- 2 files changed, 86 insertions(+), 45 deletions(-) diff --git a/languages b/languages index 0f4b93c..5c69c08 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 0f4b93cfebc0d12c9fc0e136a6856f5f92bfadb0 +Subproject commit 5c69c08b0a58989ba47082f9ce0ab6a040e1d7a8 diff --git a/src/Commands/serverinfo.js b/src/Commands/serverinfo.js index 1e56f79..bf1b0d2 100644 --- a/src/Commands/serverinfo.js +++ b/src/Commands/serverinfo.js @@ -20,20 +20,27 @@ const Discord = require('discord.js'); // eslint-disable-next-line no-unused-vars const { emoji, date } = require('../Utils'); -const { database } = require('../../Configs'); +const { config, database } = require('../../Configs'); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); const dateFormat = require('dateformat'); -const status = { - online: `${emoji.online} Online`, - idle: `${emoji.idle} Ausente`, - dnd: `${emoji.dnd} Não Pertube`, - offline: `${emoji.offline} Offline` -}; -exports.run = async (aruna, message) => { +exports.run = async (aruna, message, args, langc) => { + if (langc) { + language = langc; + } + const guildDB = await database.Guilds.findOne({ _id: message.guild.id }); - var pType = ''; + const status = { + online: `${emoji.online} ${language.generic.status.online}`, + idle: `${emoji.idle} ${language.generic.status.idle}`, + dnd: `${emoji.dnd} ${language.generic.status.dnd}`, + offline: `${emoji.offline} ${language.generic.status.offline}` + }; + + var pType; + if (guildDB.isPartner == true && guildDB.isPremium == true){ pType = emoji.partnerPlus; } else if (guildDB.isPartner == true) { @@ -46,19 +53,38 @@ exports.run = async (aruna, message) => { var region = message.guild.region; - if (region === 'brazil') region = ':flag_br: Brasil'; - if (region === 'europe') region = ' :flag_eu: Europa'; - if (region === 'hongkong') region = ':flag_hk: Hong Kong'; - if (region === 'india') region = ':flag_in: India'; - if (region === 'japan') region = ':flag_jp: Japão'; - if (region === 'russia') region = ':flag_ru: Rússia'; - if (region === 'singapore') region = ':flag_sg: Singapura'; - if ( - region === 'us-central' || - region === 'us-east' || - region === 'us-south' || - region === 'us-west' - ) region = ':flag_us: Estados Unidos'; + switch (region) { + case 'brazil': + region = `:flag_br: ${language.serverinfo.generic.region.brazil}`; + break; + case 'europe': + region = `:flag_eu: ${language.serverinfo.generic.region.europe}`; + break; + case 'hongkong': + region = `:flag_hk: ${language.serverinfo.generic.region.hongkong}`; + break; + case 'india': + region = `:flag_in: ${language.serverinfo.generic.region.india}`; + break; + case 'japan': + region = `:flag_jp: ${language.serverinfo.generic.region.japan}`; + break; + case 'russia': + region = `:flag_ru: ${language.serverinfo.generic.region.russia}`; + break; + case 'singapore': + region = `:flag_sg: ${language.serverinfo.generic.region.singapore}`; + break; + case 'us-central': + case 'us-east': + case 'us-south': + case 'us-west': + region = `:flag_us: ${language.serverinfo.generic.region.usa}`; + break; + default: + region = language.serverinfo.generic.region.undefined; + break; + } var guildIcon; @@ -72,26 +98,35 @@ exports.run = async (aruna, message) => { .setColor([0, 23, 132]) .setTitle(`${pType} ${message.guild.name}`) .setThumbnail(guildIcon) - .addField(':computer: ID da Guild', message.guild.id, true) - .addField(':crown: Dono', `${message.guild.owner}`, true) - .addField(':earth_americas: Região', `${region}`, true) - .addField(':date: Data de Criação', `${dateFormat(message.guild.createdTimestamp, 'dd/mm/yyyy "às" HH:MM:ss')}`, true) - .addField(':desktop: Shard ID', aruna.shard.id, true) - .addField(':dizzy: Entrei Em', dateFormat(message.guild.member(aruna.user).joinedTimestamp, 'dd/mm/yyyy "às" HH:MM:ss'), true) + .addField(`:computer: ${language.serverinfo.embed.field1.title}`, message.guild.id, true) + .addField(`:crown: ${language.serverinfo.embed.field2.title}`, message.guild.owner, true) + .addField(`:earth_americas: ${language.serverinfo.embed.field3.title}`, region, true) + .addField(`:date: ${language.serverinfo.embed.field4.title}`, dateFormat(message.guild.createdTimestamp, language.serverinfo.embed.field4.content), true) + .addField(`:desktop: ${language.serverinfo.embed.field5.title}`, aruna.shard.id, true) + .addField(`:dizzy: ${language.serverinfo.embed.field6.title}`, dateFormat(message.guild.member(aruna.user).joinedTimestamp, language.serverinfo.embed.field6.content), true) .addField( - `:speech_balloon: Canais (${message.guild.channels.filter( - chn => chn.type === 'text' - ).size + - message.guild.channels.filter(chn => chn.type === 'voice').size})`, - `:pencil: Texto: ${ - message.guild.channels.filter(chn => chn.type === 'text').size - } \n :speaking_head: Voz: ${ - message.guild.channels.filter(chn => chn.type === 'voice').size - }`, + language.serverinfo.embed.field7.title + .replace('%1', ':speech_balloon:') + .replace('%2',message.guild.channels.filter( + chn => chn.type === 'text').size + + message.guild.channels.filter(chn => chn.type === 'voice').size + + message.guild.channels.filter(chn => chn.type === 'news').size + + message.guild.channels.filter(chn => chn.type === 'store').size) + .replace('%3', message.guild.channels.filter(chn => chn.type === 'category').size), + language.serverinfo.embed.field7.content + .replace('%1', ':pencil:') + .replace('%2', message.guild.channels.filter(chn => chn.type === 'text').size) + .replace('%3', ':speaking_head:') + .replace('%4', message.guild.channels.filter(chn => chn.type === 'voice').size) + .replace('%5', ':loudspeaker:') + .replace('%6', message.guild.channels.filter(chn => chn.type === 'news').size), false ) .addField( - `:busts_in_silhouette: ${message.guild.memberCount} Membros (Sendo ${message.guild.members.filter(m => m.user.bot).size} Bots e ${message.guild.members.filter(m => !m.user.bot).size} Humanos)`, + language.serverinfo.embed.field8.title + .replace('%1', `:busts_in_silhouette: ${message.guild.memberCount}`) + .replace('%2', message.guild.members.filter(m => m.user.bot).size) + .replace('%3', message.guild.members.filter(m => !m.user.bot).size), `${status['online']}: ${ message.guild.members.filter(m => m.presence.status === 'online').size }\n${status['idle']}: ${ @@ -103,18 +138,23 @@ exports.run = async (aruna, message) => { }`, false ) - .setFooter(`Comando Solicitado por ${message.author.username}#${message.author.discriminator}`, message.author.avatarURL) + .setFooter(language.generic.embed.footer.replace('[usertag]', message.author.tag), message.author.avatarURL) .setTimestamp(); if (message.guild.premiumSubscriptionCount >= 1 && message.guild.premiumTier >= 1) { - embed.addField(`${emoji.nitro} Informações sobre Impulsos`, - `${emoji.nitro} » Nível do Impulso: ${message.guild.premiumTier} - ${emoji.nitro} » Quantidade de Impulsos: ${message.guild.premiumSubscriptionCount}`, + embed.addField(`${emoji.nitro} ${language.serverinfo.embed.field9.title}`, + language.serverinfo.embed.field9.content + .replace('%1', emoji.nitro) + .replace('%2', message.guild.premiumTier) + .replace('%3', emoji.nitro) + .replace('%4', message.guild.premiumSubscriptionCount), false ); } else if (message.guild.premiumSubscriptionCount >= 1) { - embed.addField(`${emoji.nitro} Informações sobre Impulsos`, - `${emoji.nitro} » Quantidade de Impulsos: ${message.guild.premiumSubscriptionCount}`, + embed.addField(`${emoji.nitro} ${language.serverinfo.embed.field10.title}`, + language.serverinfo.embed.field10.content + .replace('%1', emoji.nitro) + .replace('%2',message.guild.premiumSubscriptionCount), false ); } @@ -126,5 +166,6 @@ exports.config = { name: 'serverinfo', aliases: ['si'], category: `${emoji.robot} Utilidades`, + description: language.serverinfo.config.description, public: true }; From 9a923da8dc8994293be873d1188e7b0958e0d848 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 28 Dec 2020 13:04:49 -0300 Subject: [PATCH 145/164] Alternative Commands fix --- src/Events/message.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Events/message.js b/src/Events/message.js index 4eddf51..387e03e 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -141,7 +141,7 @@ exports.run = async (aruna, message) => { const command = args.shift().toLowerCase(); const ma = message.content.split(' '); const cmd = ma[0]; - if (cmd == prefix) return; + if (cmd == prefix || cmd.slice(prefix.length).length < 2) return; const commandFile = aruna.commands.get(cmd.slice(prefix.length).toLowerCase()) || aruna.commands.get(aruna.aliases.get(cmd.slice(prefix.length).toLowerCase())); @@ -167,11 +167,15 @@ exports.run = async (aruna, message) => { .filter(c => c.config.name.startsWith(cmd.slice(prefix.length).toLowerCase()) ) - .map(a => '`' + a.config.name + '`') + .map(a => `${prefix}${a.config.name}`) .join(', ') || undefined; if (alts !== undefined) { - message.reply(lang.message.commandNotFound.replace('[command]', command).replace('[alt]', alts)); + message.reply(lang.message.errors.commandNotFound.replace('[command]', command).replace('[alt]', alts)).then(async msg => { + setTimeout(() => { + msg.delete(); + }, 30000); + }); } } } From d73addff09624a505340866ccaec1bdc6ba29324 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Thu, 7 Jan 2021 16:50:36 -0300 Subject: [PATCH 146/164] Userinfo upgrade --- src/Commands/userinfo.js | 311 +++++++++++++++++++-------------------- 1 file changed, 151 insertions(+), 160 deletions(-) diff --git a/src/Commands/userinfo.js b/src/Commands/userinfo.js index 894cb60..267e895 100644 --- a/src/Commands/userinfo.js +++ b/src/Commands/userinfo.js @@ -1,160 +1,151 @@ -/* eslint-disable max-len */ -/* - This File is part of ArunaBot - Copyright (C) LoboMetalurgico (and contributors) 2019-2020 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ - -// eslint-disable-next-line no-unused-vars -const { emoji, date } = require('../Utils'); -const Discord = require('discord.js'); -const dateFormat = require('dateformat'); - -exports.run = (aruna, message, args) => { - - const mentionedUser = message.guild.member( - message.mentions.users.first() || - aruna.users.get(args[0]) || - message.author - ); - - const userNickName = - mentionedUser.nickname !== null - ? `${mentionedUser.nickname}` - : 'Sem apelido'; - const userDaysDiscord = Math.round( - Math.abs( - (mentionedUser.user.createdAt.getTime() - new Date().getTime()) / - (24 * 60 * 60 * 1000) - ) - ); - const userDaysGuild = Math.round( - Math.abs( - (mentionedUser.joinedAt.getTime() - new Date().getTime()) / - (24 * 60 * 60 * 1000) - ) - ); - let userStatus; - if (mentionedUser.presence.status === 'dnd') userStatus = 'Não Pertube'; - if (mentionedUser.presence.status === 'idle') userStatus = 'Ausente'; - if (mentionedUser.presence.status === 'stream') userStatus = 'Transmitindo'; - if (mentionedUser.presence.status === 'offline') userStatus = 'Offline'; - if (mentionedUser.presence.status === 'online') userStatus = 'Disponível'; - - let userStatusEmoji; - if (mentionedUser.presence.status === 'dnd') userStatusEmoji = emoji.dnd; - if (mentionedUser.presence.status === 'idle') userStatusEmoji = emoji.idle; - if (mentionedUser.presence.status === 'stream') - userStatusEmoji = emoji.stream; - if (mentionedUser.presence.status === 'offline') - userStatusEmoji = emoji.offline; - if (mentionedUser.presence.status === 'online') - userStatusEmoji = emoji.online; - - let userAdminServer; - if (mentionedUser.hasPermission('ADMINISTRATOR') === true) - userAdminServer = 'Sim'; - if (mentionedUser.hasPermission('ADMINISTRATOR') === false) - userAdminServer = 'Não'; - - let userAvatar = mentionedUser.user.displayAvatarURL; - if (userAvatar.endsWith('.gif')) { - userAvatar = `${mentionedUser.user.displayAvatarURL}?size=2048`; - } - - var stringtime1 = ''; - if (userDaysDiscord == 1) stringtime1 = 'dia'; - else stringtime1 = 'dias'; - - var stringtime2 = ''; - if (userDaysGuild == 1) stringtime2 = 'dia'; - else stringtime2 = 'dias'; - - const premium = message.guild.member(message.author).premiumSinceTimestamp; - var userBoost = ''; - if (premium !== null) { - userBoost = `\n\n(${emoji.nitro}) **Impulsionando Desde:** ${dateFormat(message.guild.member(message.author).premiumSinceTimestamp, 'dd/mm/yyyy "às" HH:MM:ss')}`; - } - const accountCreated = dateFormat(mentionedUser.user.createdTimestamp, 'dd/mm/yyyy "às" HH:MM:ss'); - const joinedIn = dateFormat(mentionedUser.joinedTimestamp, 'dd/mm/yyyy "às" HH:MM:ss'); - - const embed = new Discord.RichEmbed() - .setAuthor(`${mentionedUser.user.username}`, `${userAvatar}`) - .addField('Informações do Usuário', ` - 🙋 **Nome:** \`${mentionedUser.user.username}\` - - ${emoji.menu} **Tag Completa:** \`${mentionedUser.user.tag}\` - - **Id:** \`${mentionedUser.user.id}\` - - ${userStatusEmoji} **Status:** \`${userStatus}\` - - ${emoji.pass} **Criou a Conta Em:** \`${accountCreated}\` (${userDaysDiscord} ${stringtime1} atrás)`, false) - .addField('Informações do Membro', ` - (${emoji.discord}) **Apelido:** \`${userNickName}\` - - (👮) **É Administrador:** \`${userAdminServer}\` - - (:date:) **Entrou Em:** \`${joinedIn}\` (${userDaysGuild} ${stringtime2} atrás)${userBoost} - `, false) - .setFooter(`Informações Solicitadas por ${message.author.tag}`, message.author.avatarURL) - .setThumbnail(userAvatar) - .setColor('#56eaf5') - .setTimestamp(); - - /* let embed2 = new Discord.RichEmbed() - .setAuthor(`${mentionedUser.user.username}`, `${userAvatar}`) - .addField(`(${emoji.passport}) Permissões`, `${userPerms}`) - .setFooter("Criada pelo Lobo Metalurgico") - .setThumbnail(userAvatar) - .setColor("#56eaf5") - .setTimestamp();*/ - - message.channel.send(embed); - - /* .then(msg => { - msg.react("638067652337729597"); - const collector = msg.createReactionCollector( - (r, u) => - r.emoji.name === "passport" && - (u.id !== aruna.user.id && u.id === message.author.id) - ); - collector.on("collect", r => { - switch (r.emoji.name) { - case "passport": - msg.edit(embed2).then(msg2 => { - msg2.react("⬅"); - const collector2 = msg.createReactionCollector( - (r, u) => - r.emoji.name === "⬅" && - (u.id !== aruna.user.id && u.id === message.author.id) - ); - collector2.on("collect", r => { - switch (r.emoji.name) { - case "⬅": - msg.edit(embed); - } - }); - }); - } - }); - });*/ -}; -exports.config = { - name: 'userinfo', - aliases: ['ui'], - category: `${emoji.robot} Utilidades`, - public: true -}; +/* eslint-disable max-len */ +/* + This File is part of ArunaBot + Copyright (C) LoboMetalurgico (and contributors) 2019-2020 + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +// eslint-disable-next-line no-unused-vars +const { emoji, date } = require('../Utils'); +const Discord = require('discord.js'); +const { config } = require('../../Configs'); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); +const dateFormat = require('dateformat'); + +exports.run = (aruna, message, args, langc) => { + if (langc) { + language = langc; + } + + const mentionedUser = message.guild.member( + message.mentions.users.first() || + aruna.users.get(args[0]) || + message.author + ); + + const userNickName = + mentionedUser.nickname !== null + ? `${mentionedUser.nickname}` + : 'Sem apelido'; + const userDaysDiscord = Math.round( + Math.abs( + (mentionedUser.user.createdAt.getTime() - new Date().getTime()) / + (24 * 60 * 60 * 1000) + ) + ); + const userDaysGuild = Math.round( + Math.abs( + (mentionedUser.joinedAt.getTime() - new Date().getTime()) / + (24 * 60 * 60 * 1000) + ) + ); + var userStatus; + var userStatusEmoji; + + switch (mentionedUser.presence.status) { + case 'online': + userStatus = language.generic.status.online; + userStatusEmoji = emoji.online; + break; + case 'idle': + userStatus = language.generic.status.idle; + userStatusEmoji = emoji.idle; + break; + case 'dnd': + userStatus = language.generic.status.dnd; + userStatusEmoji = emoji.dnd; + break; + case 'offline': + userStatus = language.generic.status.offline; + userStatusEmoji = emoji.offline; + break; + default: + userStatus = undefined; + } + + let userAdminServer; + if (mentionedUser.hasPermission('ADMINISTRATOR') === true) + userAdminServer = 'Sim'; + if (mentionedUser.hasPermission('ADMINISTRATOR') === false) + userAdminServer = 'Não'; + + let userAvatar = mentionedUser.user.displayAvatarURL; + if (userAvatar.endsWith('.gif')) { + userAvatar = `${mentionedUser.user.displayAvatarURL}?size=2048`; + } + + var stringtime1; + switch (userDaysDiscord) { + case 1: + stringtime1 = language.userinfo.generic.days; + break; + default: + stringtime1 = language.userinfo.generic.day; + break; + } + + var stringtime2; + switch (userDaysGuild) { + case 1: + stringtime2 = language.userinfo.generic.days; + break; + default: + stringtime2 = language.userinfo.generic.day; + break; + } + + var userBoost = ''; + + const premium = message.guild.member(mentionedUser.user).premiumSinceTimestamp; + + if (premium !== null) { + userBoost = `\n\n(${emoji.nitro}) **Impulsionando Desde:** ${dateFormat(message.guild.member(message.author).premiumSinceTimestamp, 'dd/mm/yyyy "às" HH:MM:ss')}`; + } + + const accountCreated = dateFormat(mentionedUser.user.createdTimestamp, 'dd/mm/yyyy "às" HH:MM:ss'); + const joinedIn = dateFormat(mentionedUser.joinedTimestamp, 'dd/mm/yyyy "às" HH:MM:ss'); + + const embed = new Discord.RichEmbed() + .setAuthor(`${mentionedUser.user.username}`, `${userAvatar}`) + .addField('Informações do Usuário', ` + 🙋 **Nome:** \`${mentionedUser.user.username}\` + + ${emoji.menu} **Tag Completa:** \`${mentionedUser.user.tag}\` + + **Id:** \`${mentionedUser.user.id}\` + + ${userStatusEmoji} **Status:** \`${userStatus}\` + + ${emoji.pass} **Criou a Conta Em:** \`${accountCreated}\` (${userDaysDiscord} ${stringtime1} atrás)`, false) + .addField('Informações do Membro', ` + (${emoji.discord}) **Apelido:** \`${userNickName}\` + + (👮) **É Administrador:** \`${userAdminServer}\` + + (:date:) **Entrou Em:** \`${joinedIn}\` (${userDaysGuild} ${stringtime2} atrás)${userBoost} + `, false) + .setFooter(language.generic.embed.footer2.replace('[usertag]', message.author.tag)) + .setThumbnail(userAvatar) + .setColor('#56eaf5') + .setTimestamp(); + + message.channel.send(embed); +}; +exports.config = { + name: 'userinfo', + aliases: [], + category: `${emoji.robot} Utilidades`, + public: true +}; From 1b33700bc248eff8c95d76c35af841eafa458351 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Thu, 7 Jan 2021 17:30:51 -0300 Subject: [PATCH 147/164] Language string fix --- src/Commands/dice.js | 286 ++++++++++++++--------------- src/Events/message.js | 414 +++++++++++++++++++++--------------------- 2 files changed, 347 insertions(+), 353 deletions(-) diff --git a/src/Commands/dice.js b/src/Commands/dice.js index a4bed2b..94f89b4 100644 --- a/src/Commands/dice.js +++ b/src/Commands/dice.js @@ -1,143 +1,143 @@ -/* - This File is part of ArunaBot - Copyright (C) LoboMetalurgico (and contributors) 2019-2020 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ - -const Discord = require('discord.js'); -const { config } = require('../../Configs'); -var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); - -exports.run = async (aruna, message, args, langc, prefix, comando) => { - if (langc) { - language = langc; - } - const error1 = new Discord.RichEmbed() - .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) - .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) - .setDescription(language.dice.embed.error.description1) - .setTimestamp(); - - const error2 = new Discord.RichEmbed() - .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) - .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) - .setDescription(language.dice.embed.error.description2) - .setTimestamp(); - - const error3 = new Discord.RichEmbed() - .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) - .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) - .setDescription(language.dice.embed.error.description3) - .setTimestamp(); - - const error4 = new Discord.RichEmbed() - .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) - .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) - .setDescription(language.dice.embed.error.description4) - .setTimestamp(); - - const error5 = new Discord.RichEmbed() - .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) - .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) - .setDescription(language.dice.embed.error.description5) - .setTimestamp(); - - const error6 = new Discord.RichEmbed() - .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) - .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) - .setDescription(language.dice.embed.error.description6) - .setTimestamp(); - - const error7 = new Discord.RichEmbed() - .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) - .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) - .setDescription(language.dice.embed.error.description7) - .setTimestamp(); - - if (!args[0]) return message.channel.send(error5); - - const split = message.content - .slice(comando.length + prefix.length) - .trim() - .split('d' || 'D' || ' '); - - if (!split) return message.channel.send(error5); - - var number = split[0]; - - if (!number) return message.channel.send(error5); - - const dice = split[1]; - - if (!dice) return message.channel.send(error1); - - if (dice > 200) return message.channel.send(error2); - - if (number > 50) return message.channel.send(error3); - - if (dice == 0) return message.channel.send(error6); - - if (number == 0) return message.channel.send(error7); - - var diceStr = number == 1 ? language.dice.embed.generic.dice : language.dice.embed.generic.dices; - - const error8 = new Discord.RichEmbed() - .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) - .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) - .setDescription(language.dice.embed.error.description8.replace(/\[NUMBER\]/g, number).replace('[diceString]', diceStr)) - .setTimestamp(); - - if (dice == 1) return message.channel.send(error8); - - var result = []; - - var loop = number; - var embed = new Discord.RichEmbed() - .setFooter(language.generic.embed.footer.replace('[usertag]', message.author.tag)) - .setTimestamp(); - - var idVar = setInterval(() => { - if (loop <= 0) { - if (number > 1) { - embed.setAuthor(language.dice.embed.sucess['1'].title.replace('[username]', message.member.displayName).replace('[NUMBER]', number).replace('[DICE]', dice), - message.author.avatarURL) - .setDescription(language.dice.embed.sucess['1'].description.replace('[DICES]', result.join(', ')).replace('[TOTAL]', result.reduce((a, b) => a + b))); - } else { - embed.setAuthor(language.dice.embed.sucess['2'].title.replace('[username]', message.member.displayName).replace('[DICE]', dice), message.author.avatarURL) - .setDescription(language.dice.embed.sucess['2'].description.replace('[DICES]', result[0])); - } - clearInterval(idVar); - return message.channel.send(embed); - } - - loop = loop - 1; - - var math = Math.floor(Math.random() * dice) + 1; - - if (math >= 500) { - clearInterval(idVar); - return message.channel.send(error4); - } - - result.push(math); - }, 0,1); -}; -exports.config = { - name: 'dice', - aliases: ['dado'], - description: language.dice.config.description, - category: '🎉 Entretenimento', - public: true -}; +/* + This File is part of ArunaBot + Copyright (C) LoboMetalurgico (and contributors) 2019-2020 + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +const Discord = require('discord.js'); +const { config } = require('../../Configs'); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); + +exports.run = async (aruna, message, args, langc, prefix, comando) => { + if (langc) { + language = langc; + } + const error1 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.dice.embed.error.description1) + .setTimestamp(); + + const error2 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.dice.embed.error.description2) + .setTimestamp(); + + const error3 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.dice.embed.error.description3) + .setTimestamp(); + + const error4 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.dice.embed.error.description4) + .setTimestamp(); + + const error5 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.dice.embed.error.description5) + .setTimestamp(); + + const error6 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.dice.embed.error.description6) + .setTimestamp(); + + const error7 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.dice.embed.error.description7) + .setTimestamp(); + + if (!args[0]) return message.channel.send(error5); + + const split = message.content + .slice(comando.length + prefix.length) + .trim() + .split('d' || 'D' || ' '); + + if (!split) return message.channel.send(error5); + + var number = split[0]; + + if (!number) return message.channel.send(error5); + + const dice = split[1]; + + if (!dice) return message.channel.send(error1); + + if (dice > 200) return message.channel.send(error2); + + if (number > 50) return message.channel.send(error3); + + if (dice == 0) return message.channel.send(error6); + + if (number == 0) return message.channel.send(error7); + + var diceStr = number == 1 ? language.dice.embed.generic.dice : language.dice.embed.generic.dices; + + const error8 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.dice.embed.error.description8.replace(/\[NUMBER\]/g, number).replace('[diceString]', diceStr)) + .setTimestamp(); + + if (dice == 1) return message.channel.send(error8); + + var result = []; + + var loop = number; + var embed = new Discord.RichEmbed() + .setFooter(language.generic.embed.footer.replace('[usertag]', message.author.tag)) + .setTimestamp(); + + var idVar = setInterval(() => { + if (loop <= 0) { + if (number > 1) { + embed.setAuthor(language.dice.embed.sucess['1'].title.replace('[username]', message.member.displayName).replace('[NUMBER]', number).replace('[DICE]', dice), + message.author.avatarURL) + .setDescription(language.dice.embed.sucess['1'].description.replace('[DICES]', result.join(', ')).replace('[TOTAL]', result.reduce((a, b) => a + b))); + } else { + embed.setAuthor(language.dice.embed.sucess['2'].title.replace('[username]', message.member.displayName).replace('[DICE]', dice), message.author.avatarURL) + .setDescription(language.dice.embed.sucess['2'].description.replace('[DICES]', result[0])); + } + clearInterval(idVar); + return message.channel.send(embed); + } + + loop = loop - 1; + + var math = Math.floor(Math.random() * dice) + 1; + + if (math >= 500) { + clearInterval(idVar); + return message.channel.send(error4); + } + + result.push(math); + }, 0,1); +}; +exports.config = { + name: 'dice', + aliases: ['dado', 'roll'], + description: language.dice.config.description, + category: '🎉 Entretenimento', + public: true +}; diff --git a/src/Events/message.js b/src/Events/message.js index 387e03e..3eb85fe 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -1,210 +1,204 @@ -/* eslint-disable max-len */ -/* - This File is part of ArunaBot - Copyright (C) LoboMetalurgico (and contributors) 2019-2020 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ - -const Discord = require('discord.js'); -const chalk = require('chalk'); -var { database, config, links } = require('../../Configs'); -const { cooldown, utils } = require('../Utils'); - -exports.run = async (aruna, message) => { - const langI = require(`../../languages/bot/${config.language}/internal.json`); - if (message.author.bot) return; - - if (message.channel.type == 'dm') { - const dmUser = await database.Users.findOne({ _id: message.author.id }); - if (!dmUser) { - return message.reply(langI.message.errors.dmError); - } else { - var dmEventL; - if (dmUser.language == null) { - dmEventL = langI; - } else { - dmEventL = require(`../../languages/bot/${dmUser.language}/internal.json`); - } - return message.reply(dmEventL.message.errors.dmError); - } - } - - var guild = await database.Guilds.findOne({ _id: message.guild.id }); - var user = await database.Users.findOne({ _id: message.author.id }); - if (!guild) { - var language; - if (message.guild.region == 'brazil') { - language = 'br'; - } else { - language = config.defaultLanguage; - } - debug('No Server!'); - var saveG = new database.Guilds({ - _id: message.guild.id, - language: language - }); - await saveG.save(); - guild = await database.Guilds.findOne({ _id: message.guild.id }); - } - - if (!user) { - debug('No User!'); - var isSuper = false; - if (config.superUsersId.includes(message.author.id)) { - isSuper = true; - } - var saveU = new database.Users({ _id: message.author.id, SUPER: isSuper }); - await saveU.save(); - user = await database.Users.findOne({ _id: message.author.id }); - } - - var prefix = guild.prefix || config.prefix; - - if (user.language !== guild.language && user.language !== null) { - language = user.language; - } else { - language = language || guild.language; - } - - const lang = require(`../../languages/bot/${language || config.defaultLanguage}/events.json`); - const langc = require(`../../languages/bot/${language || config.defaultLanguage}/commands.json`); - - const emojiError = lang.message.errors.emojiError.replace('[externalEmojis]', langc.generic.permissions.useExternalEmojis); - const linkError = lang.message.errors.linkError.replace('[sendLinks]', langc.generic.permissions.embedLinks); - - const mention = [`<@${aruna.user.id}>`, `<@!${aruna.user.id}>`]; - - mention.find(mention => { - if (message.content === mention) { - if (!message.guild.members.get(aruna.user.id).hasPermission('USE_EXTERNAL_EMOJIS')) { - return message.reply(emojiError); - } else if (!message.guild.members.get(aruna.user.id).hasPermission('EMBED_LINKS')) { - return message.reply(linkError); - } - const embed = new Discord.RichEmbed() - .setTitle(lang.message.mention.title) - .setDescription( - `${lang.message.mention.line1.replace('[username]', message.author.username).replace('[me]', aruna.user.username)}\n - ${lang.message.mention.line2}\n - ${lang.message.mention.line3.replace('[prefix]', prefix)}\n\n - ${lang.message.mention.line4.replace('[url]', links.supportServers[0])}\n\n - ${lang.message.mention.line5.replace('[url]', links.invites[0])}\n\n - ${lang.message.mention.line6}` - ) - .setColor('#8400ff') - .setTimestamp(); - return message.channel.send(embed); - } - }); - - if (guild.rankEnable) { - const rank = await database.Rank.findOne({ - _id: `${message.author.id}-${message.guild.id}` - }); - - if (!rank) { - var saveR = new database.Rank({ - _id: `${message.author.id}-${message.guild.id}`, - user: message.author.id, - xp: 0, - level: 0, - guild: message.guild.id - }); - - await saveR.save(); - } - const db = database; - - const xpsystem = require('../utils/rankSystem.js'); - await xpsystem.run(aruna, message, lang, langc, db, cooldown, utils, Discord); - } - - if (message.content.startsWith(prefix)) { - if (message.content === prefix) return; - - const args = message.content - .slice(prefix.length) - .trim() - .split(/ +/g); - const command = args.shift().toLowerCase(); - const ma = message.content.split(' '); - const cmd = ma[0]; - if (cmd == prefix || cmd.slice(prefix.length).length < 2) return; - const commandFile = - aruna.commands.get(cmd.slice(prefix.length).toLowerCase()) || - aruna.commands.get(aruna.aliases.get(cmd.slice(prefix.length).toLowerCase())); - - if (commandFile) { - if (!message.guild.members.get(aruna.user.id).hasPermission('USE_EXTERNAL_EMOJIS')) { - return message.reply(emojiError); - } else if (!message.guild.members.get(aruna.user.id).hasPermission('EMBED_LINKS')) { - return message.reply(linkError); - } else if (!user.SUPER && !commandFile.config.public) { - const denied = new Discord.RichEmbed() - .setAuthor(langc.generic.embed.denied.title, message.author.avatarURL) - .setDescription(`${langc.generic.embed.denied.description.line1.replace('[username]', message.member.displayName).replace('[command]', command)}\n - ${langc.generic.embed.denied.description.line2.replace('[prefix]', prefix)}`) - .setFooter(langc.generic.embed.denied.footer) - .setTimestamp(); - return message.channel.send(denied); - } - commandFile.run(aruna, message, args, langc, prefix, command); - } else if (!commandFile) { - const alts = - aruna.commands - .filter(c => - c.config.name.startsWith(cmd.slice(prefix.length).toLowerCase()) - ) - .map(a => `${prefix}${a.config.name}`) - .join(', ') || undefined; - - if (alts !== undefined) { - message.reply(lang.message.errors.commandNotFound.replace('[command]', command).replace('[alt]', alts)).then(async msg => { - setTimeout(() => { - msg.delete(); - }, 30000); - }); - } - } - } - function logPrefix() { - return `${chalk.gray('[')}${isSharded() ? `${langI.generic.shard} ${chalk.blue(aruna.shard.id)}` : aruna.user.username}${chalk.gray(']')}`; - } - - // eslint-disable-next-line no-unused-vars - function log(...a) { - return console.log(logPrefix(), ...a); - } - - // eslint-disable-next-line no-unused-vars - function warn(...a) { - return console.warn(logPrefix(), chalk.yellow(...a)); - } - - // eslint-disable-next-line no-unused-vars - function error(...a) { - return console.error(logPrefix(), chalk.red(...a)); - } - - function debug(...a) { - if (config.debug) { - return console.debug(logPrefix(), chalk.magenta(...a)); - } else return; - } - - function isSharded() { - return !!aruna.shard; - } -}; +/* eslint-disable max-len */ +/* + This File is part of ArunaBot + Copyright (C) LoboMetalurgico (and contributors) 2019-2020 + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +const Discord = require('discord.js'); +const chalk = require('chalk'); +var { database, config, links } = require('../../Configs'); +const { cooldown, utils } = require('../Utils'); + +exports.run = async (aruna, message) => { + if (message.author.bot) return; + + if (message.channel.type == 'dm') { + const dmUser = await database.Users.findOne({ _id: message.author.id }); + + const dmLang = require(`../../languages/bot/${dmUser.language || config.defaultLanguage}/events.json`); + + return message.reply(dmLang.message.errors.dmError); + } + + var guild = await database.Guilds.findOne({ _id: message.guild.id }); + var user = await database.Users.findOne({ _id: message.author.id }); + + if (!guild) { + var language; + if (message.guild.region == 'brazil') { + language = 'br'; + } else { + language = config.defaultLanguage; + } + debug('No Server!'); + var saveG = new database.Guilds({ + _id: message.guild.id, + language: language + }); + await saveG.save(); + guild = await database.Guilds.findOne({ _id: message.guild.id }); + } + + if (!user) { + debug('No User!'); + var isSuper = false; + if (config.superUsersId.includes(message.author.id)) { + isSuper = true; + } + var saveU = new database.Users({ _id: message.author.id, SUPER: isSuper }); + await saveU.save(); + user = await database.Users.findOne({ _id: message.author.id }); + } + + var prefix = guild.prefix || config.prefix; + + if (user.language !== guild.language && user.language !== null) { + language = user.language; + } else { + language = language || guild.language; + } + + const lang = require(`../../languages/bot/${language || config.defaultLanguage}/events.json`); + const langI = require(`../../languages/bot/${config.language}/internal.json`); + const langc = require(`../../languages/bot/${language || config.defaultLanguage}/commands.json`); + + const emojiError = lang.message.errors.emojiError.replace('[externalEmojis]', langc.generic.permissions.useExternalEmojis); + const linkError = lang.message.errors.linkError.replace('[sendLinks]', langc.generic.permissions.embedLinks); + + const mention = [`<@${aruna.user.id}>`, `<@!${aruna.user.id}>`]; + + mention.find(mention => { + if (message.content === mention) { + if (!message.guild.members.get(aruna.user.id).hasPermission('USE_EXTERNAL_EMOJIS')) { + return message.reply(emojiError); + } else if (!message.guild.members.get(aruna.user.id).hasPermission('EMBED_LINKS')) { + return message.reply(linkError); + } + const embed = new Discord.RichEmbed() + .setTitle(lang.message.mention.title) + .setDescription( + `${lang.message.mention.line1.replace('[username]', message.author.username).replace('[me]', aruna.user.username)}\n + ${lang.message.mention.line2}\n + ${lang.message.mention.line3.replace('[prefix]', prefix)}\n\n + ${lang.message.mention.line4.replace('[url]', links.supportServers[0])}\n\n + ${lang.message.mention.line5.replace('[url]', links.invites[0])}\n\n + ${lang.message.mention.line6}` + ) + .setColor('#8400ff') + .setTimestamp(); + return message.channel.send(embed); + } + }); + + if (guild.rankEnable) { + const rank = await database.Rank.findOne({ + _id: `${message.author.id}-${message.guild.id}` + }); + + if (!rank) { + var saveR = new database.Rank({ + _id: `${message.author.id}-${message.guild.id}`, + user: message.author.id, + xp: 0, + level: 0, + guild: message.guild.id + }); + + await saveR.save(); + } + const db = database; + + const xpsystem = require('../utils/rankSystem.js'); + await xpsystem.run(aruna, message, lang, langc, db, cooldown, utils, Discord); + } + + if (message.content.startsWith(prefix)) { + if (message.content === prefix) return; + + const args = message.content + .slice(prefix.length) + .trim() + .split(/ +/g); + const command = args.shift().toLowerCase(); + const ma = message.content.split(' '); + const cmd = ma[0]; + if (cmd == prefix || cmd.slice(prefix.length).length < 2) return; + const commandFile = + aruna.commands.get(cmd.slice(prefix.length).toLowerCase()) || + aruna.commands.get(aruna.aliases.get(cmd.slice(prefix.length).toLowerCase())); + + if (commandFile) { + if (!message.guild.members.get(aruna.user.id).hasPermission('USE_EXTERNAL_EMOJIS')) { + return message.reply(emojiError); + } else if (!message.guild.members.get(aruna.user.id).hasPermission('EMBED_LINKS')) { + return message.reply(linkError); + } else if (!user.SUPER && !commandFile.config.public) { + const denied = new Discord.RichEmbed() + .setAuthor(langc.generic.embed.denied.title, message.author.avatarURL) + .setDescription(`${langc.generic.embed.denied.description.line1.replace('[username]', message.member.displayName).replace('[command]', command)}\n + ${langc.generic.embed.denied.description.line2.replace('[prefix]', prefix)}`) + .setFooter(langc.generic.embed.denied.footer) + .setTimestamp(); + return message.channel.send(denied); + } + commandFile.run(aruna, message, args, langc, prefix, command); + } else if (!commandFile) { + const alts = + aruna.commands + .filter(c => + c.config.name.startsWith(cmd.slice(prefix.length).toLowerCase()) + ) + .map(a => `${prefix}${a.config.name}`) + .join(', ') || undefined; + + if (alts !== undefined) { + message.reply(lang.message.errors.commandNotFound.replace('[command]', command).replace('[alt]', alts)).then(async msg => { + setTimeout(() => { + msg.delete(); + }, 30000); + }); + } + } + } + function logPrefix() { + return `${chalk.gray('[')}${isSharded() ? `${langI.generic.shard} ${chalk.blue(aruna.shard.id)}` : aruna.user.username}${chalk.gray(']')}`; + } + + // eslint-disable-next-line no-unused-vars + function log(...a) { + return console.log(logPrefix(), ...a); + } + + // eslint-disable-next-line no-unused-vars + function warn(...a) { + return console.warn(logPrefix(), chalk.yellow(...a)); + } + + // eslint-disable-next-line no-unused-vars + function error(...a) { + return console.error(logPrefix(), chalk.red(...a)); + } + + function debug(...a) { + if (config.debug) { + return console.debug(logPrefix(), chalk.magenta(...a)); + } else return; + } + + function isSharded() { + return !!aruna.shard; + } +}; From f40f188836109880a862c671b483425cb8ecacf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sat, 9 Jan 2021 03:02:29 -0300 Subject: [PATCH 148/164] Ship Command Localization --- languages | 2 +- package-lock.json | 6017 +++++++++++++++++++++------------------- package.json | 103 +- src/Commands/avatar.js | 98 +- src/Commands/ship.js | 247 +- src/sharding.js | 102 +- 6 files changed, 3400 insertions(+), 3169 deletions(-) diff --git a/languages b/languages index 5c69c08..bee4e8d 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 5c69c08b0a58989ba47082f9ce0ab6a040e1d7a8 +Subproject commit bee4e8ddb8d35cec6bfea91d64eeee68f8ed2c59 diff --git a/package-lock.json b/package-lock.json index 0c8b0ee..249c733 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,2897 +1,3120 @@ -{ - "name": "arunabot", - "version": "4.3.0-CANARY", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true - }, - "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/runtime": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", - "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@derhuerst/http-basic": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@derhuerst/http-basic/-/http-basic-8.2.1.tgz", - "integrity": "sha512-Rmn7qQQulw2sxJ8qGfZ7OuqMWuhz8V+L5xnYKMF5cXVcYqmgWqlVEAme90pF7Ya8OVhxVxLmhh0rI2k6t7ITWw==", - "requires": { - "caseless": "^0.12.0", - "concat-stream": "^1.6.2", - "http-response-object": "^3.0.1", - "parse-cache-control": "^1.0.1" - } - }, - "@discordjs/node-pre-gyp": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@discordjs/node-pre-gyp/-/node-pre-gyp-0.1.0.tgz", - "integrity": "sha512-6u3EbK2x+j9bM3iK9/pE7BWLxOXZ1PvcsbDo3ZBdPocu95qPHj8zCVsBBk3Cao7V6o8QpwxUyJl6oVJ6T3ZgAg==", - "requires": { - "detect-libc": "^1.0.3", - "mkdirp": "^0.5.5", - "needle": "^2.4.1", - "nopt": "^4.0.3", - "npm-packlist": "^1.4.8", - "npmlog": "^4.1.2", - "rc": "^1.2.8", - "rimraf": "^3.0.2", - "semver": "^7.3.0", - "tar": "^6.0.2" - } - }, - "@discordjs/opus": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@discordjs/opus/-/opus-0.3.3.tgz", - "integrity": "sha512-n3hUs4RY0K8cz8vJ2GiZE4EdJlexoxs1vGsaft5lZlAnU6wsZfncpv4px+HVOMKN8ddtjriGfsrG4lVkAyZcmQ==", - "requires": { - "@discordjs/node-pre-gyp": "^0.1.0", - "node-addon-api": "^3.0.2" - } - }, - "@eslint/eslintrc": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", - "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "lodash": "^4.17.19", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - } - } - }, - "@jimp/bmp": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.1.tgz", - "integrity": "sha512-iwyNYQeBawrdg/f24x3pQ5rEx+/GwjZcCXd3Kgc+ZUd+Ivia7sIqBsOnDaMZdKCBPlfW364ekexnlOqyVa0NWg==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1", - "bmp-js": "^0.1.0" - } - }, - "@jimp/core": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.1.tgz", - "integrity": "sha512-la7kQia31V6kQ4q1kI/uLimu8FXx7imWVajDGtwUG8fzePLWDFJyZl0fdIXVCL1JW2nBcRHidUot6jvlRDi2+g==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1", - "any-base": "^1.1.0", - "buffer": "^5.2.0", - "exif-parser": "^0.1.12", - "file-type": "^9.0.0", - "load-bmfont": "^1.3.1", - "mkdirp": "^0.5.1", - "phin": "^2.9.1", - "pixelmatch": "^4.0.2", - "tinycolor2": "^1.4.1" - } - }, - "@jimp/custom": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.1.tgz", - "integrity": "sha512-DNUAHNSiUI/j9hmbatD6WN/EBIyeq4AO0frl5ETtt51VN1SvE4t4v83ZA/V6ikxEf3hxLju4tQ5Pc3zmZkN/3A==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/core": "^0.16.1" - } - }, - "@jimp/gif": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.1.tgz", - "integrity": "sha512-r/1+GzIW1D5zrP4tNrfW+3y4vqD935WBXSc8X/wm23QTY9aJO9Lw6PEdzpYCEY+SOklIFKaJYUAq/Nvgm/9ryw==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1", - "gifwrap": "^0.9.2", - "omggif": "^1.0.9" - } - }, - "@jimp/jpeg": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.1.tgz", - "integrity": "sha512-8352zrdlCCLFdZ/J+JjBslDvml+fS3Z8gttdml0We759PnnZGqrnPRhkOEOJbNUlE+dD4ckLeIe6NPxlS/7U+w==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1", - "jpeg-js": "0.4.2" - } - }, - "@jimp/plugin-blit": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.1.tgz", - "integrity": "sha512-fKFNARm32RoLSokJ8WZXHHH2CGzz6ire2n1Jh6u+XQLhk9TweT1DcLHIXwQMh8oR12KgjbgsMGvrMVlVknmOAg==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" - } - }, - "@jimp/plugin-blur": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.1.tgz", - "integrity": "sha512-1WhuLGGj9MypFKRcPvmW45ht7nXkOKu+lg3n2VBzIB7r4kKNVchuI59bXaCYQumOLEqVK7JdB4glaDAbCQCLyw==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" - } - }, - "@jimp/plugin-circle": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.1.tgz", - "integrity": "sha512-JK7yi1CIU7/XL8hdahjcbGA3V7c+F+Iw+mhMQhLEi7Q0tCnZ69YJBTamMiNg3fWPVfMuvWJJKOBRVpwNTuaZRg==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" - } - }, - "@jimp/plugin-color": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.1.tgz", - "integrity": "sha512-9yQttBAO5SEFj7S6nJK54f+1BnuBG4c28q+iyzm1JjtnehjqMg6Ljw4gCSDCvoCQ3jBSYHN66pmwTV74SU1B7A==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1", - "tinycolor2": "^1.4.1" - } - }, - "@jimp/plugin-contain": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.1.tgz", - "integrity": "sha512-44F3dUIjBDHN+Ym/vEfg+jtjMjAqd2uw9nssN67/n4FdpuZUVs7E7wadKY1RRNuJO+WgcD5aDQcsvurXMETQTg==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" - } - }, - "@jimp/plugin-cover": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.1.tgz", - "integrity": "sha512-YztWCIldBAVo0zxcQXR+a/uk3/TtYnpKU2CanOPJ7baIuDlWPsG+YE4xTsswZZc12H9Kl7CiziEbDtvF9kwA/Q==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" - } - }, - "@jimp/plugin-crop": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.1.tgz", - "integrity": "sha512-UQdva9oQzCVadkyo3T5Tv2CUZbf0klm2cD4cWMlASuTOYgaGaFHhT9st+kmfvXjKL8q3STkBu/zUPV6PbuV3ew==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" - } - }, - "@jimp/plugin-displace": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.1.tgz", - "integrity": "sha512-iVAWuz2+G6Heu8gVZksUz+4hQYpR4R0R/RtBzpWEl8ItBe7O6QjORAkhxzg+WdYLL2A/Yd4ekTpvK0/qW8hTVw==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" - } - }, - "@jimp/plugin-dither": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.1.tgz", - "integrity": "sha512-tADKVd+HDC9EhJRUDwMvzBXPz4GLoU6s5P7xkVq46tskExYSptgj5713J5Thj3NMgH9Rsqu22jNg1H/7tr3V9Q==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" - } - }, - "@jimp/plugin-fisheye": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.1.tgz", - "integrity": "sha512-BWHnc5hVobviTyIRHhIy9VxI1ACf4CeSuCfURB6JZm87YuyvgQh5aX5UDKtOz/3haMHXBLP61ZBxlNpMD8CG4A==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" - } - }, - "@jimp/plugin-flip": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.1.tgz", - "integrity": "sha512-KdxTf0zErfZ8DyHkImDTnQBuHby+a5YFdoKI/G3GpBl3qxLBvC+PWkS2F/iN3H7wszP7/TKxTEvWL927pypT0w==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" - } - }, - "@jimp/plugin-gaussian": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.1.tgz", - "integrity": "sha512-u9n4wjskh3N1mSqketbL6tVcLU2S5TEaFPR40K6TDv4phPLZALi1Of7reUmYpVm8mBDHt1I6kGhuCJiWvzfGyg==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" - } - }, - "@jimp/plugin-invert": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.1.tgz", - "integrity": "sha512-2DKuyVXANH8WDpW9NG+PYFbehzJfweZszFYyxcaewaPLN0GxvxVLOGOPP1NuUTcHkOdMFbE0nHDuB7f+sYF/2w==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" - } - }, - "@jimp/plugin-mask": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.1.tgz", - "integrity": "sha512-snfiqHlVuj4bSFS0v96vo2PpqCDMe4JB+O++sMo5jF5mvGcGL6AIeLo8cYqPNpdO6BZpBJ8MY5El0Veckhr39Q==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" - } - }, - "@jimp/plugin-normalize": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.1.tgz", - "integrity": "sha512-dOQfIOvGLKDKXPU8xXWzaUeB0nvkosHw6Xg1WhS1Z5Q0PazByhaxOQkSKgUryNN/H+X7UdbDvlyh/yHf3ITRaw==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" - } - }, - "@jimp/plugin-print": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.1.tgz", - "integrity": "sha512-ceWgYN40jbN4cWRxixym+csyVymvrryuKBQ+zoIvN5iE6OyS+2d7Mn4zlNgumSczb9GGyZZESIgVcBDA1ezq0Q==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1", - "load-bmfont": "^1.4.0" - } - }, - "@jimp/plugin-resize": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.1.tgz", - "integrity": "sha512-u4JBLdRI7dargC04p2Ha24kofQBk3vhaf0q8FwSYgnCRwxfvh2RxvhJZk9H7Q91JZp6wgjz/SjvEAYjGCEgAwQ==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" - } - }, - "@jimp/plugin-rotate": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.1.tgz", - "integrity": "sha512-ZUU415gDQ0VjYutmVgAYYxC9Og9ixu2jAGMCU54mSMfuIlmohYfwARQmI7h4QB84M76c9hVLdONWjuo+rip/zg==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" - } - }, - "@jimp/plugin-scale": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.1.tgz", - "integrity": "sha512-jM2QlgThIDIc4rcyughD5O7sOYezxdafg/2Xtd1csfK3z6fba3asxDwthqPZAgitrLgiKBDp6XfzC07Y/CefUw==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" - } - }, - "@jimp/plugin-shadow": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.1.tgz", - "integrity": "sha512-MeD2Is17oKzXLnsphAa1sDstTu6nxscugxAEk3ji0GV1FohCvpHBcec0nAq6/czg4WzqfDts+fcPfC79qWmqrA==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" - } - }, - "@jimp/plugin-threshold": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.1.tgz", - "integrity": "sha512-iGW8U/wiCSR0+6syrPioVGoSzQFt4Z91SsCRbgNKTAk7D+XQv6OI78jvvYg4o0c2FOlwGhqz147HZV5utoSLxA==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" - } - }, - "@jimp/plugins": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.1.tgz", - "integrity": "sha512-c+lCqa25b+4q6mJZSetlxhMoYuiltyS+ValLzdwK/47+aYsq+kcJNl+TuxIEKf59yr9+5rkbpsPkZHLF/V7FFA==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/plugin-blit": "^0.16.1", - "@jimp/plugin-blur": "^0.16.1", - "@jimp/plugin-circle": "^0.16.1", - "@jimp/plugin-color": "^0.16.1", - "@jimp/plugin-contain": "^0.16.1", - "@jimp/plugin-cover": "^0.16.1", - "@jimp/plugin-crop": "^0.16.1", - "@jimp/plugin-displace": "^0.16.1", - "@jimp/plugin-dither": "^0.16.1", - "@jimp/plugin-fisheye": "^0.16.1", - "@jimp/plugin-flip": "^0.16.1", - "@jimp/plugin-gaussian": "^0.16.1", - "@jimp/plugin-invert": "^0.16.1", - "@jimp/plugin-mask": "^0.16.1", - "@jimp/plugin-normalize": "^0.16.1", - "@jimp/plugin-print": "^0.16.1", - "@jimp/plugin-resize": "^0.16.1", - "@jimp/plugin-rotate": "^0.16.1", - "@jimp/plugin-scale": "^0.16.1", - "@jimp/plugin-shadow": "^0.16.1", - "@jimp/plugin-threshold": "^0.16.1", - "timm": "^1.6.1" - } - }, - "@jimp/png": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.1.tgz", - "integrity": "sha512-iyWoCxEBTW0OUWWn6SveD4LePW89kO7ZOy5sCfYeDM/oTPLpR8iMIGvZpZUz1b8kvzFr27vPst4E5rJhGjwsdw==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1", - "pngjs": "^3.3.3" - } - }, - "@jimp/tiff": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.1.tgz", - "integrity": "sha512-3K3+xpJS79RmSkAvFMgqY5dhSB+/sxhwTFA9f4AVHUK0oKW+u6r52Z1L0tMXHnpbAdR9EJ+xaAl2D4x19XShkQ==", - "requires": { - "@babel/runtime": "^7.7.2", - "utif": "^2.0.1" - } - }, - "@jimp/types": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.1.tgz", - "integrity": "sha512-g1w/+NfWqiVW4CaXSJyD28JQqZtm2eyKMWPhBBDCJN9nLCN12/Az0WFF3JUAktzdsEC2KRN2AqB1a2oMZBNgSQ==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/bmp": "^0.16.1", - "@jimp/gif": "^0.16.1", - "@jimp/jpeg": "^0.16.1", - "@jimp/png": "^0.16.1", - "@jimp/tiff": "^0.16.1", - "timm": "^1.6.1" - } - }, - "@jimp/utils": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.1.tgz", - "integrity": "sha512-8fULQjB0x4LzUSiSYG6ZtQl355sZjxbv8r9PPAuYHzS9sGiSHJQavNqK/nKnpDsVkU88/vRGcE7t3nMU0dEnVw==", - "requires": { - "@babel/runtime": "^7.7.2", - "regenerator-runtime": "^0.13.3" - } - }, - "@types/bson": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.3.tgz", - "integrity": "sha512-mVRvYnTOZJz3ccpxhr3wgxVmSeiYinW+zlzQz3SXWaJmD1DuL05Jeq7nKw3SnbKmbleW5qrLG5vdyWe/A9sXhw==", - "requires": { - "@types/node": "*" - } - }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" - }, - "@types/mongodb": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.3.tgz", - "integrity": "sha512-6YNqGP1hk5bjUFaim+QoFFuI61WjHiHE1BNeB41TA00Xd2K7zG4lcWyLLq/XtIp36uMavvS5hoAUJ+1u/GcX2Q==", - "requires": { - "@types/bson": "*", - "@types/node": "*" - } - }, - "@types/node": { - "version": "14.14.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.16.tgz", - "integrity": "sha512-naXYePhweTi+BMv11TgioE2/FXU4fSl29HAH1ffxVciNsH3rYXjNP2yM8wqmSm7jS20gM8TIklKiTen+1iVncw==" - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - } - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "any-base": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", - "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "bl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", - "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", - "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" - }, - "bmp-js": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", - "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=" - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "bson": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.5.tgz", - "integrity": "sha512-kDuEzldR21lHciPQAIulLs1LZlCXdLziXI6Mb/TDkwXhb//UORJNPXgcRs2CuO4H0DcMkpfT3/ySsP3unoZjBg==" - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=" - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" - }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "complex.js": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.0.11.tgz", - "integrity": "sha512-6IArJLApNtdg1P1dFtn3dnyzoZBEF0MwMnrfF1exSBRpZYoy4yieMkpZhQDC0uwctw48vii0CFVyHfpgZ/DfGw==" - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { - "safe-buffer": "5.1.2" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "dateformat": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.4.1.tgz", - "integrity": "sha512-3V9b/50QBYmFtd2c3cPOmdr2xNfnDphoBLxh/UVBoPIsylWkbUYGq3f4EQYuEaK7Mq4vcIpQCmOyJ37pqW/Uug==" - }, - "dblapi.js": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/dblapi.js/-/dblapi.js-2.4.1.tgz", - "integrity": "sha512-g+u1inF/qOLit5qPK4hBGk5pKL1vy09uBLV+nukkRMvw2S9D1PyiyO70n4fboUXOgbExPp6Sho/Y782OqQOUiQ==" - }, - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "decimal.js": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", - "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==" - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, - "denque": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz", - "integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==" - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" - }, - "discord.js": { - "version": "11.6.4", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-11.6.4.tgz", - "integrity": "sha512-cK6rH1PuGjSjpmEQbnpuTxq1Yv8B89SotyKUFcr4RhnsiZnfBfDOev7DD7v5vhtEyyj51NuMWFoRJzgy/m08Uw==", - "requires": { - "long": "^4.0.0", - "prism-media": "^0.0.4", - "snekfetch": "^3.6.4", - "tweetnacl": "^1.0.0", - "ws": "^6.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" - }, - "env-paths": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", - "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "escape-latex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz", - "integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "eslint": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.16.0.tgz", - "integrity": "sha512-iVWPS785RuDA4dWuhhgXTNrGxHHK3a8HLSMBgbbU59ruJDubUraXN8N5rn7kb8tG6sjg74eE0RA3YWT51eusEw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.2.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.2.0", - "esutils": "^2.0.2", - "file-entry-cache": "^6.0.0", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash": "^4.17.19", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.4", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - } - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", - "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", - "dev": true - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "exif-parser": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", - "integrity": "sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=" - }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "express-session": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.1.tgz", - "integrity": "sha512-UbHwgqjxQZJiWRTMyhvWGvjBQduGCSBDhhZXYenziMFjxst5rMV+aJZ6hKPHZnPyHGsrqRICxtX8jtEbm/z36Q==", - "requires": { - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-headers": "~1.0.2", - "parseurl": "~1.3.3", - "safe-buffer": "5.2.0", - "uid-safe": "~2.1.5" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" - } - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fast-safe-stringify": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", - "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" - }, - "ffmpeg": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/ffmpeg/-/ffmpeg-0.0.4.tgz", - "integrity": "sha1-HEYN+OfaUSf2LO70v6BsWciWMMs=", - "requires": { - "when": ">= 0.0.1" - } - }, - "ffmpeg-static": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/ffmpeg-static/-/ffmpeg-static-4.2.7.tgz", - "integrity": "sha512-SGnOr2d+k0/9toRIv9t5/hN/DMYbm5XMtG0wVwGM1tEyXJAD6dbcWOEvfHq4LOySm9uykKL6LMC4eVPeteUnbQ==", - "requires": { - "@derhuerst/http-basic": "^8.2.0", - "env-paths": "^2.2.0", - "https-proxy-agent": "^5.0.0", - "progress": "^2.0.3" - } - }, - "file-entry-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", - "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "file-type": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", - "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==" - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", - "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", - "dev": true - }, - "form-data": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", - "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "formidable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz", - "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==" - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fraction.js": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.0.12.tgz", - "integrity": "sha512-8Z1K0VTG4hzYY7kA/1sj4/r1/RWLBD3xwReT/RCrUCbzPszjNQCCsy3ktkU/eaEqX3MYa4pY37a52eiBlPMlhA==" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "requires": { - "minipass": "^3.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "gifwrap": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.2.tgz", - "integrity": "sha512-fcIswrPaiCDAyO8xnWvHSZdWChjKXUanKKpAiWWJ/UTkEi/aYKn5+90e7DE820zbEaVR9CE2y4z9bzhQijZ0BA==", - "requires": { - "image-q": "^1.1.1", - "omggif": "^1.0.10" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "global": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", - "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", - "requires": { - "min-document": "^2.19.0", - "process": "~0.5.1" - } - }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - } - } - }, - "http-response-object": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", - "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", - "requires": { - "@types/node": "^10.0.3" - }, - "dependencies": { - "@types/node": { - "version": "10.17.49", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.49.tgz", - "integrity": "sha512-PGaJNs5IZz5XgzwJvL/1zRfZB7iaJ5BydZ8/Picm+lUNYoNO9iVTQkVy5eUh0dZDrx3rBOIs3GCbCRmMuYyqwg==" - } - } - }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "requires": { - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - } - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "ignore-walk": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", - "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", - "requires": { - "minimatch": "^3.0.4" - } - }, - "image-q": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/image-q/-/image-q-1.1.1.tgz", - "integrity": "sha1-/IQJlmRGC5DKhi2TALa/u7+/gFY=" - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "javascript-natural-sort": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", - "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=" - }, - "jimp": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.1.tgz", - "integrity": "sha512-+EKVxbR36Td7Hfd23wKGIeEyHbxShZDX6L8uJkgVW3ESA9GiTEPK08tG1XI2r/0w5Ch0HyJF5kPqF9K7EmGjaw==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/custom": "^0.16.1", - "@jimp/plugins": "^0.16.1", - "@jimp/types": "^0.16.1", - "regenerator-runtime": "^0.13.3" - } - }, - "jpeg-js": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.2.tgz", - "integrity": "sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw==" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "kareem": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz", - "integrity": "sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==" - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "load-bmfont": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", - "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", - "requires": { - "buffer-equal": "0.0.1", - "mime": "^1.3.4", - "parse-bmfont-ascii": "^1.0.3", - "parse-bmfont-binary": "^1.0.5", - "parse-bmfont-xml": "^1.1.4", - "phin": "^2.9.1", - "xhr": "^2.0.1", - "xtend": "^4.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "m3u8stream": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.8.3.tgz", - "integrity": "sha512-0nAcdrF8YJKUkb6PzWdvGftTPyCVWgoiot1AkNVbPKTeIGsWs6DrOjifrJ0Zi8WQfQmD2SuVCjkYIOip12igng==", - "requires": { - "miniget": "^4.0.0", - "sax": "^1.2.4" - } - }, - "mathjs": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-8.1.0.tgz", - "integrity": "sha512-Nf41Ms01FX+gP1xnJ5lWcGwMY/snFdqbYPe0LU16rXtLwk+UPfllKC6rStOuOqiPKwj5imJtkHO1vI8X4Y2aSw==", - "requires": { - "complex.js": "^2.0.11", - "decimal.js": "^10.2.1", - "escape-latex": "^1.2.0", - "fraction.js": "^4.0.12", - "javascript-natural-sort": "^0.7.1", - "seedrandom": "^3.0.5", - "tiny-emitter": "^2.1.0", - "typed-function": "^2.0.0" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "memory-pager": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "optional": true - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" - }, - "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "requires": { - "mime-db": "1.44.0" - } - }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", - "requires": { - "dom-walk": "^0.1.0" - } - }, - "miniget": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/miniget/-/miniget-4.1.0.tgz", - "integrity": "sha512-kzhrNv5L7LlomwGmPGQsLQ2PnT1LeJJWfB0wNFGyv426gEM1gsfziBQmfkr6XOBA8EusZg9nowlNT5CbuKTjZg==" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "requires": { - "yallist": "^4.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - }, - "moment": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" - }, - "moment-duration-format": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/moment-duration-format/-/moment-duration-format-2.3.2.tgz", - "integrity": "sha512-cBMXjSW+fjOb4tyaVHuaVE/A5TqkukDWiOfxxAjY+PEqmmBQlLwn+8OzwPiG3brouXKY5Un4pBjAeB6UToXHaQ==" - }, - "mongodb": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.3.tgz", - "integrity": "sha512-rOZuR0QkodZiM+UbQE5kDsJykBqWi0CL4Ec2i1nrGrUI3KO11r6Fbxskqmq3JK2NH7aW4dcccBuUujAP0ERl5w==", - "requires": { - "bl": "^2.2.1", - "bson": "^1.1.4", - "denque": "^1.4.1", - "require_optional": "^1.0.1", - "safe-buffer": "^5.1.2", - "saslprep": "^1.0.0" - } - }, - "mongoose": { - "version": "5.11.8", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.11.8.tgz", - "integrity": "sha512-RRfrYLg7pyuyx7xu5hwadjIZZJB9W2jqIMkL1CkTmk/uOCX3MX2tl4BVIi2rJUtgMNwn6dy3wBD3soB8I9Nlog==", - "requires": { - "@types/mongodb": "^3.5.27", - "bson": "^1.1.4", - "kareem": "2.3.2", - "mongodb": "3.6.3", - "mongoose-legacy-pluralize": "1.0.2", - "mpath": "0.8.1", - "mquery": "3.2.3", - "ms": "2.1.2", - "regexp-clone": "1.0.0", - "safe-buffer": "5.2.1", - "sift": "7.0.1", - "sliced": "1.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "mongoose-legacy-pluralize": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", - "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==" - }, - "mpath": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.8.1.tgz", - "integrity": "sha512-norEinle9aFc05McBawVPwqgFZ7npkts9yu17ztIVLwPwO9rq0OTp89kGVTqvv5rNLMz96E5iWHpVORjI411vA==" - }, - "mquery": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.3.tgz", - "integrity": "sha512-cIfbP4TyMYX+SkaQ2MntD+F2XbqaBHUYWk3j+kqdDztPWok3tgyssOZxMHMtzbV1w9DaSlvEea0Iocuro41A4g==", - "requires": { - "bluebird": "3.5.1", - "debug": "3.1.0", - "regexp-clone": "^1.0.0", - "safe-buffer": "5.1.2", - "sliced": "1.0.1" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "needle": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.2.tgz", - "integrity": "sha512-LbRIwS9BfkPvNwNHlsA41Q29kL2L/6VaOJ0qisM5lLWsTV3nP15abO5ITL6L81zqFhzjRKDAYjpcBcwM0AVvLQ==", - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, - "node-addon-api": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.2.tgz", - "integrity": "sha512-+D4s2HCnxPd5PjjI0STKwncjXTUKKqm74MDMz9OPXavjsGmjkvwgLtA5yoxJUdmpj52+2u+RrXgPipahKczMKg==" - }, - "nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", - "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" - }, - "npm-packlist": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", - "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "omggif": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", - "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-bmfont-ascii": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", - "integrity": "sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU=" - }, - "parse-bmfont-binary": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", - "integrity": "sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY=" - }, - "parse-bmfont-xml": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", - "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", - "requires": { - "xml-parse-from-string": "^1.0.0", - "xml2js": "^0.4.5" - } - }, - "parse-cache-control": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", - "integrity": "sha1-juqz5U+laSD+Fro493+iGqzC104=" - }, - "parse-headers": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz", - "integrity": "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA==" - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "phin": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", - "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" - }, - "pixelmatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", - "integrity": "sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=", - "requires": { - "pngjs": "^3.0.0" - } - }, - "pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "prism-media": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-0.0.4.tgz", - "integrity": "sha512-dG2w7WtovUa4SiYTdWn9H8Bd4JNdei2djtkP/Bk9fXq81j5Q15ZPHYSwhUVvBRbp5zMkGtu0Yk62HuMcly0pRw==" - }, - "process": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", - "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - }, - "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - }, - "random-bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", - "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=" - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" - }, - "regexp-clone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", - "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" - }, - "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", - "dev": true - }, - "require_optional": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", - "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", - "requires": { - "resolve-from": "^2.0.0", - "semver": "^5.1.0" - }, - "dependencies": { - "resolve-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "rss-parser": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/rss-parser/-/rss-parser-3.10.0.tgz", - "integrity": "sha512-TC6FNvEmdFeaW6r/60MSJT7cp4d95X4M9As+mvNtxRx7YXHxpV95syMnWZthZSeD1BRN7SEKdq6c3nxMLQRopw==", - "requires": { - "entities": "^2.0.3", - "xml2js": "^0.4.19" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "requires": { - "sparse-bitfield": "^3.0.3" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "seedrandom": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", - "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "sift": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz", - "integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g==" - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - } - } - }, - "sliced": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", - "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" - }, - "snekfetch": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/snekfetch/-/snekfetch-3.6.4.tgz", - "integrity": "sha512-NjxjITIj04Ffqid5lqr7XdgwM7X61c/Dns073Ly170bPQHLm6jkmelye/eglS++1nfTWktpP6Y2bFXjdPlQqdw==" - }, - "sparse-bitfield": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", - "optional": true, - "requires": { - "memory-pager": "^1.0.2" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - }, - "superagent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz", - "integrity": "sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==", - "requires": { - "component-emitter": "^1.3.0", - "cookiejar": "^2.1.2", - "debug": "^4.1.1", - "fast-safe-stringify": "^2.0.7", - "form-data": "^3.0.0", - "formidable": "^1.2.2", - "methods": "^1.1.2", - "mime": "^2.4.6", - "qs": "^6.9.4", - "readable-stream": "^3.6.0", - "semver": "^7.3.2" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "mime": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", - "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==" - }, - "qs": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", - "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "systeminformation": { - "version": "4.33.1", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-4.33.1.tgz", - "integrity": "sha512-ZSAluWiZWNfyJMKXk+cBGVSh+dwa3dYEfJHKUVAUdJmtJAXms2Hurxk/TufM0ZUHthyimj85xAuXKnRMMAbgmQ==" - }, - "table": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.4.tgz", - "integrity": "sha512-sBT4xRLdALd+NFBvwOz8bw4b15htyythha+q+DVZqy2RS08PPC8O2sZFgJYEY7bJvbCFKccs+WIZ/cd+xxTWCw==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "lodash": "^4.17.20", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "tar": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.5.tgz", - "integrity": "sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg==", - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "timm": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", - "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" - }, - "tiny-emitter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", - "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" - }, - "tinycolor2": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", - "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==" - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typed-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-2.0.0.tgz", - "integrity": "sha512-Hhy1Iwo/e4AtLZNK10ewVVcP2UEs408DS35ubP825w/YgSBK1KVLwALvvIG4yX75QJrxjCpcWkzkVRB0BwwYlA==" - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "uid-safe": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", - "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", - "requires": { - "random-bytes": "~1.0.0" - } - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "uri-js": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", - "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "utif": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", - "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", - "requires": { - "pako": "^1.0.5" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "v8-compile-cache": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", - "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", - "dev": true - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "when": { - "version": "3.7.8", - "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", - "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=" - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xhr": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", - "integrity": "sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==", - "requires": { - "global": "~4.3.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "xml-parse-from-string": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", - "integrity": "sha1-qQKekp09vN7RafPG4oI42VpdWig=" - }, - "xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - } - }, - "xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "ytdl-core": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.2.1.tgz", - "integrity": "sha512-7zAoJiWpaBGgiAUCQuvKBuWom7tmSCV0A70gRdrPxR96yQoJOrCZkW6Wg1CofvPtAeQVWTVWThC8bXRsE+SBeA==", - "requires": { - "m3u8stream": "^0.8.3", - "miniget": "^4.0.0", - "sax": "^1.1.3" - } - }, - "ytdl-core-discord": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/ytdl-core-discord/-/ytdl-core-discord-1.2.5.tgz", - "integrity": "sha512-VS7Z7q9sfEpmTBWs31qU36O+qt52eLKCcbjs1VgkptwsHkeq2v6gBthUs6+4ZT6EzZopuZMSP/joZ0urXa1gcA==", - "requires": { - "@types/node": "^14.14.14", - "prism-media": "^1.2.3", - "ytdl-core": "^4.2.1" - }, - "dependencies": { - "prism-media": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.2.3.tgz", - "integrity": "sha512-fSrR66n0l6roW9Rx4rSLMyTPTjRTiXy5RVqDOurACQ6si1rKHHKDU5gwBJoCsIV0R3o9gi+K50akl/qyw1C74A==" - } - } - } - } -} +{ + "name": "arunabot", + "version": "4.3.0-CANARY", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/runtime": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@derhuerst/http-basic": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@derhuerst/http-basic/-/http-basic-8.2.1.tgz", + "integrity": "sha512-Rmn7qQQulw2sxJ8qGfZ7OuqMWuhz8V+L5xnYKMF5cXVcYqmgWqlVEAme90pF7Ya8OVhxVxLmhh0rI2k6t7ITWw==", + "requires": { + "caseless": "^0.12.0", + "concat-stream": "^1.6.2", + "http-response-object": "^3.0.1", + "parse-cache-control": "^1.0.1" + } + }, + "@discordjs/node-pre-gyp": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@discordjs/node-pre-gyp/-/node-pre-gyp-0.1.0.tgz", + "integrity": "sha512-6u3EbK2x+j9bM3iK9/pE7BWLxOXZ1PvcsbDo3ZBdPocu95qPHj8zCVsBBk3Cao7V6o8QpwxUyJl6oVJ6T3ZgAg==", + "requires": { + "detect-libc": "^1.0.3", + "mkdirp": "^0.5.5", + "needle": "^2.4.1", + "nopt": "^4.0.3", + "npm-packlist": "^1.4.8", + "npmlog": "^4.1.2", + "rc": "^1.2.8", + "rimraf": "^3.0.2", + "semver": "^7.3.0", + "tar": "^6.0.2" + } + }, + "@discordjs/opus": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@discordjs/opus/-/opus-0.3.3.tgz", + "integrity": "sha512-n3hUs4RY0K8cz8vJ2GiZE4EdJlexoxs1vGsaft5lZlAnU6wsZfncpv4px+HVOMKN8ddtjriGfsrG4lVkAyZcmQ==", + "requires": { + "@discordjs/node-pre-gyp": "^0.1.0", + "node-addon-api": "^3.0.2" + } + }, + "@eslint/eslintrc": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", + "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + } + } + }, + "@jimp/bmp": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.1.tgz", + "integrity": "sha512-iwyNYQeBawrdg/f24x3pQ5rEx+/GwjZcCXd3Kgc+ZUd+Ivia7sIqBsOnDaMZdKCBPlfW364ekexnlOqyVa0NWg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "bmp-js": "^0.1.0" + } + }, + "@jimp/core": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.1.tgz", + "integrity": "sha512-la7kQia31V6kQ4q1kI/uLimu8FXx7imWVajDGtwUG8fzePLWDFJyZl0fdIXVCL1JW2nBcRHidUot6jvlRDi2+g==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + } + }, + "@jimp/custom": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.1.tgz", + "integrity": "sha512-DNUAHNSiUI/j9hmbatD6WN/EBIyeq4AO0frl5ETtt51VN1SvE4t4v83ZA/V6ikxEf3hxLju4tQ5Pc3zmZkN/3A==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.16.1" + } + }, + "@jimp/gif": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.1.tgz", + "integrity": "sha512-r/1+GzIW1D5zrP4tNrfW+3y4vqD935WBXSc8X/wm23QTY9aJO9Lw6PEdzpYCEY+SOklIFKaJYUAq/Nvgm/9ryw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "gifwrap": "^0.9.2", + "omggif": "^1.0.9" + } + }, + "@jimp/jpeg": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.1.tgz", + "integrity": "sha512-8352zrdlCCLFdZ/J+JjBslDvml+fS3Z8gttdml0We759PnnZGqrnPRhkOEOJbNUlE+dD4ckLeIe6NPxlS/7U+w==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "jpeg-js": "0.4.2" + } + }, + "@jimp/plugin-blit": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.1.tgz", + "integrity": "sha512-fKFNARm32RoLSokJ8WZXHHH2CGzz6ire2n1Jh6u+XQLhk9TweT1DcLHIXwQMh8oR12KgjbgsMGvrMVlVknmOAg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-blur": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.1.tgz", + "integrity": "sha512-1WhuLGGj9MypFKRcPvmW45ht7nXkOKu+lg3n2VBzIB7r4kKNVchuI59bXaCYQumOLEqVK7JdB4glaDAbCQCLyw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-circle": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.1.tgz", + "integrity": "sha512-JK7yi1CIU7/XL8hdahjcbGA3V7c+F+Iw+mhMQhLEi7Q0tCnZ69YJBTamMiNg3fWPVfMuvWJJKOBRVpwNTuaZRg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-color": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.1.tgz", + "integrity": "sha512-9yQttBAO5SEFj7S6nJK54f+1BnuBG4c28q+iyzm1JjtnehjqMg6Ljw4gCSDCvoCQ3jBSYHN66pmwTV74SU1B7A==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "tinycolor2": "^1.4.1" + } + }, + "@jimp/plugin-contain": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.1.tgz", + "integrity": "sha512-44F3dUIjBDHN+Ym/vEfg+jtjMjAqd2uw9nssN67/n4FdpuZUVs7E7wadKY1RRNuJO+WgcD5aDQcsvurXMETQTg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-cover": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.1.tgz", + "integrity": "sha512-YztWCIldBAVo0zxcQXR+a/uk3/TtYnpKU2CanOPJ7baIuDlWPsG+YE4xTsswZZc12H9Kl7CiziEbDtvF9kwA/Q==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-crop": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.1.tgz", + "integrity": "sha512-UQdva9oQzCVadkyo3T5Tv2CUZbf0klm2cD4cWMlASuTOYgaGaFHhT9st+kmfvXjKL8q3STkBu/zUPV6PbuV3ew==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-displace": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.1.tgz", + "integrity": "sha512-iVAWuz2+G6Heu8gVZksUz+4hQYpR4R0R/RtBzpWEl8ItBe7O6QjORAkhxzg+WdYLL2A/Yd4ekTpvK0/qW8hTVw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-dither": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.1.tgz", + "integrity": "sha512-tADKVd+HDC9EhJRUDwMvzBXPz4GLoU6s5P7xkVq46tskExYSptgj5713J5Thj3NMgH9Rsqu22jNg1H/7tr3V9Q==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-fisheye": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.1.tgz", + "integrity": "sha512-BWHnc5hVobviTyIRHhIy9VxI1ACf4CeSuCfURB6JZm87YuyvgQh5aX5UDKtOz/3haMHXBLP61ZBxlNpMD8CG4A==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-flip": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.1.tgz", + "integrity": "sha512-KdxTf0zErfZ8DyHkImDTnQBuHby+a5YFdoKI/G3GpBl3qxLBvC+PWkS2F/iN3H7wszP7/TKxTEvWL927pypT0w==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-gaussian": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.1.tgz", + "integrity": "sha512-u9n4wjskh3N1mSqketbL6tVcLU2S5TEaFPR40K6TDv4phPLZALi1Of7reUmYpVm8mBDHt1I6kGhuCJiWvzfGyg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-invert": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.1.tgz", + "integrity": "sha512-2DKuyVXANH8WDpW9NG+PYFbehzJfweZszFYyxcaewaPLN0GxvxVLOGOPP1NuUTcHkOdMFbE0nHDuB7f+sYF/2w==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-mask": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.1.tgz", + "integrity": "sha512-snfiqHlVuj4bSFS0v96vo2PpqCDMe4JB+O++sMo5jF5mvGcGL6AIeLo8cYqPNpdO6BZpBJ8MY5El0Veckhr39Q==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-normalize": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.1.tgz", + "integrity": "sha512-dOQfIOvGLKDKXPU8xXWzaUeB0nvkosHw6Xg1WhS1Z5Q0PazByhaxOQkSKgUryNN/H+X7UdbDvlyh/yHf3ITRaw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-print": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.1.tgz", + "integrity": "sha512-ceWgYN40jbN4cWRxixym+csyVymvrryuKBQ+zoIvN5iE6OyS+2d7Mn4zlNgumSczb9GGyZZESIgVcBDA1ezq0Q==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "load-bmfont": "^1.4.0" + } + }, + "@jimp/plugin-resize": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.1.tgz", + "integrity": "sha512-u4JBLdRI7dargC04p2Ha24kofQBk3vhaf0q8FwSYgnCRwxfvh2RxvhJZk9H7Q91JZp6wgjz/SjvEAYjGCEgAwQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-rotate": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.1.tgz", + "integrity": "sha512-ZUU415gDQ0VjYutmVgAYYxC9Og9ixu2jAGMCU54mSMfuIlmohYfwARQmI7h4QB84M76c9hVLdONWjuo+rip/zg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-scale": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.1.tgz", + "integrity": "sha512-jM2QlgThIDIc4rcyughD5O7sOYezxdafg/2Xtd1csfK3z6fba3asxDwthqPZAgitrLgiKBDp6XfzC07Y/CefUw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-shadow": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.1.tgz", + "integrity": "sha512-MeD2Is17oKzXLnsphAa1sDstTu6nxscugxAEk3ji0GV1FohCvpHBcec0nAq6/czg4WzqfDts+fcPfC79qWmqrA==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-threshold": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.1.tgz", + "integrity": "sha512-iGW8U/wiCSR0+6syrPioVGoSzQFt4Z91SsCRbgNKTAk7D+XQv6OI78jvvYg4o0c2FOlwGhqz147HZV5utoSLxA==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugins": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.1.tgz", + "integrity": "sha512-c+lCqa25b+4q6mJZSetlxhMoYuiltyS+ValLzdwK/47+aYsq+kcJNl+TuxIEKf59yr9+5rkbpsPkZHLF/V7FFA==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/plugin-blit": "^0.16.1", + "@jimp/plugin-blur": "^0.16.1", + "@jimp/plugin-circle": "^0.16.1", + "@jimp/plugin-color": "^0.16.1", + "@jimp/plugin-contain": "^0.16.1", + "@jimp/plugin-cover": "^0.16.1", + "@jimp/plugin-crop": "^0.16.1", + "@jimp/plugin-displace": "^0.16.1", + "@jimp/plugin-dither": "^0.16.1", + "@jimp/plugin-fisheye": "^0.16.1", + "@jimp/plugin-flip": "^0.16.1", + "@jimp/plugin-gaussian": "^0.16.1", + "@jimp/plugin-invert": "^0.16.1", + "@jimp/plugin-mask": "^0.16.1", + "@jimp/plugin-normalize": "^0.16.1", + "@jimp/plugin-print": "^0.16.1", + "@jimp/plugin-resize": "^0.16.1", + "@jimp/plugin-rotate": "^0.16.1", + "@jimp/plugin-scale": "^0.16.1", + "@jimp/plugin-shadow": "^0.16.1", + "@jimp/plugin-threshold": "^0.16.1", + "timm": "^1.6.1" + } + }, + "@jimp/png": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.1.tgz", + "integrity": "sha512-iyWoCxEBTW0OUWWn6SveD4LePW89kO7ZOy5sCfYeDM/oTPLpR8iMIGvZpZUz1b8kvzFr27vPst4E5rJhGjwsdw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "pngjs": "^3.3.3" + } + }, + "@jimp/tiff": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.1.tgz", + "integrity": "sha512-3K3+xpJS79RmSkAvFMgqY5dhSB+/sxhwTFA9f4AVHUK0oKW+u6r52Z1L0tMXHnpbAdR9EJ+xaAl2D4x19XShkQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "utif": "^2.0.1" + } + }, + "@jimp/types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.1.tgz", + "integrity": "sha512-g1w/+NfWqiVW4CaXSJyD28JQqZtm2eyKMWPhBBDCJN9nLCN12/Az0WFF3JUAktzdsEC2KRN2AqB1a2oMZBNgSQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.16.1", + "@jimp/gif": "^0.16.1", + "@jimp/jpeg": "^0.16.1", + "@jimp/png": "^0.16.1", + "@jimp/tiff": "^0.16.1", + "timm": "^1.6.1" + } + }, + "@jimp/utils": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.1.tgz", + "integrity": "sha512-8fULQjB0x4LzUSiSYG6ZtQl355sZjxbv8r9PPAuYHzS9sGiSHJQavNqK/nKnpDsVkU88/vRGcE7t3nMU0dEnVw==", + "requires": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", + "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "requires": { + "@nodelib/fs.stat": "2.0.4", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==" + }, + "@nodelib/fs.walk": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", + "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "requires": { + "@nodelib/fs.scandir": "2.1.4", + "fastq": "^1.6.0" + } + }, + "@types/bson": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.3.tgz", + "integrity": "sha512-mVRvYnTOZJz3ccpxhr3wgxVmSeiYinW+zlzQz3SXWaJmD1DuL05Jeq7nKw3SnbKmbleW5qrLG5vdyWe/A9sXhw==", + "requires": { + "@types/node": "*" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" + }, + "@types/mongodb": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.3.tgz", + "integrity": "sha512-6YNqGP1hk5bjUFaim+QoFFuI61WjHiHE1BNeB41TA00Xd2K7zG4lcWyLLq/XtIp36uMavvS5hoAUJ+1u/GcX2Q==", + "requires": { + "@types/bson": "*", + "@types/node": "*" + } + }, + "@types/node": { + "version": "14.14.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.16.tgz", + "integrity": "sha512-naXYePhweTi+BMv11TgioE2/FXU4fSl29HAH1ffxVciNsH3rYXjNP2yM8wqmSm7jS20gM8TIklKiTen+1iVncw==" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + } + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "bl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", + "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + }, + "bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "bson": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.5.tgz", + "integrity": "sha512-kDuEzldR21lHciPQAIulLs1LZlCXdLziXI6Mb/TDkwXhb//UORJNPXgcRs2CuO4H0DcMkpfT3/ySsP3unoZjBg==" + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=" + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "complex.js": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.0.11.tgz", + "integrity": "sha512-6IArJLApNtdg1P1dFtn3dnyzoZBEF0MwMnrfF1exSBRpZYoy4yieMkpZhQDC0uwctw48vii0CFVyHfpgZ/DfGw==" + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "dateformat": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.4.1.tgz", + "integrity": "sha512-3V9b/50QBYmFtd2c3cPOmdr2xNfnDphoBLxh/UVBoPIsylWkbUYGq3f4EQYuEaK7Mq4vcIpQCmOyJ37pqW/Uug==" + }, + "dblapi.js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/dblapi.js/-/dblapi.js-2.4.1.tgz", + "integrity": "sha512-g+u1inF/qOLit5qPK4hBGk5pKL1vy09uBLV+nukkRMvw2S9D1PyiyO70n4fboUXOgbExPp6Sho/Y782OqQOUiQ==" + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "decimal.js": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", + "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==" + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "requires": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "denque": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz", + "integrity": "sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "requires": { + "path-type": "^4.0.0" + } + }, + "discord.js": { + "version": "11.6.4", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-11.6.4.tgz", + "integrity": "sha512-cK6rH1PuGjSjpmEQbnpuTxq1Yv8B89SotyKUFcr4RhnsiZnfBfDOev7DD7v5vhtEyyj51NuMWFoRJzgy/m08Uw==", + "requires": { + "long": "^4.0.0", + "prism-media": "^0.0.4", + "snekfetch": "^3.6.4", + "tweetnacl": "^1.0.0", + "ws": "^6.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" + }, + "env-paths": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", + "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-latex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz", + "integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.17.0.tgz", + "integrity": "sha512-zJk08MiBgwuGoxes5sSQhOtibZ75pz0J35XTRlZOk9xMffhpA9BTbQZxoXZzOl5zMbleShbGwtw+1kGferfFwQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^0.2.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.0", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + } + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=" + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "express-session": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.1.tgz", + "integrity": "sha512-UbHwgqjxQZJiWRTMyhvWGvjBQduGCSBDhhZXYenziMFjxst5rMV+aJZ6hKPHZnPyHGsrqRICxtX8jtEbm/z36Q==", + "requires": { + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-headers": "~1.0.2", + "parseurl": "~1.3.3", + "safe-buffer": "5.2.0", + "uid-safe": "~2.1.5" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + } + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fast-safe-stringify": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", + "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" + }, + "fastq": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz", + "integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==", + "requires": { + "reusify": "^1.0.4" + } + }, + "ffmpeg": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/ffmpeg/-/ffmpeg-0.0.4.tgz", + "integrity": "sha1-HEYN+OfaUSf2LO70v6BsWciWMMs=", + "requires": { + "when": ">= 0.0.1" + } + }, + "ffmpeg-static": { + "version": "4.2.7", + "resolved": "https://registry.npmjs.org/ffmpeg-static/-/ffmpeg-static-4.2.7.tgz", + "integrity": "sha512-SGnOr2d+k0/9toRIv9t5/hN/DMYbm5XMtG0wVwGM1tEyXJAD6dbcWOEvfHq4LOySm9uykKL6LMC4eVPeteUnbQ==", + "requires": { + "@derhuerst/http-basic": "^8.2.0", + "env-paths": "^2.2.0", + "https-proxy-agent": "^5.0.0", + "progress": "^2.0.3" + } + }, + "file-entry-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", + "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "file-type": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", + "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", + "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", + "dev": true + }, + "form-data": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", + "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "formidable": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz", + "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==" + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fraction.js": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.0.13.tgz", + "integrity": "sha512-E1fz2Xs9ltlUp+qbiyx9wmt2n9dRzPsS11Jtdb8D2o+cC7wr9xkkKsVKJuBX0ST+LVS+LhLO+SbLJNtfWcJvXA==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "gifwrap": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.2.tgz", + "integrity": "sha512-fcIswrPaiCDAyO8xnWvHSZdWChjKXUanKKpAiWWJ/UTkEi/aYKn5+90e7DE820zbEaVR9CE2y4z9bzhQijZ0BA==", + "requires": { + "image-q": "^1.1.1", + "omggif": "^1.0.10" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "requires": { + "min-document": "^2.19.0", + "process": "~0.5.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "globby": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", + "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "dependencies": { + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" + } + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "http-response-object": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", + "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", + "requires": { + "@types/node": "^10.0.3" + }, + "dependencies": { + "@types/node": { + "version": "10.17.49", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.49.tgz", + "integrity": "sha512-PGaJNs5IZz5XgzwJvL/1zRfZB7iaJ5BydZ8/Picm+lUNYoNO9iVTQkVy5eUh0dZDrx3rBOIs3GCbCRmMuYyqwg==" + } + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "requires": { + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + } + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "requires": { + "minimatch": "^3.0.4" + } + }, + "image-q": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/image-q/-/image-q-1.1.1.tgz", + "integrity": "sha1-/IQJlmRGC5DKhi2TALa/u7+/gFY=" + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" + }, + "is-path-inside": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=" + }, + "jimp": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.1.tgz", + "integrity": "sha512-+EKVxbR36Td7Hfd23wKGIeEyHbxShZDX6L8uJkgVW3ESA9GiTEPK08tG1XI2r/0w5Ch0HyJF5kPqF9K7EmGjaw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.16.1", + "@jimp/plugins": "^0.16.1", + "@jimp/types": "^0.16.1", + "regenerator-runtime": "^0.13.3" + } + }, + "jpeg-js": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.2.tgz", + "integrity": "sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "kareem": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz", + "integrity": "sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==" + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "load-bmfont": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", + "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", + "requires": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^2.9.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "m3u8stream": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.8.3.tgz", + "integrity": "sha512-0nAcdrF8YJKUkb6PzWdvGftTPyCVWgoiot1AkNVbPKTeIGsWs6DrOjifrJ0Zi8WQfQmD2SuVCjkYIOip12igng==", + "requires": { + "miniget": "^4.0.0", + "sax": "^1.2.4" + } + }, + "mathjs": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-8.1.1.tgz", + "integrity": "sha512-b3TX3EgiZObujjwb8lZnTDLUuivC2jar4ZBjmGJ4stFYCDXx/DNwx5yry5t/z65p9mvejyZel1qoeR05KtChcQ==", + "requires": { + "complex.js": "^2.0.11", + "decimal.js": "^10.2.1", + "escape-latex": "^1.2.0", + "fraction.js": "^4.0.13", + "javascript-natural-sort": "^0.7.1", + "seedrandom": "^3.0.5", + "tiny-emitter": "^2.1.0", + "typed-function": "^2.0.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.0" + } + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "requires": { + "dom-walk": "^0.1.0" + } + }, + "miniget": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/miniget/-/miniget-4.1.0.tgz", + "integrity": "sha512-kzhrNv5L7LlomwGmPGQsLQ2PnT1LeJJWfB0wNFGyv426gEM1gsfziBQmfkr6XOBA8EusZg9nowlNT5CbuKTjZg==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" + }, + "moment-duration-format": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/moment-duration-format/-/moment-duration-format-2.3.2.tgz", + "integrity": "sha512-cBMXjSW+fjOb4tyaVHuaVE/A5TqkukDWiOfxxAjY+PEqmmBQlLwn+8OzwPiG3brouXKY5Un4pBjAeB6UToXHaQ==" + }, + "mongodb": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.3.tgz", + "integrity": "sha512-rOZuR0QkodZiM+UbQE5kDsJykBqWi0CL4Ec2i1nrGrUI3KO11r6Fbxskqmq3JK2NH7aW4dcccBuUujAP0ERl5w==", + "requires": { + "bl": "^2.2.1", + "bson": "^1.1.4", + "denque": "^1.4.1", + "require_optional": "^1.0.1", + "safe-buffer": "^5.1.2", + "saslprep": "^1.0.0" + } + }, + "mongoose": { + "version": "5.11.11", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.11.11.tgz", + "integrity": "sha512-JgKKAosJf6medPOZi2LmO7sMz7Sg00mgjyPAKari3alzL+R/n8D+zKK29iGtJpNNtv9IKy14H37CWuiaZ7016w==", + "requires": { + "@types/mongodb": "^3.5.27", + "bson": "^1.1.4", + "kareem": "2.3.2", + "mongodb": "3.6.3", + "mongoose-legacy-pluralize": "1.0.2", + "mpath": "0.8.3", + "mquery": "3.2.3", + "ms": "2.1.2", + "regexp-clone": "1.0.0", + "safe-buffer": "5.2.1", + "sift": "7.0.1", + "sliced": "1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "mongoose-legacy-pluralize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", + "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==" + }, + "mpath": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.8.3.tgz", + "integrity": "sha512-eb9rRvhDltXVNL6Fxd2zM9D4vKBxjVVQNLNijlj7uoXUy19zNDsIif5zR+pWmPCWNKwAtqyo4JveQm4nfD5+eA==" + }, + "mquery": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.3.tgz", + "integrity": "sha512-cIfbP4TyMYX+SkaQ2MntD+F2XbqaBHUYWk3j+kqdDztPWok3tgyssOZxMHMtzbV1w9DaSlvEea0Iocuro41A4g==", + "requires": { + "bluebird": "3.5.1", + "debug": "3.1.0", + "regexp-clone": "^1.0.0", + "safe-buffer": "5.1.2", + "sliced": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "needle": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.2.tgz", + "integrity": "sha512-LbRIwS9BfkPvNwNHlsA41Q29kL2L/6VaOJ0qisM5lLWsTV3nP15abO5ITL6L81zqFhzjRKDAYjpcBcwM0AVvLQ==", + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "node-addon-api": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.2.tgz", + "integrity": "sha512-+D4s2HCnxPd5PjjI0STKwncjXTUKKqm74MDMz9OPXavjsGmjkvwgLtA5yoxJUdmpj52+2u+RrXgPipahKczMKg==" + }, + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU=" + }, + "parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY=" + }, + "parse-bmfont-xml": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", + "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", + "requires": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.4.5" + } + }, + "parse-cache-control": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha1-juqz5U+laSD+Fro493+iGqzC104=" + }, + "parse-headers": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz", + "integrity": "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" + }, + "pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=", + "requires": { + "pngjs": "^3.0.0" + } + }, + "pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prism-media": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-0.0.4.tgz", + "integrity": "sha512-dG2w7WtovUa4SiYTdWn9H8Bd4JNdei2djtkP/Bk9fXq81j5Q15ZPHYSwhUVvBRbp5zMkGtu0Yk62HuMcly0pRw==" + }, + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" + }, + "regexp-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", + "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "require_optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", + "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", + "requires": { + "resolve-from": "^2.0.0", + "semver": "^5.1.0" + }, + "dependencies": { + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "rss-parser": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/rss-parser/-/rss-parser-3.10.0.tgz", + "integrity": "sha512-TC6FNvEmdFeaW6r/60MSJT7cp4d95X4M9As+mvNtxRx7YXHxpV95syMnWZthZSeD1BRN7SEKdq6c3nxMLQRopw==", + "requires": { + "entities": "^2.0.3", + "xml2js": "^0.4.19" + } + }, + "run-parallel": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", + "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "requires": { + "sparse-bitfield": "^3.0.3" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "seedrandom": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", + "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "sift": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz", + "integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g==" + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + } + } + }, + "sliced": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", + "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" + }, + "snekfetch": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/snekfetch/-/snekfetch-3.6.4.tgz", + "integrity": "sha512-NjxjITIj04Ffqid5lqr7XdgwM7X61c/Dns073Ly170bPQHLm6jkmelye/eglS++1nfTWktpP6Y2bFXjdPlQqdw==" + }, + "sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", + "optional": true, + "requires": { + "memory-pager": "^1.0.2" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "superagent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz", + "integrity": "sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==", + "requires": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.2", + "debug": "^4.1.1", + "fast-safe-stringify": "^2.0.7", + "form-data": "^3.0.0", + "formidable": "^1.2.2", + "methods": "^1.1.2", + "mime": "^2.4.6", + "qs": "^6.9.4", + "readable-stream": "^3.6.0", + "semver": "^7.3.2" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==" + }, + "qs": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", + "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "systeminformation": { + "version": "4.34.5", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-4.34.5.tgz", + "integrity": "sha512-oFgpUeGc2BVTl9FPsdixzfcHkMg1llGUeA+flsZf7AM9HTQhWfcVrfHJEoWCq+mOqiSp4SCNrdSPFXJKYPDdYg==" + }, + "table": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", + "dev": true, + "requires": { + "ajv": "^7.0.2", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" + }, + "dependencies": { + "ajv": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.3.tgz", + "integrity": "sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "tar": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.5.tgz", + "integrity": "sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg==", + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "timm": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" + }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, + "tinycolor2": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", + "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typed-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-2.0.0.tgz", + "integrity": "sha512-Hhy1Iwo/e4AtLZNK10ewVVcP2UEs408DS35ubP825w/YgSBK1KVLwALvvIG4yX75QJrxjCpcWkzkVRB0BwwYlA==" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "requires": { + "random-bytes": "~1.0.0" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "uri-js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "requires": { + "pako": "^1.0.5" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "v8-compile-cache": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "when": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", + "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xhr": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", + "integrity": "sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==", + "requires": { + "global": "~4.3.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha1-qQKekp09vN7RafPG4oI42VpdWig=" + }, + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "ytdl-core": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.4.1.tgz", + "integrity": "sha512-VRqJ1pPEfIt7Lja2bKaTRqO47GfVbqhFfKqtmxU5Pp2BM0HUb0gVyf3wL9HlA+Vb4OblXs2MzSqWI8Fi1sSk4Q==", + "requires": { + "m3u8stream": "^0.8.3", + "miniget": "^4.0.0", + "sax": "^1.1.3" + } + }, + "ytdl-core-discord": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/ytdl-core-discord/-/ytdl-core-discord-1.2.5.tgz", + "integrity": "sha512-VS7Z7q9sfEpmTBWs31qU36O+qt52eLKCcbjs1VgkptwsHkeq2v6gBthUs6+4ZT6EzZopuZMSP/joZ0urXa1gcA==", + "requires": { + "@types/node": "^14.14.14", + "prism-media": "^1.2.3", + "ytdl-core": "^4.2.1" + }, + "dependencies": { + "prism-media": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.2.3.tgz", + "integrity": "sha512-fSrR66n0l6roW9Rx4rSLMyTPTjRTiXy5RVqDOurACQ6si1rKHHKDU5gwBJoCsIV0R3o9gi+K50akl/qyw1C74A==" + } + } + } + } +} diff --git a/package.json b/package.json index cbee27a..357ddd5 100644 --- a/package.json +++ b/package.json @@ -1,51 +1,52 @@ -{ - "name": "arunabot", - "version": "4.3.0-CANARY", - "description": "A nova e melhorada aruna!", - "main": "src/main.js", - "scripts": { - "start": "node src/sharding.js", - "eslint": "eslint ./src", - "eslint:fix": "eslint ./src --fix" - }, - "repository": { - "type": "git", - "url": "https://github.com/ArunaBot/Aruna.git" - }, - "author": { - "name": "Lobo Metalurgico", - "email": "contato@lobometalurgico.tk", - "url": "https://youtube.com/LoboMetalurgico" - }, - "contributors": [ - { - "name": "Kira's Art", - "url": "https://twitter.com/kiratokioArt/" - } - ], - "license": "AGPL-3.0", - "dependencies": { - "@discordjs/opus": "^0.3.3", - "chalk": "^4.1.0", - "dateformat": "^4.4.1", - "dblapi.js": "^2.4.1", - "discord.js": "^11.6.4", - "express": "^4.17.1", - "express-session": "^1.17.1", - "ffmpeg": "0.0.4", - "ffmpeg-static": "^4.2.7", - "jimp": "^0.16.1", - "mathjs": "^8.1.0", - "moment": "^2.29.1", - "moment-duration-format": "^2.3.2", - "mongoose": "^5.11.8", - "rss-parser": "^3.10.0", - "superagent": "^6.1.0", - "systeminformation": "^4.33.1", - "ytdl-core": "^4.2.1", - "ytdl-core-discord": "^1.2.5" - }, - "devDependencies": { - "eslint": "^7.16.0" - } -} +{ + "name": "arunabot", + "version": "4.3.0-CANARY", + "description": "A nova e melhorada aruna!", + "main": "src/main.js", + "scripts": { + "start": "node src/sharding.js", + "eslint": "eslint ./src", + "eslint:fix": "eslint ./src --fix" + }, + "repository": { + "type": "git", + "url": "https://github.com/ArunaBot/Aruna.git" + }, + "author": { + "name": "Lobo Metalurgico", + "email": "contato@lobometalurgico.tk", + "url": "https://youtube.com/LoboMetalurgico" + }, + "contributors": [ + { + "name": "Kira's Art", + "url": "https://twitter.com/kiratokioArt/" + } + ], + "license": "AGPL-3.0", + "dependencies": { + "@discordjs/opus": "^0.3.3", + "chalk": "^4.1.0", + "dateformat": "^4.4.1", + "dblapi.js": "^2.4.1", + "del": "^6.0.0", + "discord.js": "^11.6.4", + "express": "^4.17.1", + "express-session": "^1.17.1", + "ffmpeg": "0.0.4", + "ffmpeg-static": "^4.2.7", + "jimp": "^0.16.1", + "mathjs": "^8.1.1", + "moment": "^2.29.1", + "moment-duration-format": "^2.3.2", + "mongoose": "^5.11.11", + "rss-parser": "^3.10.0", + "superagent": "^6.1.0", + "systeminformation": "^4.34.5", + "ytdl-core": "^4.4.1", + "ytdl-core-discord": "^1.2.5" + }, + "devDependencies": { + "eslint": "^7.17.0" + } +} diff --git a/src/Commands/avatar.js b/src/Commands/avatar.js index 33d1b7a..3bbe796 100644 --- a/src/Commands/avatar.js +++ b/src/Commands/avatar.js @@ -1,49 +1,49 @@ -/* - This File is part of ArunaBot - Copyright (C) LoboMetalurgico (and contributors) 2019-2020 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ - -const Discord = require('discord.js'); -const { emoji } = require('../Utils'); -const { config } = require('../../Configs'); -var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); - -exports.run = (aruna, message, args, langc) => { - const user1 = message.guild.member( - message.mentions.users.first() || aruna.users.get(args[0]) || message.author - ); - - if (langc) { - language = langc; - } - - const user = user1.user; - - const embed = new Discord.RichEmbed() - .setTitle(language.avatar.embed.title.replace('[emoji]', emoji.picture).replace('[user]', user1.displayName)) - .setDescription(language.avatar.embed.description.replace('[url]', user.avatarURL)) - .setImage(user.avatarURL) - .setTimestamp(); - message.channel.send(embed); -}; - -exports.config = { - name: 'avatar', - aliases: ['usericon'], - description: language.avatar.config.description, - category: '🎉 Entretenimento', - public: true -}; +/* + This File is part of ArunaBot + Copyright (C) LoboMetalurgico (and contributors) 2019-2020 + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +const Discord = require('discord.js'); +const { emoji } = require('../Utils'); +const { config } = require('../../Configs'); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); + +exports.run = (aruna, message, args, langc) => { + const user1 = message.guild.member( + message.mentions.users.first() || aruna.users.get(args[0]) || message.author + ); + + if (langc) { + language = langc; + } + + const user = user1.user; + + const embed = new Discord.RichEmbed() + .setTitle(language.avatar.embed.title.replace('[emoji]', emoji.picture).replace('[user]', user1.displayName)) + .setDescription(language.avatar.embed.description.replace('[url]', user.avatarURL)) + .setImage(user.avatarURL) + .setTimestamp(); + message.channel.send(embed); +}; + +exports.config = { + name: 'avatar', + aliases: ['usericon'], + description: language.avatar.config.description, + category: '🎉 Entretenimento', + public: true +}; diff --git a/src/Commands/ship.js b/src/Commands/ship.js index c4b2da5..2276af1 100644 --- a/src/Commands/ship.js +++ b/src/Commands/ship.js @@ -1,123 +1,124 @@ -/* - This File is part of ArunaBot - Copyright (C) LoboMetalurgico (and contributors) 2019-2020 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ - -const Discord = require('discord.js'); -const Jimp = require('jimp'); - -exports.run = async (client, message, args) => { - const error1 = new Discord.RichEmbed() - .setAuthor('Oops!', message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Você deve mencionar no mínimo 1 usuário!') - .setTimestamp(); - - var porcentagem = 0; - var aleatorio = Math.round(Math.random() * 100); - - porcentagem = aleatorio; - - if (!message.mentions.users.first() && isNaN(args[0])) { - return message.channel.send(error1); - } else if (!message.mentions.users.array()[1] && !!args[1] && isNaN(args[1])) { - return message.channel.send(error1); - } - - var user1; - - if (message.mentions.users.first()) { - user1 = message.mentions.users.first(); - } else if (message.guild.members.get(args[0])) { - user1 = message.guild.members.get(args[0]).user; - } else user1 = null; - - var user2; - - if (message.mentions.users.array()[1]) { - user2 = message.mentions.users.array()[1]; - } else if (message.guild.members.get(args[1])) { - user2 = message.guild.members.get(args[1]).user; - } else user2 = message.author; - - if (!user1 && user1 === user2) return message.channel.send(error1); - - const richard_lindu = await Jimp.read(user1.avatarURL); - const richard_dmais = await Jimp.read(user2.avatarURL); - - richard_lindu.resize(115, 115); - richard_dmais.resize(115, 115); - - const eu_amo_o_richard = await Jimp.read( - 'https://cdn.discordapp.com/attachments/486016051851689994/509883077707694100/ships.png' - ); - - eu_amo_o_richard.composite(richard_lindu, 1, 1); - eu_amo_o_richard.composite(richard_dmais, 229, 1); - eu_amo_o_richard.write(`./tmp/img/${user1.id}-${user2.id}.png`); - - const aido = new Array(); - aido[1] = 'Msg 1'; - aido[2] = 'Msg 2'; - - var mensagem = - porcentagem <= 10 - ? `${porcentagem}% [----------] Nada é impossível, apenas improvável.` - : porcentagem <= 20 - ? `${porcentagem}% [█---------] Um dia talvez. ` - : porcentagem <= 30 - ? `${porcentagem}% [██--------] Bem, olhando por esse ângulo... ` - : porcentagem <= 40 - ? `${porcentagem}% [███-------] Possível, é. Díficil? De fato.` - : porcentagem <= 50 - ? `${porcentagem}% [████------] Numa galáxia não tão distante...` - : porcentagem <= 60 - ? `${porcentagem}% [█████-----] Até que formariam um belo casal. ` - : porcentagem <= 70 - ? `${porcentagem}% [██████----] Esse casal está perto de ser muito bom! ` - : porcentagem <= 80 - ? `${porcentagem}% [███████---] Casal de primeira! ` - : porcentagem <= 90 - ? `${porcentagem}% [████████--] Já poderiam estar casados! 💍 ` - : porcentagem <= 100 - ? `${porcentagem}% [█████████-] Casal perfeito, só um terremoto os separa! 💍` - : `${porcentagem}% [██████████] Casal perfeito, ninguém os separa! 💍`; - - console.log(porcentagem); - console.log(mensagem); - message.channel.send({ - embed: { - description: `${user1} + ${user2}\n\n**${mensagem}**`, - color: 111119, - image: { - url: 'attachment://file.jpg' - } - }, - files: [ - { - attachment: `./tmp/img/${user1.id}-${user2.id}.png`, - name: 'file.jpg' - } - ] - }); -}; - -exports.config = { - name: 'ship', - aliases: ['shipar', 'shipp', 'casal'], - category: '🎉 Entretenimento', - public: true -}; +/* + This File is part of ArunaBot + Copyright (C) LoboMetalurgico (and contributors) 2019-2020 + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +const Discord = require('discord.js'); +const Jimp = require('jimp'); + +const { config } = require('../../Configs'); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); + +exports.run = async (client, message, args, langc) => { + if (langc) { + language = langc; + } + + const error1 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.ship.embed.error.description) + .setTimestamp(); + + var porcentagem = 0; + var aleatorio = Math.round(Math.random() * 100); + + porcentagem = aleatorio; + + if (!message.mentions.users.first() && isNaN(args[0])) { + return message.channel.send(error1); + } else if (!message.mentions.users.array()[1] && !!args[1] && isNaN(args[1])) { + return message.channel.send(error1); + } + + var user1; + + if (message.mentions.users.first()) { + user1 = message.mentions.users.first(); + } else if (message.guild.members.get(args[0])) { + user1 = message.guild.members.get(args[0]).user; + } else user1 = null; + + var user2; + + if (message.mentions.users.array()[1]) { + user2 = message.mentions.users.array()[1]; + } else if (message.guild.members.get(args[1])) { + user2 = message.guild.members.get(args[1]).user; + } else user2 = message.author; + + if (!user1 && user1 === user2) return message.channel.send(error1); + + const avatar1 = await Jimp.read(user1.avatarURL); + const avatar2 = await Jimp.read(user2.avatarURL); + + avatar1.resize(115, 115); + avatar2.resize(115, 115); + + const baseImage = await Jimp.read( + 'https://cdn.discordapp.com/attachments/486016051851689994/509883077707694100/ships.png' + ); + + baseImage.composite(avatar1, 1, 1); + baseImage.composite(avatar2, 229, 1); + baseImage.write(`./tmp/img/${user1.id}-${user2.id}.png`); + + var mensagem = + porcentagem <= 10 + ? language.ship.shipStatus[0].replace('%s', porcentagem).replace('%s', porcentagem) + : porcentagem <= 20 + ? language.ship.shipStatus[1].replace('%s', porcentagem) + : porcentagem <= 30 + ? language.ship.shipStatus[2].replace('%s', porcentagem) + : porcentagem <= 40 + ? language.ship.shipStatus[3].replace('%s', porcentagem) + : porcentagem <= 50 + ? language.ship.shipStatus[4].replace('%s', porcentagem) + : porcentagem <= 60 + ? language.ship.shipStatus[5].replace('%s', porcentagem) + : porcentagem <= 70 + ? language.ship.shipStatus[6].replace('%s', porcentagem) + : porcentagem <= 80 + ? language.ship.shipStatus[7].replace('%s', porcentagem) + : porcentagem <= 90 + ? language.ship.shipStatus[8].replace('%s', porcentagem) + : porcentagem <= 100 + ? language.ship.shipStatus[9].replace('%s', porcentagem) + : language.ship.shipStatus[10].replace('%s', porcentagem); + + message.channel.send({ + embed: { + description: `${user1} + ${user2}\n\n**${mensagem}**`, + color: 111119, + image: { + url: 'attachment://file.jpg' + } + }, + files: [ + { + attachment: `./tmp/img/${user1.id}-${user2.id}.png`, + name: 'file.jpg' + } + ] + }); +}; + +exports.config = { + name: 'ship', + aliases: ['shipar', 'shipp', 'casal'], + category: '🎉 Entretenimento', + public: true +}; diff --git a/src/sharding.js b/src/sharding.js index 41c72ea..7f27b37 100644 --- a/src/sharding.js +++ b/src/sharding.js @@ -1,48 +1,54 @@ -/* eslint-disable max-len */ -/* - This File is part of ArunaBot - Copyright (C) LoboMetalurgico (and contributors) 2019-2020 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ - -const Discord = require('discord.js'); -const chalk = require('chalk'); -const { config } = require('../Configs'); -const pkg = require('../package.json'); - -const language = require(`../languages/bot/${config.language}/internal.json`); - -const manager = new Discord.ShardingManager(`./${pkg.main}`, { - token: config.token, - totalShards: config.sharding.totalShards -}); - -const infoPrefix = `${chalk.gray('[')}${chalk.green(language.generic.core.toUpperCase())}${chalk.gray(']')}`; -const errorPrefix = `${chalk.gray('[')}${chalk.red(language.generic.core.toUpperCase())}${chalk.gray(']')}`; -const logPrefix = `${chalk.gray('[')}${chalk.yellow(language.shard.master)}${chalk.gray(']')}`; - -console.log(language.initialization.initializing.replace('[prefix]', infoPrefix)); - -manager.on('launch', shard => console.log(`${infoPrefix} ${logPrefix} ${shard.id} (${shard.id + 1}/${manager.totalShards}) ${language.shard.launch.replace('[shard] ', '')}`)); -process.on('exit', code => { - console.error(`${errorPrefix} ${language.initialization.fail}`); - console.exception(`${errorPrefix} ${logPrefix} ${chalk.red(language.shard.exit)} ${language.shard.exitCode}`, code); -}); - -console.log(language.shard.startGeneration.replace('[logPrefix]', `${infoPrefix} ${logPrefix}`)); -manager.spawn(config.sharding.totalShards, config.sharding.delay).then(() => { - console.log(`${infoPrefix} ${logPrefix} ${chalk.green(language.shard.finishGeneration)}`); - console.log(`${infoPrefix} ${language.initialization.complete}`); -}); \ No newline at end of file +/* eslint-disable max-len */ +/* + This File is part of ArunaBot + Copyright (C) LoboMetalurgico (and contributors) 2019-2020 + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +const Discord = require('discord.js'); +const chalk = require('chalk'); +const { config } = require('../Configs'); +const pkg = require('../package.json'); + +const language = require(`../languages/bot/${config.language}/internal.json`); + +const del = require('del'); + +try { + del.sync('tmp'); +} finally { + const manager = new Discord.ShardingManager(`./${pkg.main}`, { + token: config.token, + totalShards: config.sharding.totalShards + }); + + const infoPrefix = `${chalk.gray('[')}${chalk.green(language.generic.core.toUpperCase())}${chalk.gray(']')}`; + const errorPrefix = `${chalk.gray('[')}${chalk.red(language.generic.core.toUpperCase())}${chalk.gray(']')}`; + const logPrefix = `${chalk.gray('[')}${chalk.yellow(language.shard.master)}${chalk.gray(']')}`; + + console.log(language.initialization.initializing.replace('[prefix]', infoPrefix)); + + manager.on('launch', shard => console.log(`${infoPrefix} ${logPrefix} ${shard.id} (${shard.id + 1}/${manager.totalShards}) ${language.shard.launch.replace('[shard] ', '')}`)); + process.on('exit', code => { + console.error(`${errorPrefix} ${language.initialization.fail}`); + console.exception(`${errorPrefix} ${logPrefix} ${chalk.red(language.shard.exit)} ${language.shard.exitCode}`, code); + }); + + console.log(language.shard.startGeneration.replace('[logPrefix]', `${infoPrefix} ${logPrefix}`)); + manager.spawn(config.sharding.totalShards, config.sharding.delay).then(() => { + console.log(`${infoPrefix} ${logPrefix} ${chalk.green(language.shard.finishGeneration)}`); + console.log(`${infoPrefix} ${language.initialization.complete}`); + }); +} \ No newline at end of file From 0b4e0d3299e58a102784cf62722d1ee1dd649f07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sat, 6 Feb 2021 09:30:20 -0300 Subject: [PATCH 149/164] Localization for bot command --- languages | 2 +- package-lock.json | 60 ++++++++++++++++----------------- package.json | 6 ++-- src/Commands/bot.js | 82 +++++++++++++++++++++++++-------------------- src/Events/ready.js | 8 ++--- 5 files changed, 83 insertions(+), 75 deletions(-) diff --git a/languages b/languages index bee4e8d..83571ad 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit bee4e8ddb8d35cec6bfea91d64eeee68f8ed2c59 +Subproject commit 83571ada1c7e00bc5901684e9346cded3ae516c5 diff --git a/package-lock.json b/package-lock.json index 249c733..72882e8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -529,9 +529,9 @@ } }, "@types/node": { - "version": "14.14.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.16.tgz", - "integrity": "sha512-naXYePhweTi+BMv11TgioE2/FXU4fSl29HAH1ffxVciNsH3rYXjNP2yM8wqmSm7jS20gM8TIklKiTen+1iVncw==" + "version": "10.17.51", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.51.tgz", + "integrity": "sha512-KANw+MkL626tq90l++hGelbl67irOJzGhUJk6a1Bt8QHOeh9tztJx+L0AqttraWKinmZn7Qi5lJZJzx45Gq0dg==" }, "abbrev": { "version": "1.1.1", @@ -1659,13 +1659,6 @@ "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", "requires": { "@types/node": "^10.0.3" - }, - "dependencies": { - "@types/node": { - "version": "10.17.49", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.49.tgz", - "integrity": "sha512-PGaJNs5IZz5XgzwJvL/1zRfZB7iaJ5BydZ8/Picm+lUNYoNO9iVTQkVy5eUh0dZDrx3rBOIs3GCbCRmMuYyqwg==" - } } }, "https-proxy-agent": { @@ -2059,9 +2052,9 @@ } }, "mongoose": { - "version": "5.11.11", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.11.11.tgz", - "integrity": "sha512-JgKKAosJf6medPOZi2LmO7sMz7Sg00mgjyPAKari3alzL+R/n8D+zKK29iGtJpNNtv9IKy14H37CWuiaZ7016w==", + "version": "5.11.12", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.11.12.tgz", + "integrity": "sha512-70wST9hnVlPbt5nKClPKJo54ULIACOVGYdg8fyj17sWtCJLyURCDahhzUh+oUA7WVykOW2ZMqWm2kujBIWYagg==", "requires": { "@types/mongodb": "^3.5.27", "bson": "^1.1.4", @@ -2133,9 +2126,9 @@ "dev": true }, "needle": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.2.tgz", - "integrity": "sha512-LbRIwS9BfkPvNwNHlsA41Q29kL2L/6VaOJ0qisM5lLWsTV3nP15abO5ITL6L81zqFhzjRKDAYjpcBcwM0AVvLQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz", + "integrity": "sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==", "requires": { "debug": "^3.2.6", "iconv-lite": "^0.4.4", @@ -2148,9 +2141,9 @@ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, "node-addon-api": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.2.tgz", - "integrity": "sha512-+D4s2HCnxPd5PjjI0STKwncjXTUKKqm74MDMz9OPXavjsGmjkvwgLtA5yoxJUdmpj52+2u+RrXgPipahKczMKg==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz", + "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==" }, "nopt": { "version": "4.0.3", @@ -2796,9 +2789,9 @@ } }, "systeminformation": { - "version": "4.34.5", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-4.34.5.tgz", - "integrity": "sha512-oFgpUeGc2BVTl9FPsdixzfcHkMg1llGUeA+flsZf7AM9HTQhWfcVrfHJEoWCq+mOqiSp4SCNrdSPFXJKYPDdYg==" + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-4.34.7.tgz", + "integrity": "sha512-cS3FiSZasFgVNjO9CP3aZmTO2VHwXKG+JN6Z85nWRyOzxRMNbZe7Xzwrewp42hj+OPMC3hk7MrAFyu/qLM65Mw==" }, "table": { "version": "6.0.7", @@ -2865,9 +2858,9 @@ } }, "tar": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.5.tgz", - "integrity": "sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", + "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", "requires": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -2971,9 +2964,9 @@ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, "uri-js": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", - "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -3090,9 +3083,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "ytdl-core": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.4.1.tgz", - "integrity": "sha512-VRqJ1pPEfIt7Lja2bKaTRqO47GfVbqhFfKqtmxU5Pp2BM0HUb0gVyf3wL9HlA+Vb4OblXs2MzSqWI8Fi1sSk4Q==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.4.3.tgz", + "integrity": "sha512-0GexY2dMk0pvIE0UAB5GPiyaNjiawqDi5eUCUHW7CP1ZNyEco8Lct8/3AsI6aO0EQLGK774ocDvWxOE7W0qrTg==", "requires": { "m3u8stream": "^0.8.3", "miniget": "^4.0.0", @@ -3109,6 +3102,11 @@ "ytdl-core": "^4.2.1" }, "dependencies": { + "@types/node": { + "version": "14.14.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.21.tgz", + "integrity": "sha512-cHYfKsnwllYhjOzuC5q1VpguABBeecUp24yFluHpn/BQaVxB1CuQ1FSRZCzrPxrkIfWISXV2LbeoBthLWg0+0A==" + }, "prism-media": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.2.3.tgz", diff --git a/package.json b/package.json index 357ddd5..e27e3ea 100644 --- a/package.json +++ b/package.json @@ -39,11 +39,11 @@ "mathjs": "^8.1.1", "moment": "^2.29.1", "moment-duration-format": "^2.3.2", - "mongoose": "^5.11.11", + "mongoose": "^5.11.12", "rss-parser": "^3.10.0", "superagent": "^6.1.0", - "systeminformation": "^4.34.5", - "ytdl-core": "^4.4.1", + "systeminformation": "^4.34.7", + "ytdl-core": "^4.4.3", "ytdl-core-discord": "^1.2.5" }, "devDependencies": { diff --git a/src/Commands/bot.js b/src/Commands/bot.js index a5bb890..8fc10b3 100644 --- a/src/Commands/bot.js +++ b/src/Commands/bot.js @@ -20,16 +20,15 @@ const { emojis, sysdata } = require('../Utils'); const Discord = require('discord.js'); const { config, links } = require('../../Configs'); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); const pkg = require('../../package.json'); -exports.run = async (aruna, message) => { - - async function getUptime() { - const req = await aruna.shard.broadcastEval('this.uptime'); - return req.reduce((p, n) => p + n, 0); +exports.run = async (aruna, message, args, langc) => { + if (langc) { + language = langc; } - let totalSeconds = ((await getUptime() / aruna.shard.count) / 1000); + let totalSeconds = (aruna.uptime / 1000); const days = Math.floor(totalSeconds / 86400); totalSeconds %= 86400; const hours = Math.floor(totalSeconds / 3600); @@ -49,7 +48,7 @@ exports.run = async (aruna, message) => { uptime = `${seconds}s`; } - async function getServerCount() { + /* async function getServerCount() { const req = await aruna.shard.fetchClientValues('guilds.size'); return req.reduce((p, n) => p + n, 0); @@ -65,7 +64,7 @@ exports.run = async (aruna, message) => { const req = await aruna.shard.broadcastEval('this.guilds.reduce((p, n) => p + n.memberCount, 0)'); return req.reduce((p, n) => p + n, 0); - } + } */ const user = message.guild.member(aruna.user); @@ -75,30 +74,39 @@ exports.run = async (aruna, message) => { const embed = new Discord.RichEmbed() .setAuthor(aruna.user.username, `${aruna.user.avatarURL}`) - .setDescription('`Informações Básicas`') - .addField(`(${emojis.robot}) Nome na Guild`, name, true) - .addField('(📡) Versão', version, true) - .addField('(🕰️) Uptime', uptime, true) - .addField('(📃) Canais', await getChannelCount(), true) - .addField('(🖥️) Servidores', await getServerCount(), true) - .addField('(🕹️) Usuários', await getUserCount(), true) - .addField('(💻) Seu Shard', aruna.shard.id, true) - .addField('(💠) Total de Shards', aruna.shard.count, true) - .addField('(🏓) Ping do Shard', `${Math.round(aruna.ping)}ms`, true) - .setThumbnail(`${aruna.user.displayAvatarURL}`) - .setFooter(`Informações Solicitadas por ${message.author.tag}`, message.author.avatarURL) + .setDescription(language.bot.embed.basic.description) + .addField(language.bot.embed.basic.field[0].replace('%s', emojis.robot), name, true) + .addField(language.bot.embed.basic.field[1].replace('%s', '📡'), version, true) + .addField(language.bot.embed.basic.field[2].replace('%s', '🕰️'), uptime, true) + // .addField(language.bot.embed.basic.field[3].replace('%s', '📃'), await getChannelCount(), true) + // .addField(language.bot.embed.basic.field[4].replace('%s', '🖥️'), await getServerCount(), true) + // .addField(language.bot.embed.basic.field[5].replace('%s', '🕹️'), await getUserCount(), true) + .addField(language.bot.embed.basic.field[6].replace('%s', '💻'), aruna.shard.id, true) + .addField(language.bot.embed.basic.field[7].replace('%s', '💠'), aruna.shard.count, true) + .addField(language.bot.embed.basic.field[8].replace('%s', '🏓'), `${Math.round(aruna.ping)}ms`, true) + .setThumbnail(aruna.user.displayAvatarURL) + .setFooter(language.generic.embed.footer.replace('[usertag]', message.author.tag), message.author.avatarURL) .setTimestamp(); if (links.invites[0]) { - embed.addField('Convite', `[Link](${links.invites[0]})`, true); + embed.addField(language.bot.embed.basic.field[9], + language.bot.generic.linkr + .replace('%s', language.generic.strings.link) + .replace('%s', links.invites[0]), true); } if (links.website) { - embed.addField('Meu Site', `[Link](${links.website})`, true); + embed.addField(language.bot.embed.basic.field[10], + language.bot.generic.linkr + .replace('%s', language.generic.strings.link) + .replace('%s', links.website), true); } if (links.supportServers[0]) { - embed.addField('Servidor de Suporte', `[Link](${links.supportServers[0]})`, true); + embed.addField(language.bot.embed.basic.field[11], + language.bot.generic.linkr + .replace('%s', language.generic.strings.link) + .replace('%s', links.supportServers[0]), true); } var os = await sysdata.GetOSData(); @@ -115,17 +123,19 @@ exports.run = async (aruna, message) => { const embed2 = new Discord.RichEmbed() .setAuthor(aruna.user.username, `${aruna.user.avatarURL}`) - .setDescription('`Informações Avançadas`') - .addField('Versão do Node', process.version) - .addField('Versão do discord.js', pkg.dependencies['discord.js'].replace('^', '')) - .addField('Informações da Host', `Sistema Operacional: ${os.distro}\n - Processador: ${cpu.manufacturer} ${cpu.brand}\n - Núcleos do Processador: ${cpu.cores}\n - Uso de Ram: ${ram}mb / ${ramT}mb`) - .addField('Criada e Desenvolvida Por', 'Lobo Metalurgico (<@281515925960654848>)\n\nContato: https://youtube.com/LoboMetalurgico | contato@lobometalurgico.tk') - .addField('Idealizada Por', 'Carson (<@773670346921476166>)') - .addField('Avatar Por', 'Kira\'s Art (<@207023257512181760>)\n\nContato: https://twitter.com/kiratokioArt') - .setFooter(`Informações Solicitadas por ${message.author.tag}`, message.author.avatarURL) + .setDescription(language.bot.embed.advanced.description) + .addField(language.bot.embed.advanced.field[0], process.version) + .addField(language.bot.embed.advanced.field[1], pkg.dependencies['discord.js'].replace('^', '')) + .addField(language.bot.embed.advanced.field[2], + `${language.bot.embed.advanced.content[2][0]} ${os.distro}\n + ${language.bot.embed.advanced.content[2][1]} ${cpu.manufacturer} ${cpu.brand}\n + ${language.bot.embed.advanced.content[2][2]} ${cpu.cores}\n + ${language.bot.embed.advanced.content[2][3]} ${ram}mb / ${ramT}mb + `) + .addField(language.bot.embed.advanced.field[3], language.bot.embed.advanced.content[3]) + .addField(language.bot.embed.advanced.field[4], language.bot.embed.advanced.content[4]) + .addField(language.bot.embed.advanced.field[5], language.bot.embed.advanced.content[5]) + .setFooter(language.generic.embed.footer.replace('[usertag]', message.author.tag), message.author.avatarURL) .setTimestamp(); message.channel.send(embed).then(async msg => { @@ -207,8 +217,8 @@ exports.run = async (aruna, message) => { exports.config = { name: 'botinfo', - aliases: ['bot', 'uptime'], - description: 'Lista as Principais informações do bot', + aliases: ['bot', 'uptime', 'robotinfo', 'info'], category: `${emojis.robot} Utilidades`, + description: language.bot.config.description, public: true }; diff --git a/src/Events/ready.js b/src/Events/ready.js index 448fdbd..9d4a1d0 100644 --- a/src/Events/ready.js +++ b/src/Events/ready.js @@ -28,7 +28,7 @@ const langE = require(`../../languages/bot/${config.defaultLanguage}/events.json exports.run = async (aruna) => { log(language.generic.connected); - async function getUserCount() { + /* async function getUserCount() { const req = await aruna.shard.fetchClientValues('users.size'); return req.reduce((p, n) => p + n, 0); @@ -38,7 +38,7 @@ exports.run = async (aruna) => { const req = await aruna.shard.fetchClientValues('guilds.size'); return req.reduce((p, n) => p + n, 0); - } + } */ const status = [ { @@ -70,14 +70,14 @@ exports.run = async (aruna) => { name: langE.ready.status['7'], type: 'listening' }, - { + /* { name: langE.ready.status['8'].replace('[USERS]', await getUserCount()), type: 'listening' }, { name: langE.ready.status['9'].replace('[GUILDS]', await getServerCount()), type: 'listening' - } + } */ ]; async function setStatus() { var maintenance = await database.System.findOne({ _id: 1 }); From e5a0f2988948a0233e91edf15c1a060636b828f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sat, 6 Feb 2021 14:48:33 -0300 Subject: [PATCH 150/164] Update dependencies and add nodemon --- package-lock.json | 915 ++++++++++++++++++++++++++++++++++++++++------ package.json | 29 +- 2 files changed, 815 insertions(+), 129 deletions(-) diff --git a/package-lock.json b/package-lock.json index 72882e8..ea505a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,12 +5,12 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", "dev": true, "requires": { - "@babel/highlight": "^7.10.4" + "@babel/highlight": "^7.12.13" } }, "@babel/helper-validator-identifier": { @@ -20,12 +20,12 @@ "dev": true }, "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", + "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.4", + "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -102,35 +102,44 @@ } }, "@discordjs/node-pre-gyp": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@discordjs/node-pre-gyp/-/node-pre-gyp-0.1.0.tgz", - "integrity": "sha512-6u3EbK2x+j9bM3iK9/pE7BWLxOXZ1PvcsbDo3ZBdPocu95qPHj8zCVsBBk3Cao7V6o8QpwxUyJl6oVJ6T3ZgAg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@discordjs/node-pre-gyp/-/node-pre-gyp-0.2.0.tgz", + "integrity": "sha512-2PIodKAuDLZZ8LGVFiQkZicco9PGcUICU/NlMqNMXuy91qMGKosOkDkzj4x+Kl1WYR1r2Y/fyOIgje5zezavYQ==", "requires": { "detect-libc": "^1.0.3", "mkdirp": "^0.5.5", - "needle": "^2.4.1", - "nopt": "^4.0.3", - "npm-packlist": "^1.4.8", + "needle": "^2.6.0", + "nopt": "^5.0.0", "npmlog": "^4.1.2", "rc": "^1.2.8", "rimraf": "^3.0.2", - "semver": "^7.3.0", - "tar": "^6.0.2" + "semver": "^7.3.4", + "tar": "^6.1.0" + }, + "dependencies": { + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@discordjs/opus": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@discordjs/opus/-/opus-0.3.3.tgz", - "integrity": "sha512-n3hUs4RY0K8cz8vJ2GiZE4EdJlexoxs1vGsaft5lZlAnU6wsZfncpv4px+HVOMKN8ddtjriGfsrG4lVkAyZcmQ==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@discordjs/opus/-/opus-0.4.0.tgz", + "integrity": "sha512-89PRSuvBKBvZLkftVqRnQ9/rPXG9zDjKdbtlGC0RiZ6hJYFdWb4ND/maMgJPkTAvlIrRChm67eZOuIYhiKBDbQ==", "requires": { - "@discordjs/node-pre-gyp": "^0.1.0", - "node-addon-api": "^3.0.2" + "@discordjs/node-pre-gyp": "^0.2.0", + "node-addon-api": "^3.1.0" } }, "@eslint/eslintrc": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", - "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", + "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -140,7 +149,7 @@ "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", - "lodash": "^4.17.19", + "lodash": "^4.17.20", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" }, @@ -506,6 +515,19 @@ "fastq": "^1.6.0" } }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, "@types/bson": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.3.tgz", @@ -520,9 +542,9 @@ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" }, "@types/mongodb": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.3.tgz", - "integrity": "sha512-6YNqGP1hk5bjUFaim+QoFFuI61WjHiHE1BNeB41TA00Xd2K7zG4lcWyLLq/XtIp36uMavvS5hoAUJ+1u/GcX2Q==", + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.6.tgz", + "integrity": "sha512-ghYevKiSh/TGk2MAwSRZP7T1ilR9Pw8Fa7pT9GGVGZPUsWKdZjZ4G6LG3MqK2iXKdNba994F8W9ikA+qx2Eo3A==", "requires": { "@types/bson": "*", "@types/node": "*" @@ -598,6 +620,49 @@ "uri-js": "^4.2.2" } }, + "ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "requires": { + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, "ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", @@ -623,6 +688,15 @@ "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", @@ -682,6 +756,11 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, "bl": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", @@ -733,6 +812,60 @@ } } }, + "boxen": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "cli-boxes": "^2.2.0", + "string-width": "^4.1.0", + "term-size": "^2.1.0", + "type-fest": "^0.8.1", + "widest-line": "^3.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -779,12 +912,46 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + } + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -799,16 +966,49 @@ "supports-color": "^7.1.0" } }, + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, "chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, "clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" }, + "cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -861,6 +1061,19 @@ "typedarray": "^0.0.6" } }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + } + }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -910,10 +1123,15 @@ "which": "^2.0.1" } }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" + }, "dateformat": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.4.1.tgz", - "integrity": "sha512-3V9b/50QBYmFtd2c3cPOmdr2xNfnDphoBLxh/UVBoPIsylWkbUYGq3f4EQYuEaK7Mq4vcIpQCmOyJ37pqW/Uug==" + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.5.1.tgz", + "integrity": "sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q==" }, "dblapi.js": { "version": "2.4.1", @@ -933,6 +1151,14 @@ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==" }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -944,6 +1170,11 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, "del": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", @@ -1023,6 +1254,19 @@ "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "requires": { + "is-obj": "^2.0.0" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -1031,14 +1275,21 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, "enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", @@ -1049,15 +1300,20 @@ } }, "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" }, "env-paths": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==" }, + "escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -1075,13 +1331,13 @@ "dev": true }, "eslint": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.17.0.tgz", - "integrity": "sha512-zJk08MiBgwuGoxes5sSQhOtibZ75pz0J35XTRlZOk9xMffhpA9BTbQZxoXZzOl5zMbleShbGwtw+1kGferfFwQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.19.0.tgz", + "integrity": "sha512-CGlMgJY56JZ9ZSYhJuhow61lMPPjUzWmChFya71Z/jilVos7mR/jPgaEfVGgMBY5DshbKdG8Ezb8FDCHcoMEMg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.2.2", + "@eslint/eslintrc": "^0.3.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -1105,7 +1361,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.19", + "lodash": "^4.17.20", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -1210,9 +1466,9 @@ "dev": true }, "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -1482,9 +1738,9 @@ } }, "flatted": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", - "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", "dev": true }, "form-data": { @@ -1530,6 +1786,12 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", @@ -1551,6 +1813,14 @@ "wide-align": "^1.1.0" } }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, "gifwrap": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.2.tgz", @@ -1590,6 +1860,21 @@ "process": "~0.5.1" } }, + "global-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", + "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", + "requires": { + "ini": "1.3.7" + }, + "dependencies": { + "ini": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==" + } + } + }, "globals": { "version": "12.4.0", "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", @@ -1619,6 +1904,24 @@ } } }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -1634,6 +1937,16 @@ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, "http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", @@ -1699,13 +2012,10 @@ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, - "ignore-walk": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", - "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", - "requires": { - "minimatch": "^3.0.4" - } + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=" }, "image-q": { "version": "1.1.1", @@ -1722,11 +2032,15 @@ "resolve-from": "^4.0.0" } }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, "indent-string": { "version": "4.0.0", @@ -1757,6 +2071,22 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -1783,11 +2113,30 @@ "is-extglob": "^2.1.1" } }, + "is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "requires": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + } + }, + "is-npm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==" + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + }, "is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", @@ -1798,6 +2147,16 @@ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==" }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -1847,6 +2206,11 @@ "esprima": "^4.0.0" } }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -1864,6 +2228,22 @@ "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz", "integrity": "sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==" }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "requires": { + "json-buffer": "3.0.0" + } + }, + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "requires": { + "package-json": "^6.3.0" + } + }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -1900,6 +2280,19 @@ "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, "m3u8stream": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.8.3.tgz", @@ -1909,10 +2302,25 @@ "sax": "^1.2.4" } }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, "mathjs": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-8.1.1.tgz", - "integrity": "sha512-b3TX3EgiZObujjwb8lZnTDLUuivC2jar4ZBjmGJ4stFYCDXx/DNwx5yry5t/z65p9mvejyZel1qoeR05KtChcQ==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-9.2.0.tgz", + "integrity": "sha512-R2fQxaOmyifxgP4+c59dnfLwpKI1KYHdnT5lLwDuHIZvgyGb71M8ay6kTJTEv9rG04pduqvX4tbBUoG5ypTF8A==", "requires": { "complex.js": "^2.0.11", "decimal.js": "^10.2.1", @@ -1977,6 +2385,11 @@ "mime-db": "1.44.0" } }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, "min-document": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", @@ -1986,9 +2399,9 @@ } }, "miniget": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/miniget/-/miniget-4.1.0.tgz", - "integrity": "sha512-kzhrNv5L7LlomwGmPGQsLQ2PnT1LeJJWfB0wNFGyv426gEM1gsfziBQmfkr6XOBA8EusZg9nowlNT5CbuKTjZg==" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/miniget/-/miniget-4.2.0.tgz", + "integrity": "sha512-IzTOaNgBw/qEpzkPTE7X2cUVXQfSKbG8w52Emi93zb+Zya2ZFrbmavpixzebuDJD9Ku4ecbaFlC7Y1cEESzQtQ==" }, "minimatch": { "version": "3.0.4", @@ -2052,9 +2465,9 @@ } }, "mongoose": { - "version": "5.11.12", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.11.12.tgz", - "integrity": "sha512-70wST9hnVlPbt5nKClPKJo54ULIACOVGYdg8fyj17sWtCJLyURCDahhzUh+oUA7WVykOW2ZMqWm2kujBIWYagg==", + "version": "5.11.15", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.11.15.tgz", + "integrity": "sha512-8T4bT6eCGB7MqCm40oVhnhT/1AyAdwe+y1rYUhdl3ljsks3BpYz8whZgcMkIoh6VoCCjipOXRqZqdk1UByvlYA==", "requires": { "@types/mongodb": "^3.5.27", "bson": "^1.1.4", @@ -2145,37 +2558,60 @@ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz", "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==" }, - "nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "nodemon": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.7.tgz", + "integrity": "sha512-XHzK69Awgnec9UzHr1kc8EomQh4sjTQ8oRf8TsGrSmHDx9/UmiGG9E/mM3BuTfNeFwdNBvrqQq/RHL0xIeyFOA==", "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "chokidar": "^3.2.2", + "debug": "^3.2.6", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.7", + "semver": "^5.7.1", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.3", + "update-notifier": "^4.1.0" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, - "npm-bundled": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", - "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "requires": { - "npm-normalize-package-bin": "^1.0.1" + "abbrev": "1" } }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, - "npm-packlist": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", - "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" }, "npmlog": { "version": "4.1.2", @@ -2238,24 +2674,10 @@ "word-wrap": "^1.2.3" } }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" }, "p-map": { "version": "4.0.0", @@ -2265,6 +2687,24 @@ "aggregate-error": "^3.0.0" } }, + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, "pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -2363,6 +2803,11 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, "prism-media": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-0.0.4.tgz", @@ -2392,12 +2837,34 @@ "ipaddr.js": "1.9.1" } }, + "pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "requires": { + "escape-goat": "^2.0.0" + } + }, "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", @@ -2449,6 +2916,14 @@ "util-deprecate": "~1.0.1" } }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "requires": { + "picomatch": "^2.2.1" + } + }, "regenerator-runtime": { "version": "0.13.7", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", @@ -2465,6 +2940,22 @@ "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true }, + "registry-auth-token": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "requires": { + "rc": "^1.2.8" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "requires": { + "rc": "^1.2.8" + } + }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -2498,6 +2989,14 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -2512,9 +3011,9 @@ } }, "rss-parser": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/rss-parser/-/rss-parser-3.10.0.tgz", - "integrity": "sha512-TC6FNvEmdFeaW6r/60MSJT7cp4d95X4M9As+mvNtxRx7YXHxpV95syMnWZthZSeD1BRN7SEKdq6c3nxMLQRopw==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/rss-parser/-/rss-parser-3.11.0.tgz", + "integrity": "sha512-oTLoYW+bNqNwkz8OpGinBU9s3As0sdczQjETIZFgyAdi7AopyhoVFGPIyFMYXXEY8hayKzD5CH+4CtmiPtJ89g==", "requires": { "entities": "^2.0.3", "xml2js": "^0.4.19" @@ -2559,6 +3058,21 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" }, + "semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, "send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", @@ -2789,9 +3303,9 @@ } }, "systeminformation": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-4.34.7.tgz", - "integrity": "sha512-cS3FiSZasFgVNjO9CP3aZmTO2VHwXKG+JN6Z85nWRyOzxRMNbZe7Xzwrewp42hj+OPMC3hk7MrAFyu/qLM65Mw==" + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.0.10.tgz", + "integrity": "sha512-RW96yG1CKnyKdyubP0/6YOclHS4+t+7IQqZRWTbO6fuyoKIvQjvdy1sylYOGEMmp0s7y3nVoHDblz++QOGpycg==" }, "table": { "version": "6.0.7", @@ -2806,9 +3320,9 @@ }, "dependencies": { "ajv": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.3.tgz", - "integrity": "sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.4.tgz", + "integrity": "sha512-xzzzaqgEQfmuhbhAoqjJ8T/1okb6gAzXn/eQRNpAN1AEUoHJTNF9xCDRTtf/s3SKldtZfa+RJeTs+BQq+eZ/sw==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -2877,6 +3391,11 @@ } } }, + "term-size": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==" + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -2898,6 +3417,11 @@ "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==" }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -2911,6 +3435,24 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "requires": { + "nopt": "~1.0.10" + }, + "dependencies": { + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "requires": { + "abbrev": "1" + } + } + } + }, "tweetnacl": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", @@ -2928,8 +3470,7 @@ "type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" }, "type-is": { "version": "1.6.18", @@ -2950,6 +3491,14 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, "uid-safe": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", @@ -2958,11 +3507,73 @@ "random-bytes": "~1.0.0" } }, + "undefsafe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", + "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", + "requires": { + "debug": "^2.2.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "requires": { + "crypto-random-string": "^2.0.0" + } + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, + "update-notifier": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", + "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", + "requires": { + "boxen": "^4.2.0", + "chalk": "^3.0.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.1", + "is-npm": "^4.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "pupa": "^2.0.1", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -2972,6 +3583,14 @@ "punycode": "^2.1.0" } }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + } + }, "utif": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", @@ -3023,6 +3642,44 @@ "string-width": "^1.0.2 || 2" } }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "requires": { + "string-width": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -3034,6 +3691,17 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, "ws": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", @@ -3042,6 +3710,11 @@ "async-limiter": "~1.0.0" } }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" + }, "xhr": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", @@ -3083,9 +3756,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "ytdl-core": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.4.3.tgz", - "integrity": "sha512-0GexY2dMk0pvIE0UAB5GPiyaNjiawqDi5eUCUHW7CP1ZNyEco8Lct8/3AsI6aO0EQLGK774ocDvWxOE7W0qrTg==", + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.4.5.tgz", + "integrity": "sha512-/ugilIF2PskxNfQgkYZ/esvkp+fiB/mOPdIExW/En+1QTbq5VeTVqgf2hETTen0Co2lHMM4eRxPaczDHTmkb7A==", "requires": { "m3u8stream": "^0.8.3", "miniget": "^4.0.0", diff --git a/package.json b/package.json index e27e3ea..33f7f8b 100644 --- a/package.json +++ b/package.json @@ -25,9 +25,9 @@ ], "license": "AGPL-3.0", "dependencies": { - "@discordjs/opus": "^0.3.3", + "@discordjs/opus": "^0.4.0", "chalk": "^4.1.0", - "dateformat": "^4.4.1", + "dateformat": "^4.5.1", "dblapi.js": "^2.4.1", "del": "^6.0.0", "discord.js": "^11.6.4", @@ -36,17 +36,30 @@ "ffmpeg": "0.0.4", "ffmpeg-static": "^4.2.7", "jimp": "^0.16.1", - "mathjs": "^8.1.1", + "mathjs": "^9.2.0", "moment": "^2.29.1", "moment-duration-format": "^2.3.2", - "mongoose": "^5.11.12", - "rss-parser": "^3.10.0", + "mongoose": "^5.11.15", + "nodemon": "^2.0.7", + "rss-parser": "^3.11.0", "superagent": "^6.1.0", - "systeminformation": "^4.34.7", - "ytdl-core": "^4.4.3", + "systeminformation": "^5.0.10", + "ytdl-core": "^4.4.5", "ytdl-core-discord": "^1.2.5" }, "devDependencies": { - "eslint": "^7.17.0" + "eslint": "^7.19.0" + }, + "nodemonConfig": { + "ignore": [ + ".Configs/*", + "Configs/*", + ".git/*", + ".gitignore", + ".github/", + "package.json", + "package-lock.json" + ], + "delay": "5000" } } From 5bcba7d4b5fc9aa76dd05df33b7da2c0f430e4e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 7 Feb 2021 17:58:16 -0300 Subject: [PATCH 151/164] Perfomance Fix --- languages | 2 +- src/Commands/bot.js | 20 +++++++++++++++----- src/Commands/ping.js | 2 +- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/languages b/languages index 83571ad..fe55707 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 83571ada1c7e00bc5901684e9346cded3ae516c5 +Subproject commit fe55707d8125b2602720e5f1df505dd28972af4b diff --git a/src/Commands/bot.js b/src/Commands/bot.js index 8fc10b3..1e47529 100644 --- a/src/Commands/bot.js +++ b/src/Commands/bot.js @@ -17,7 +17,7 @@ along with this program. If not, see . */ -const { emojis, sysdata } = require('../Utils'); +const { emoji, sysdata } = require('../Utils'); const Discord = require('discord.js'); const { config, links } = require('../../Configs'); var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); @@ -28,6 +28,17 @@ exports.run = async (aruna, message, args, langc) => { language = langc; } + const preEmbed = new Discord.RichEmbed() + .setTitle(language.bot.embed.pre.title.replace('%s', emoji.loading).replace('%s', message.member.displayName)) + .setColor('#00000') + .setDescription(language.bot.embed.pre.description) + .setFooter(language.generic.embed.footer.replace('[usertag]', message.author.tag)) + .setTimestamp(); + + const preMessage = await message.channel.send(preEmbed); + + const time = 60000; + let totalSeconds = (aruna.uptime / 1000); const days = Math.floor(totalSeconds / 86400); totalSeconds %= 86400; @@ -75,7 +86,7 @@ exports.run = async (aruna, message, args, langc) => { const embed = new Discord.RichEmbed() .setAuthor(aruna.user.username, `${aruna.user.avatarURL}`) .setDescription(language.bot.embed.basic.description) - .addField(language.bot.embed.basic.field[0].replace('%s', emojis.robot), name, true) + .addField(language.bot.embed.basic.field[0].replace('%s', emoji.robot), name, true) .addField(language.bot.embed.basic.field[1].replace('%s', '📡'), version, true) .addField(language.bot.embed.basic.field[2].replace('%s', '🕰️'), uptime, true) // .addField(language.bot.embed.basic.field[3].replace('%s', '📃'), await getChannelCount(), true) @@ -119,8 +130,6 @@ exports.run = async (aruna, message, args, langc) => { var cpu = await sysdata.GetCPUModel(); - const time = 60000; - const embed2 = new Discord.RichEmbed() .setAuthor(aruna.user.username, `${aruna.user.avatarURL}`) .setDescription(language.bot.embed.advanced.description) @@ -140,6 +149,7 @@ exports.run = async (aruna, message, args, langc) => { message.channel.send(embed).then(async msg => { await collector1(msg, false); + preMessage.delete(); }); async function collector1 (msg, needRemoveEmote) { @@ -218,7 +228,7 @@ exports.run = async (aruna, message, args, langc) => { exports.config = { name: 'botinfo', aliases: ['bot', 'uptime', 'robotinfo', 'info'], - category: `${emojis.robot} Utilidades`, + category: `${emoji.robot} Utilidades`, description: language.bot.config.description, public: true }; diff --git a/src/Commands/ping.js b/src/Commands/ping.js index f5ac343..e2d29b2 100644 --- a/src/Commands/ping.js +++ b/src/Commands/ping.js @@ -28,7 +28,7 @@ exports.run = async (aruna, message, args, langc) => { } const embed = new Discord.RichEmbed() - .setTitle(language.ping.embed['1'].title.replace('[emoji]', emoji.loading).replace('[username]', message.author.username)) + .setTitle(language.ping.embed['1'].title.replace('[emoji]', emoji.loading).replace('[username]', message.member.displayName)) .setColor('#f5ebeb') .setDescription(language.ping.embed['1'].description) .setFooter(language.generic.embed.footer.replace('[usertag]', message.author.tag)) From c5ba8ac2213440195302257dd200a815b803b469 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 7 Feb 2021 18:39:31 -0300 Subject: [PATCH 152/164] Userinfo Localization --- languages | 2 +- src/Commands/userinfo.js | 62 +++++++++++++++++++++------------------- 2 files changed, 34 insertions(+), 30 deletions(-) diff --git a/languages b/languages index fe55707..cf66cd6 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit fe55707d8125b2602720e5f1df505dd28972af4b +Subproject commit cf66cd603bcd6613b13755eb2a7577e2f86d9924 diff --git a/src/Commands/userinfo.js b/src/Commands/userinfo.js index 267e895..86dc705 100644 --- a/src/Commands/userinfo.js +++ b/src/Commands/userinfo.js @@ -35,22 +35,26 @@ exports.run = (aruna, message, args, langc) => { message.author ); - const userNickName = - mentionedUser.nickname !== null - ? `${mentionedUser.nickname}` - : 'Sem apelido'; + if (mentionedUser.user === aruna.user) { + return require('./bot').run(aruna, message, args, langc); + } + + const userNickName = mentionedUser.nickname !== null ? mentionedUser.nickname : language.userinfo.strings.nickname; + const userDaysDiscord = Math.round( Math.abs( (mentionedUser.user.createdAt.getTime() - new Date().getTime()) / (24 * 60 * 60 * 1000) ) ); + const userDaysGuild = Math.round( Math.abs( (mentionedUser.joinedAt.getTime() - new Date().getTime()) / (24 * 60 * 60 * 1000) ) ); + var userStatus; var userStatusEmoji; @@ -76,12 +80,11 @@ exports.run = (aruna, message, args, langc) => { } let userAdminServer; - if (mentionedUser.hasPermission('ADMINISTRATOR') === true) - userAdminServer = 'Sim'; - if (mentionedUser.hasPermission('ADMINISTRATOR') === false) - userAdminServer = 'Não'; + + mentionedUser.hasPermission('ADMINISTRATOR') ? userAdminServer = language.generic.strings.yes : userAdminServer = language.generic.strings.no; let userAvatar = mentionedUser.user.displayAvatarURL; + if (userAvatar.endsWith('.gif')) { userAvatar = `${mentionedUser.user.displayAvatarURL}?size=2048`; } @@ -89,20 +92,20 @@ exports.run = (aruna, message, args, langc) => { var stringtime1; switch (userDaysDiscord) { case 1: - stringtime1 = language.userinfo.generic.days; + stringtime1 = language.generic.strings.day; break; default: - stringtime1 = language.userinfo.generic.day; + stringtime1 = language.generic.strings.days; break; } var stringtime2; switch (userDaysGuild) { case 1: - stringtime2 = language.userinfo.generic.days; + stringtime2 = language.generic.strings.day; break; default: - stringtime2 = language.userinfo.generic.day; + stringtime2 = language.generic.strings.days; break; } @@ -111,34 +114,34 @@ exports.run = (aruna, message, args, langc) => { const premium = message.guild.member(mentionedUser.user).premiumSinceTimestamp; if (premium !== null) { - userBoost = `\n\n(${emoji.nitro}) **Impulsionando Desde:** ${dateFormat(message.guild.member(message.author).premiumSinceTimestamp, 'dd/mm/yyyy "às" HH:MM:ss')}`; + userBoost = `\n\n(${emoji.nitro}) **${language.userinfo.strings.boosting}** ${dateFormat(message.guild.member(message.author).premiumSinceTimestamp, language.userinfo.strings.date)}`; } - const accountCreated = dateFormat(mentionedUser.user.createdTimestamp, 'dd/mm/yyyy "às" HH:MM:ss'); - const joinedIn = dateFormat(mentionedUser.joinedTimestamp, 'dd/mm/yyyy "às" HH:MM:ss'); + const accountCreated = dateFormat(mentionedUser.user.createdTimestamp, language.userinfo.strings.date); + const joinedIn = dateFormat(mentionedUser.joinedTimestamp, language.userinfo.strings.date); const embed = new Discord.RichEmbed() - .setAuthor(`${mentionedUser.user.username}`, `${userAvatar}`) - .addField('Informações do Usuário', ` - 🙋 **Nome:** \`${mentionedUser.user.username}\` + .setAuthor(mentionedUser.user.username, userAvatar) + .addField(language.userinfo.embed.field.title[0], + `🙋 **${language.userinfo.embed.field.description[0][0]}** \`${mentionedUser.user.username}\` - ${emoji.menu} **Tag Completa:** \`${mentionedUser.user.tag}\` + ${emoji.menu} **${language.userinfo.embed.field.description[0][1]}** \`${mentionedUser.user.tag}\` - **Id:** \`${mentionedUser.user.id}\` + **${language.userinfo.embed.field.description[0][2]}** \`${mentionedUser.user.id}\` - ${userStatusEmoji} **Status:** \`${userStatus}\` + ${userStatusEmoji} **${language.userinfo.embed.field.description[0][3]}** \`${userStatus}\` - ${emoji.pass} **Criou a Conta Em:** \`${accountCreated}\` (${userDaysDiscord} ${stringtime1} atrás)`, false) - .addField('Informações do Membro', ` - (${emoji.discord}) **Apelido:** \`${userNickName}\` + ${emoji.pass} **${language.userinfo.embed.field.description[0][4]}** \`${accountCreated}\` (${userDaysDiscord} ${stringtime1} ${language.generic.strings.back.toLowerCase()})${userBoost} + `, false) + .addField(language.userinfo.embed.field.title[1], + `(${emoji.discord}) **${language.userinfo.embed.field.description[1][0]}** \`${userNickName}\` - (👮) **É Administrador:** \`${userAdminServer}\` + (👮) **${language.userinfo.embed.field.description[1][1]}** \`${userAdminServer}\` - (:date:) **Entrou Em:** \`${joinedIn}\` (${userDaysGuild} ${stringtime2} atrás)${userBoost} - `, false) - .setFooter(language.generic.embed.footer2.replace('[usertag]', message.author.tag)) + (:date:) **${language.userinfo.embed.field.description[1][2]}** \`${joinedIn}\` (${userDaysGuild} ${stringtime2} ${language.generic.strings.back.toLowerCase()})`, false) + .setFooter(language.generic.embed.footer.replace('[usertag]', message.author.tag)) .setThumbnail(userAvatar) - .setColor('#56eaf5') + .setColor('#012778') .setTimestamp(); message.channel.send(embed); @@ -147,5 +150,6 @@ exports.config = { name: 'userinfo', aliases: [], category: `${emoji.robot} Utilidades`, + description: language.userinfo.config.description, public: true }; From 27db55e40817c27f6f015ea18ed359f19b4aeeec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 7 Feb 2021 19:19:04 -0300 Subject: [PATCH 153/164] Update Language + Unban Command Localization --- languages | 2 +- src/Commands/ban.js | 4 +- src/Commands/kick.js | 4 +- src/Commands/serverinfo.js | 4 +- src/Commands/unban.js | 109 ++++++++++++++++++++++++++----------- src/Commands/userinfo.js | 2 +- 6 files changed, 86 insertions(+), 39 deletions(-) diff --git a/languages b/languages index cf66cd6..112b2d9 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit cf66cd603bcd6613b13755eb2a7577e2f86d9924 +Subproject commit 112b2d98a596ae6ae425f370608c159dc3a2b1bc diff --git a/src/Commands/ban.js b/src/Commands/ban.js index 2474967..adfd1a1 100644 --- a/src/Commands/ban.js +++ b/src/Commands/ban.js @@ -130,13 +130,13 @@ exports.run = async (aruna, message, args, langc, prefix, command) => { .setDescription(language.ban.embed.sucess.description.replace('[username]', buser.username)) .addField(language.ban.embed.sucess.field1.title, language.ban.embed.sucess.field1.content.replace('[username]', buser.username).replace('[userId]', buser.id), false) .addField(language.ban.embed.sucess.field2, message.author, false) - .addField(language.ban.embed.sucess.field3, dateFormat(now, 'dd/mm/yyyy "às" HH:MM:ss'), false) // Localize the date + .addField(language.ban.embed.sucess.field3, dateFormat(now, language.generic.strings.date), false) .addField(language.ban.embed.sucess.field4, reason, false) .setTimestamp(); message.guild.ban(buser, reason).catch(err => { console.log(err); - message.channel.send(error7); + return message.channel.send(error7); }).then(() => { message.channel.send(embed); }); diff --git a/src/Commands/kick.js b/src/Commands/kick.js index 2c7aada..94ab4fa 100644 --- a/src/Commands/kick.js +++ b/src/Commands/kick.js @@ -117,14 +117,14 @@ exports.run = async (aruna, message, args, langc, prefix, command) => { .setDescription(language.kick.embed.sucess.description.replace('[username]', kuser.username)) .addField(language.kick.embed.sucess.field1.title, language.kick.embed.sucess.field1.content.replace('[username]', kuser.username).replace('[userId]', kuser.id), false) .addField(language.kick.embed.sucess.field2, message.author, false) - .addField(language.kick.embed.sucess.field3, dateFormat(now, 'dd/mm/yyyy "às" HH:MM:ss'), false) // Localize the date + .addField(language.kick.embed.sucess.field3, dateFormat(now, language.generic.strings.date), false) .addField(language.kick.embed.sucess.field4, reason, false) .setTimestamp(); message.guild.member(kuser).kick(reason).catch(err => { console.log(err); - message.channel.send(error7); + return message.channel.send(error7); }).then(() => { message.channel.send(embed); }); diff --git a/src/Commands/serverinfo.js b/src/Commands/serverinfo.js index bf1b0d2..2c0e688 100644 --- a/src/Commands/serverinfo.js +++ b/src/Commands/serverinfo.js @@ -101,9 +101,9 @@ exports.run = async (aruna, message, args, langc) => { .addField(`:computer: ${language.serverinfo.embed.field1.title}`, message.guild.id, true) .addField(`:crown: ${language.serverinfo.embed.field2.title}`, message.guild.owner, true) .addField(`:earth_americas: ${language.serverinfo.embed.field3.title}`, region, true) - .addField(`:date: ${language.serverinfo.embed.field4.title}`, dateFormat(message.guild.createdTimestamp, language.serverinfo.embed.field4.content), true) + .addField(`:date: ${language.serverinfo.embed.field4.title}`, dateFormat(message.guild.createdTimestamp, language.generic.strings.date), true) .addField(`:desktop: ${language.serverinfo.embed.field5.title}`, aruna.shard.id, true) - .addField(`:dizzy: ${language.serverinfo.embed.field6.title}`, dateFormat(message.guild.member(aruna.user).joinedTimestamp, language.serverinfo.embed.field6.content), true) + .addField(`:dizzy: ${language.serverinfo.embed.field6.title}`, dateFormat(message.guild.member(aruna.user).joinedTimestamp, language.generic.strings.date), true) .addField( language.serverinfo.embed.field7.title .replace('%1', ':speech_balloon:') diff --git a/src/Commands/unban.js b/src/Commands/unban.js index df4e694..c696e8a 100644 --- a/src/Commands/unban.js +++ b/src/Commands/unban.js @@ -1,3 +1,4 @@ +/* eslint-disable max-len */ /* This File is part of ArunaBot Copyright (C) LoboMetalurgico (and contributors) 2019-2020 @@ -17,31 +18,65 @@ */ const Discord = require('discord.js'); +const { config } = require('../../Configs'); +var language = require(`../../languages/bot/${config.defaultLanguage}/commands.json`); +// eslint-disable-next-line no-unused-vars +const { date } = require('../Utils'); +const dateFormat = require('dateformat'); +const now = new Date(); exports.run = async (aruna, message, args, langc, prefix, command) => { + if (langc) { + language = langc; + } const error1 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Você não possui a permissão de `Banir Membros`!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.unban.embed.error.description1.replace('[banMembers]', language.generic.permissions.banMembers)) .setTimestamp(); const error2 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Eu não possuo a permissão de `Banir Membros`!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.unban.embed.error.description2.replace('[banMembers]', language.generic.permissions.banMembers)) .setTimestamp(); const error3 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription('Você deve inserir o id do usuário que será desbanido!') + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.unban.embed.error.description3) .setTimestamp(); - + + const error6 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(`${language.unban.embed.error.userNotFound.line1}\n + ${language.unban.embed.error.userNotFound.line2}`) + .setTimestamp(); + + if (!args[0] || isNaN(args[0]) && (!args[0].includes('<@') || !args[0].includes('>'))) return message.channel.send(error3); + + const unbUser = await aruna.fetchUser(message.mentions.users.first() || args[0]).catch(e => { + console.warn(e); + if (args[0].length !== 18) return null; + message.channel.send(error6); + return 'STOP'; + }); /** @todo: Fix #30 */ + + if (!unbUser) return message.channel.send(error3); + if (unbUser == 'STOP') return; + const error4 = new Discord.RichEmbed() - .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL) - .setFooter(`Algo deu errado, ${message.author.username}`) - .setDescription(`Infelizmente não sei informar qual o erro. Sinto muito ${message.author.username} :(`) + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.unban.embed.error.description4.replace('[ownerName]', unbUser.username)) + .setTimestamp(); + + const error5 = new Discord.RichEmbed() + .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) + .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) + .setDescription(language.generic.embed.error.description) .setTimestamp(); if (!message.member.hasPermission('BAN_MEMBERS')) @@ -49,40 +84,52 @@ exports.run = async (aruna, message, args, langc, prefix, command) => { if (!message.guild.members.get(aruna.user.id).hasPermission('BAN_MEMBERS')) return message.channel.send(error2); - if (!args[0] || isNaN(args[0])) return message.channel.send(error3); + const guildBuser = message.guild.member( + message.mentions.users.first() || message.guild.members.get(args[0]) + ); - const unBuser = await aruna.fetchUser(args[0]); - - if (!unBuser) return message.channel.send(error3); + if (guildBuser) { + if (message.guild.owner.id == unbUser.id) + return message.channel.send(error4); + } - var reason = message.content.slice(command.length + prefix.length + unBuser.id.length).trim(); + var reason = message.content.slice(command.length + prefix.length).trim(); + + if (args[0].includes('<@!') && args[0].includes('>')) { + reason = reason.slice(5 + unbUser.id.length).trim(); + } else if (args[0].includes('<@') && args[0].includes('>')) { + reason = reason.slice(4 + unbUser.id.length).trim(); + } else { + reason = reason.slice(unbUser.id.length).trim(); + } if (!reason) { - reason = `Desbanido por: ${message.author.username}`; + reason = language.unban.reason['1'].replace('[username]', message.author.username); } else { - reason = - `Desbanido por: ${message.author.username} com o Motivo: ${reason}`; + reason = language.unban.reason['2'].replace('[username]', message.author.username).replace('[reason]', reason); } const embed = new Discord.RichEmbed() - .setAuthor('Desbanimento Efetuado!') - .setDescription(`Desbanimento efetuado por ${message.author.username}`) - .addField('Usuário Desbanido: ', `${unBuser.id}`, false) - .addField('Desbanido por: ', `<@${message.author.id}>`, false) - .addField('Motivo: ', `${reason}`, false) + .setAuthor(language.unban.embed.sucess.title) + .setDescription(language.unban.embed.sucess.description.replace('[username]', unbUser.username)) + .addField(language.unban.embed.sucess.field1.title, language.unban.embed.sucess.field1.content.replace('[username]', unbUser.username).replace('[userId]', unbUser.id), false) + .addField(language.unban.embed.sucess.field2, message.author, false) + .addField(language.unban.embed.sucess.field3, dateFormat(now, language.generic.strings.date), false) + .addField(language.unban.embed.sucess.field4, reason, false) .setTimestamp(); - message.channel.send(embed).then(async msg => { - await message.guild.unban(unBuser, reason).catch(err => { - console.log(err); - msg.edit(error4); - }); + message.guild.unban(unbUser, reason).catch(err => { + console.log(err); + return message.channel.send(error5); + }).then(() => { + message.channel.send(embed); }); }; exports.config = { name: 'desbanir', aliases: ['unban'], + description: language.unban.config.description, category: '👮‍♂️ Moderação', public: true }; \ No newline at end of file diff --git a/src/Commands/userinfo.js b/src/Commands/userinfo.js index 86dc705..3b72f75 100644 --- a/src/Commands/userinfo.js +++ b/src/Commands/userinfo.js @@ -114,7 +114,7 @@ exports.run = (aruna, message, args, langc) => { const premium = message.guild.member(mentionedUser.user).premiumSinceTimestamp; if (premium !== null) { - userBoost = `\n\n(${emoji.nitro}) **${language.userinfo.strings.boosting}** ${dateFormat(message.guild.member(message.author).premiumSinceTimestamp, language.userinfo.strings.date)}`; + userBoost = `\n\n(${emoji.nitro}) **${language.userinfo.strings.boosting}** ${dateFormat(message.guild.member(message.author).premiumSinceTimestamp, language.generic.strings.date)}`; } const accountCreated = dateFormat(mentionedUser.user.createdTimestamp, language.userinfo.strings.date); From 79d57ee2afb17a188916abfb56d8f05c6946557c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 7 Feb 2021 19:57:41 -0300 Subject: [PATCH 154/164] Update Dependencies --- package-lock.json | 78 ++--------------------------------------------- package.json | 4 +-- 2 files changed, 4 insertions(+), 78 deletions(-) diff --git a/package-lock.json b/package-lock.json index ea505a4..f0e8b9c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1299,11 +1299,6 @@ "ansi-colors": "^4.1.1" } }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - }, "env-paths": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", @@ -1573,46 +1568,6 @@ } } }, - "express-session": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.1.tgz", - "integrity": "sha512-UbHwgqjxQZJiWRTMyhvWGvjBQduGCSBDhhZXYenziMFjxst5rMV+aJZ6hKPHZnPyHGsrqRICxtX8jtEbm/z36Q==", - "requires": { - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-headers": "~1.0.2", - "parseurl": "~1.3.3", - "safe-buffer": "5.2.0", - "uid-safe": "~2.1.5" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" - } - } - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -2647,11 +2602,6 @@ "ee-first": "1.1.1" } }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -2870,11 +2820,6 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" }, - "random-bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", - "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=" - }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -3010,15 +2955,6 @@ "glob": "^7.1.3" } }, - "rss-parser": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/rss-parser/-/rss-parser-3.11.0.tgz", - "integrity": "sha512-oTLoYW+bNqNwkz8OpGinBU9s3As0sdczQjETIZFgyAdi7AopyhoVFGPIyFMYXXEY8hayKzD5CH+4CtmiPtJ89g==", - "requires": { - "entities": "^2.0.3", - "xml2js": "^0.4.19" - } - }, "run-parallel": { "version": "1.1.10", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", @@ -3303,9 +3239,9 @@ } }, "systeminformation": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.0.10.tgz", - "integrity": "sha512-RW96yG1CKnyKdyubP0/6YOclHS4+t+7IQqZRWTbO6fuyoKIvQjvdy1sylYOGEMmp0s7y3nVoHDblz++QOGpycg==" + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.0.11.tgz", + "integrity": "sha512-vH7u2FEj0Jnipq+xQHkhcshMbSQqNILyU+4OsOP0P9udh/lnflEJRC2KLeF73AQuMUs1pHeaK1PM7etiJ0HGIw==" }, "table": { "version": "6.0.7", @@ -3499,14 +3435,6 @@ "is-typedarray": "^1.0.0" } }, - "uid-safe": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", - "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", - "requires": { - "random-bytes": "~1.0.0" - } - }, "undefsafe": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", diff --git a/package.json b/package.json index 33f7f8b..a6218d2 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,6 @@ "del": "^6.0.0", "discord.js": "^11.6.4", "express": "^4.17.1", - "express-session": "^1.17.1", "ffmpeg": "0.0.4", "ffmpeg-static": "^4.2.7", "jimp": "^0.16.1", @@ -41,9 +40,8 @@ "moment-duration-format": "^2.3.2", "mongoose": "^5.11.15", "nodemon": "^2.0.7", - "rss-parser": "^3.11.0", "superagent": "^6.1.0", - "systeminformation": "^5.0.10", + "systeminformation": "^5.0.11", "ytdl-core": "^4.4.5", "ytdl-core-discord": "^1.2.5" }, From c09d45e405c20d1d3bb454e8ef81704480a3f249 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 7 Feb 2021 20:56:25 -0300 Subject: [PATCH 155/164] Fix "date is undefined" --- src/Commands/userinfo.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Commands/userinfo.js b/src/Commands/userinfo.js index 3b72f75..d76b5ed 100644 --- a/src/Commands/userinfo.js +++ b/src/Commands/userinfo.js @@ -117,8 +117,8 @@ exports.run = (aruna, message, args, langc) => { userBoost = `\n\n(${emoji.nitro}) **${language.userinfo.strings.boosting}** ${dateFormat(message.guild.member(message.author).premiumSinceTimestamp, language.generic.strings.date)}`; } - const accountCreated = dateFormat(mentionedUser.user.createdTimestamp, language.userinfo.strings.date); - const joinedIn = dateFormat(mentionedUser.joinedTimestamp, language.userinfo.strings.date); + const accountCreated = dateFormat(mentionedUser.user.createdTimestamp, language.generic.strings.date); + const joinedIn = dateFormat(mentionedUser.joinedTimestamp, language.generic.strings.date); const embed = new Discord.RichEmbed() .setAuthor(mentionedUser.user.username, userAvatar) From d3d0bdff0faa80f4765cf4e50fb125b0709556ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Sun, 7 Feb 2021 21:03:34 -0300 Subject: [PATCH 156/164] Fix 'boost since' info --- languages | 2 +- src/Commands/userinfo.js | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/languages b/languages index 112b2d9..c90988f 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 112b2d98a596ae6ae425f370608c159dc3a2b1bc +Subproject commit c90988fd73d98e96ce3fd4d0cf2c20441d367be7 diff --git a/src/Commands/userinfo.js b/src/Commands/userinfo.js index d76b5ed..4bbc40b 100644 --- a/src/Commands/userinfo.js +++ b/src/Commands/userinfo.js @@ -131,14 +131,13 @@ exports.run = (aruna, message, args, langc) => { ${userStatusEmoji} **${language.userinfo.embed.field.description[0][3]}** \`${userStatus}\` - ${emoji.pass} **${language.userinfo.embed.field.description[0][4]}** \`${accountCreated}\` (${userDaysDiscord} ${stringtime1} ${language.generic.strings.back.toLowerCase()})${userBoost} - `, false) + ${emoji.pass} **${language.userinfo.embed.field.description[0][4]}** \`${accountCreated}\` (${userDaysDiscord} ${stringtime1} ${language.generic.strings.back.toLowerCase()})`, false) .addField(language.userinfo.embed.field.title[1], `(${emoji.discord}) **${language.userinfo.embed.field.description[1][0]}** \`${userNickName}\` (👮) **${language.userinfo.embed.field.description[1][1]}** \`${userAdminServer}\` - (:date:) **${language.userinfo.embed.field.description[1][2]}** \`${joinedIn}\` (${userDaysGuild} ${stringtime2} ${language.generic.strings.back.toLowerCase()})`, false) + (:date:) **${language.userinfo.embed.field.description[1][2]}** \`${joinedIn}\` (${userDaysGuild} ${stringtime2} ${language.generic.strings.back.toLowerCase()})${userBoost}`, false) .setFooter(language.generic.embed.footer.replace('[usertag]', message.author.tag)) .setThumbnail(userAvatar) .setColor('#012778') From 56a240a35b9a8e54f8715467bd9e94a48c1a3c09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Tue, 9 Feb 2021 19:10:57 -0300 Subject: [PATCH 157/164] Fix a critical bug in config command --- languages | 2 +- src/Commands/config.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/languages b/languages index c90988f..00c5890 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit c90988fd73d98e96ce3fd4d0cf2c20441d367be7 +Subproject commit 00c5890770cded7e5293dd4451bedb9213ed4e6d diff --git a/src/Commands/config.js b/src/Commands/config.js index 93c28ad..6ae5489 100644 --- a/src/Commands/config.js +++ b/src/Commands/config.js @@ -55,7 +55,7 @@ exports.run = async (aruna, message, args, langc) => { if (!args || !args[0]) return message.channel.send(error1); - if (!options.includes(args[0].toLowerCase()) || !userOptions.includes(args[0].toLowerCase())) { + if (!options.includes(args[0].toLowerCase()) && !userOptions.includes(args[0].toLowerCase())) { return message.channel.send(error1); } @@ -305,6 +305,7 @@ exports.run = async (aruna, message, args, langc) => { exports.config = { name: 'config', aliases: ['configurar', 'configurações'], + description: language.config.config.description, category: '⚙️ Configurações', public: true }; From 73a1e8a97b4327270c6629e46ddebbb2c41e7c4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Thu, 11 Feb 2021 08:05:53 -0300 Subject: [PATCH 158/164] Fix config command error --- src/Commands/config.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Commands/config.js b/src/Commands/config.js index 6ae5489..a873094 100644 --- a/src/Commands/config.js +++ b/src/Commands/config.js @@ -61,14 +61,14 @@ exports.run = async (aruna, message, args, langc) => { switch (args[0].toLowerCase()) { case 'prefix': - prefixVar(args[1] || null); + prefixVar(args[1].toLowerCase() || null); break; case 'rank': - rankVar(args[1] || null); + rankVar(args[1].toLowerCase() || null); break; case 'language': case 'idioma': - languageVar(args[1] || null); + languageVar(args[1].toLowerCase() || null); break; default: return message.channel.send(error1); @@ -104,7 +104,7 @@ exports.run = async (aruna, message, args, langc) => { .setColor([0, 255, 0]) .setAuthor(language.generic.embed.sucess.title.replace('[username]', message.member.displayName), message.author.avatarURL) .setFooter(language.generic.embed.sucess.footer2.replace('[username]', message.member.displayName)) - .setDescription(language.config.embed.sucess.prefix.description1.replace('[prefix]', args[2] || undefined)) + .setDescription(language.config.embed.sucess.prefix.description2.replace('[prefix]', args[2] || undefined)) .setTimestamp(); switch (action) { @@ -117,7 +117,7 @@ exports.run = async (aruna, message, args, langc) => { guild.prefix = args[2]; guild.save(); - + message.channel.send(prefixDefinido); break; @@ -182,7 +182,7 @@ exports.run = async (aruna, message, args, langc) => { const invalidLanguage = new Discord.RichEmbed() .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) - .setDescription(language.config.embed.error.language.description1.replace('[LANGUAGES]', validLanguages.join(', '))) + .setDescription(language.config.embed.error.language.description1.replace('[LANGUAGES]', `\`\`${validLanguages.join(', ')}\`\``)) .setTimestamp(); if (!type || !actionList.includes(type)) return invalidAction(actionList); @@ -274,7 +274,7 @@ exports.run = async (aruna, message, args, langc) => { const optionError = new Discord.RichEmbed() .setAuthor(language.generic.embed.error.title.replace('[username]', message.member.displayName), message.author.avatarURL) .setFooter(language.generic.embed.error.footer.replace('[username]', message.member.displayName)) - .setDescription(language.config.embed.error.invalidaction.replace('[OPTIONS]', optionL.join(', '))) + .setDescription(language.config.embed.error.invalidaction.replace('[OPTIONS]', `\`\`${optionL.join(', ')}\`\``)) .setTimestamp(); return message.channel.send(optionError); } From 6a12cfe78383bd8cde68cb822f5ab57bcd8bb471 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Thu, 11 Feb 2021 08:17:19 -0300 Subject: [PATCH 159/164] Another fix --- src/Commands/config.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Commands/config.js b/src/Commands/config.js index a873094..5115e8c 100644 --- a/src/Commands/config.js +++ b/src/Commands/config.js @@ -59,16 +59,20 @@ exports.run = async (aruna, message, args, langc) => { return message.channel.send(error1); } + var argument; + + args[1] !== undefined ? argument = args[1].toLowerCase() : null; + switch (args[0].toLowerCase()) { case 'prefix': - prefixVar(args[1].toLowerCase() || null); + prefixVar(argument); break; case 'rank': - rankVar(args[1].toLowerCase() || null); + rankVar(argument); break; case 'language': case 'idioma': - languageVar(args[1].toLowerCase() || null); + languageVar(argument); break; default: return message.channel.send(error1); From caa16f5c8696ec80ff7ff235306cf5e283858302 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Thu, 11 Feb 2021 08:20:49 -0300 Subject: [PATCH 160/164] aliase fix --- src/Commands/config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Commands/config.js b/src/Commands/config.js index 5115e8c..1f6d14a 100644 --- a/src/Commands/config.js +++ b/src/Commands/config.js @@ -308,7 +308,7 @@ exports.run = async (aruna, message, args, langc) => { exports.config = { name: 'config', - aliases: ['configurar', 'configurações'], + aliases: ['configurar', 'configurações', 'settings'], description: language.config.config.description, category: '⚙️ Configurações', public: true From d259cdf15e35257875ac76409191978065df5b68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Thu, 11 Feb 2021 08:46:17 -0300 Subject: [PATCH 161/164] Fix a Major Bug --- src/Events/message.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Events/message.js b/src/Events/message.js index 3eb85fe..383986a 100644 --- a/src/Events/message.js +++ b/src/Events/message.js @@ -21,6 +21,7 @@ const Discord = require('discord.js'); const chalk = require('chalk'); var { database, config, links } = require('../../Configs'); const { cooldown, utils } = require('../Utils'); +const langI = require(`../../languages/bot/${config.language}/internal.json`); exports.run = async (aruna, message) => { if (message.author.bot) return; @@ -72,7 +73,6 @@ exports.run = async (aruna, message) => { } const lang = require(`../../languages/bot/${language || config.defaultLanguage}/events.json`); - const langI = require(`../../languages/bot/${config.language}/internal.json`); const langc = require(`../../languages/bot/${language || config.defaultLanguage}/commands.json`); const emojiError = lang.message.errors.emojiError.replace('[externalEmojis]', langc.generic.permissions.useExternalEmojis); From 64b3b40f420206ff57dbe3d2b755e952112673d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Thu, 11 Feb 2021 08:51:34 -0300 Subject: [PATCH 162/164] Fix ship command --- src/Commands/ship.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Commands/ship.js b/src/Commands/ship.js index 2276af1..e13791c 100644 --- a/src/Commands/ship.js +++ b/src/Commands/ship.js @@ -60,7 +60,7 @@ exports.run = async (client, message, args, langc) => { user2 = message.guild.members.get(args[1]).user; } else user2 = message.author; - if (!user1 && user1 === user2) return message.channel.send(error1); + if (!user1 || user1 === user2) return message.channel.send(error1); const avatar1 = await Jimp.read(user1.avatarURL); const avatar2 = await Jimp.read(user2.avatarURL); From 44dbed6dd3da9c38feb81e719ee568ae13709153 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 15 Feb 2021 15:18:10 -0300 Subject: [PATCH 163/164] Fix Config Error --- .Configs/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/.Configs/index.js b/.Configs/index.js index 488d73d..ba48ea9 100644 --- a/.Configs/index.js +++ b/.Configs/index.js @@ -17,6 +17,7 @@ */ module.exports = { + apiKeys: require('./apiKeys.js'), configs: require('./general.js'), config: require('./general.js'), links: require('./links.js'), From 3fdcee4ca6ea4616491dd0cdb99ee4b274c8d4bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lobo=20Metal=C3=BArgico?= <43734867+LoboMetalurgico@users.noreply.github.com> Date: Mon, 15 Feb 2021 15:39:54 -0300 Subject: [PATCH 164/164] 4.3 --- languages | 2 +- package-lock.json | 60 +++++++++++++++++++++++------------------------ package.json | 8 +++---- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/languages b/languages index 00c5890..9415e9f 160000 --- a/languages +++ b/languages @@ -1 +1 @@ -Subproject commit 00c5890770cded7e5293dd4451bedb9213ed4e6d +Subproject commit 9415e9fddd62d80a2558bb91a711a925f8c777e5 diff --git a/package-lock.json b/package-lock.json index f0e8b9c..56f15e2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,16 @@ { "name": "arunabot", - "version": "4.3.0-CANARY", + "version": "4.3.0", "lockfileVersion": 1, "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, "requires": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.10.4" } }, "@babel/helper-validator-identifier": { @@ -542,9 +542,9 @@ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" }, "@types/mongodb": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.6.tgz", - "integrity": "sha512-ghYevKiSh/TGk2MAwSRZP7T1ilR9Pw8Fa7pT9GGVGZPUsWKdZjZ4G6LG3MqK2iXKdNba994F8W9ikA+qx2Eo3A==", + "version": "3.6.7", + "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.7.tgz", + "integrity": "sha512-47P64kbkXarlleSMzSrRG04uzY+Dr3xAilOiqRIsqj/sZrmq6cUMx8njydY/iWMqi8IdE9ojFQl/X3ou9EsAlQ==", "requires": { "@types/bson": "*", "@types/node": "*" @@ -1326,12 +1326,12 @@ "dev": true }, "eslint": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.19.0.tgz", - "integrity": "sha512-CGlMgJY56JZ9ZSYhJuhow61lMPPjUzWmChFya71Z/jilVos7mR/jPgaEfVGgMBY5DshbKdG8Ezb8FDCHcoMEMg==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.20.0.tgz", + "integrity": "sha512-qGi0CTcOGP2OtCQBgWZlQjcTuP0XkIpYFj25XtRTQSHC+umNnp7UMshr2G8SLsRFYDdAPFeHOsiteadmMH02Yw==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", + "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.3.0", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -1343,7 +1343,7 @@ "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.1", - "esquery": "^1.2.0", + "esquery": "^1.4.0", "esutils": "^2.0.2", "file-entry-cache": "^6.0.0", "functional-red-black-tree": "^1.0.1", @@ -2407,9 +2407,9 @@ "integrity": "sha512-cBMXjSW+fjOb4tyaVHuaVE/A5TqkukDWiOfxxAjY+PEqmmBQlLwn+8OzwPiG3brouXKY5Un4pBjAeB6UToXHaQ==" }, "mongodb": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.3.tgz", - "integrity": "sha512-rOZuR0QkodZiM+UbQE5kDsJykBqWi0CL4Ec2i1nrGrUI3KO11r6Fbxskqmq3JK2NH7aW4dcccBuUujAP0ERl5w==", + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.4.tgz", + "integrity": "sha512-Y+Ki9iXE9jI+n9bVtbTOOdK0B95d6wVGSucwtBkvQ+HIvVdTCfpVRp01FDC24uhC/Q2WXQ8Lpq3/zwtB5Op9Qw==", "requires": { "bl": "^2.2.1", "bson": "^1.1.4", @@ -2420,17 +2420,17 @@ } }, "mongoose": { - "version": "5.11.15", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.11.15.tgz", - "integrity": "sha512-8T4bT6eCGB7MqCm40oVhnhT/1AyAdwe+y1rYUhdl3ljsks3BpYz8whZgcMkIoh6VoCCjipOXRqZqdk1UByvlYA==", + "version": "5.11.16", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.11.16.tgz", + "integrity": "sha512-qmolyGAskPuq0Xr3j2Tjm9jwRccGGnLRWtTuyRvYBZoyItajwIoQdetJH8oVzs3N7aZK/GKZ82xV/t97suF8Pg==", "requires": { "@types/mongodb": "^3.5.27", "bson": "^1.1.4", "kareem": "2.3.2", - "mongodb": "3.6.3", + "mongodb": "3.6.4", "mongoose-legacy-pluralize": "1.0.2", "mpath": "0.8.3", - "mquery": "3.2.3", + "mquery": "3.2.4", "ms": "2.1.2", "regexp-clone": "1.0.0", "safe-buffer": "5.2.1", @@ -2456,9 +2456,9 @@ "integrity": "sha512-eb9rRvhDltXVNL6Fxd2zM9D4vKBxjVVQNLNijlj7uoXUy19zNDsIif5zR+pWmPCWNKwAtqyo4JveQm4nfD5+eA==" }, "mquery": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.3.tgz", - "integrity": "sha512-cIfbP4TyMYX+SkaQ2MntD+F2XbqaBHUYWk3j+kqdDztPWok3tgyssOZxMHMtzbV1w9DaSlvEea0Iocuro41A4g==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.4.tgz", + "integrity": "sha512-uOLpp7iRX0BV1Uu6YpsqJ5b42LwYnmu0WeF/f8qgD/On3g0XDaQM6pfn0m6UxO6SM8DioZ9Bk6xxbWIGHm2zHg==", "requires": { "bluebird": "3.5.1", "debug": "3.1.0", @@ -3239,9 +3239,9 @@ } }, "systeminformation": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.0.11.tgz", - "integrity": "sha512-vH7u2FEj0Jnipq+xQHkhcshMbSQqNILyU+4OsOP0P9udh/lnflEJRC2KLeF73AQuMUs1pHeaK1PM7etiJ0HGIw==" + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.3.2.tgz", + "integrity": "sha512-fD4mSjY64FRm1KfO5ykLqr5tjrGsrhML+PEe66LpQYwnA4KX2CCymUJNo7hrggw2nQeeFtZ4BtB3+cdn+OBJ5Q==" }, "table": { "version": "6.0.7", @@ -3256,9 +3256,9 @@ }, "dependencies": { "ajv": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.4.tgz", - "integrity": "sha512-xzzzaqgEQfmuhbhAoqjJ8T/1okb6gAzXn/eQRNpAN1AEUoHJTNF9xCDRTtf/s3SKldtZfa+RJeTs+BQq+eZ/sw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.1.0.tgz", + "integrity": "sha512-svS9uILze/cXbH0z2myCK2Brqprx/+JJYK5pHicT/GQiBfzzhUVAIT6MwqJg8y4xV/zoGsUeuPuwtoiKSGE15g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", diff --git a/package.json b/package.json index a6218d2..bb05813 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "arunabot", - "version": "4.3.0-CANARY", + "version": "4.3.0", "description": "A nova e melhorada aruna!", "main": "src/main.js", "scripts": { @@ -38,15 +38,15 @@ "mathjs": "^9.2.0", "moment": "^2.29.1", "moment-duration-format": "^2.3.2", - "mongoose": "^5.11.15", + "mongoose": "^5.11.16", "nodemon": "^2.0.7", "superagent": "^6.1.0", - "systeminformation": "^5.0.11", + "systeminformation": "^5.3.2", "ytdl-core": "^4.4.5", "ytdl-core-discord": "^1.2.5" }, "devDependencies": { - "eslint": "^7.19.0" + "eslint": "^7.20.0" }, "nodemonConfig": { "ignore": [