diff --git a/_configs/index.js b/.Configs/apiKeys.js
similarity index 82%
rename from _configs/index.js
rename to .Configs/apiKeys.js
index a2cbb4c..3feb89b 100644
--- a/_configs/index.js
+++ b/.Configs/apiKeys.js
@@ -1,3 +1,4 @@
+/* eslint-disable max-len */
/*
This File is part of ArunaBot
Copyright (C) LoboMetalurgico (and contributors) 2019-2020
@@ -16,10 +17,7 @@
along with this program. If not, see .
*/
+
+//Dbots API Keys
module.exports = {
- configs: require("./general.js"),
- config: require("./general.js"),
- links: require("./links"),
- database: require("./mongoose.js"),
- db: require("./mongoose.js")
-};
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/_configs/general.js b/.Configs/general.js
similarity index 89%
rename from _configs/general.js
rename to .Configs/general.js
index 43f5386..cc4963b 100644
--- a/_configs/general.js
+++ b/.Configs/general.js
@@ -16,14 +16,12 @@
along with this program. If not, see .
*/
-
module.exports = {
- prefix: "-",
- token: "",
- mongoose: "",
- commands: "./Commands",
+ prefix: '-',
+ token: '',
+ mongoose: '',
sharding: {
- totalShards: "auto",
+ totalShards: 'auto',
delay: 7500
}
};
\ No newline at end of file
diff --git a/.Configs/index.js b/.Configs/index.js
new file mode 100644
index 0000000..488d73d
--- /dev/null
+++ b/.Configs/index.js
@@ -0,0 +1,25 @@
+/*
+ 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 .
+*/
+
+module.exports = {
+ configs: require('./general.js'),
+ config: require('./general.js'),
+ links: require('./links.js'),
+ database: require('./mongoose.js'),
+ db: require('./mongoose.js')
+};
\ No newline at end of file
diff --git a/_configs/links.js b/.Configs/links.js
similarity index 75%
rename from _configs/links.js
rename to .Configs/links.js
index 23ca984..727d64c 100644
--- a/_configs/links.js
+++ b/.Configs/links.js
@@ -1,3 +1,4 @@
+/* eslint-disable max-len */
/*
This File is part of ArunaBot
Copyright (C) LoboMetalurgico (and contributors) 2019-2020
@@ -17,9 +18,9 @@
*/
module.exports = {
- supportServers: ["https://discord.gg/NqbBgEf"],
- invites: ["https://discordapp.com/oauth2/authorize?client_id=593303574725787657&scope=bot&permissions=2146954751"],
- donate: ["https://patreon.com/LoboMetalurgico"],
- website: "",
- trelloBoard: ""
+ supportServers: [''],
+ invites: [''],
+ donate: [''],
+ website: '',
+ trelloBoard: ''
};
\ No newline at end of file
diff --git a/_configs/mongoose.js b/.Configs/mongoose.js
similarity index 68%
rename from _configs/mongoose.js
rename to .Configs/mongoose.js
index 615766b..be22a63 100644
--- a/_configs/mongoose.js
+++ b/.Configs/mongoose.js
@@ -6,7 +6,7 @@
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
@@ -16,36 +16,36 @@
along with this program. If not, see .
*/
-var mongoose = require("mongoose");
-const config = require('./general.js')
+var mongoose = require('mongoose');
+const config = require('./general.js');
var Schema = mongoose.Schema;
-let url = config.mongoose;
+const url = config.mongoose;
mongoose.connect(
url,
{ useNewUrlParser: true, useUnifiedTopology: true },
err => {
- if (err) return console.log("(CLUSTER) => Erro\n", err);
- console.log("(CLUSTER) => Conectado!");
+ if (err) return console.log('(CLUSTER) => Erro\n', err);
+ console.log('(CLUSTER) => Conectado!');
}
);
var User = new Schema({
_id: { type: String },
- cmdCooldown: { type: String, default: "0" },
SUPER: { type: Boolean, default: false }
});
var Guild = new Schema({
_id: { type: String },
prefix: { type: String, default: config.prefix },
- ticketCategoryID: { type: String, default: null },
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 },
- autoRoleRole: { type: String, default: null }
+ autoRoleRole: { type: String, default: null },
+ isPremium: { type: Boolean, default: false },
+ isPartner: { type: Boolean, default: false }
});
var Rank = new Schema({
@@ -56,10 +56,6 @@ var Rank = new Schema({
guild: { type: String }
});
-var Comando = new Schema({
- _id: { type: String }
-});
-
var Ticket = new Schema({
_id: { type: String },
owner: { type: String },
@@ -78,18 +74,27 @@ var Command = new Schema({
_id: { type: String },
name: { type: String },
public: { type: Boolean, default: false }
-})
+});
+
+var System = new Schema({
+ _id: { type: Number },
+ maintenance: { type: Boolean, default: false},
+ date: { type: String, default: null },
+ time: { type: String, default: null }
+});
-var Commands = mongoose.model("Commands", Command);
-var Support = mongoose.model("Suport", Support);
-var Tickets = mongoose.model("Tickets", Ticket);
-var Guilds = mongoose.model("Guilds", Guild);
-var Users = mongoose.model("Users", User);
-var Rank = mongoose.model("Rank", Rank);
+var Commands = mongoose.model('Commands', Command);
+var Supports = mongoose.model('Suport', Support);
+var Tickets = mongoose.model('Tickets', Ticket);
+var Systems = mongoose.model('System', System);
+var Guilds = mongoose.model('Guilds', Guild);
+var Users = mongoose.model('Users', User);
+var Ranks = mongoose.model('Rank', Rank);
exports.Commands = Commands;
-exports.Suport = Support;
exports.Tickets = Tickets;
+exports.Suport = Supports;
+exports.System = Systems;
exports.Guilds = Guilds;
exports.Users = Users;
-exports.Rank = Rank;
+exports.Rank = Ranks;
\ No newline at end of file
diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 0000000..0d81a1a
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,2 @@
+.Config
+Config/
\ No newline at end of file
diff --git a/.eslintrc.json b/.eslintrc.json
new file mode 100644
index 0000000..e40f8be
--- /dev/null
+++ b/.eslintrc.json
@@ -0,0 +1,79 @@
+{
+ "env": {
+ "commonjs": true,
+ "es6": true,
+ "node": true
+ },
+ "extends": "eslint:recommended",
+ "globals": {},
+ "parserOptions": {
+ "ecmaVersion": 2020,
+ "sourceType": "module"
+ },
+ "rules": {
+ "array-bracket-spacing": [
+ "warn",
+ "never"
+ ],
+ "computed-property-spacing": "warn",
+ "indent": [
+ "warn",
+ 2
+ ],
+ "keyword-spacing": [
+ "warn",
+ {
+ "before": true,
+ "after": true
+ }
+ ],
+ "max-len": [
+ "warn",
+ {
+ "code": 160,
+ "ignoreComments": true,
+ "ignoreUrls": true
+ }
+ ],
+ "no-cond-assign": [
+ 2,
+ "except-parens"
+ ],
+ "no-use-before-define": [
+ 2,
+ {
+ "functions": false,
+ "classes": false,
+ "variables": false
+ }
+ ],
+ "new-cap": 0,
+ "no-caller": 2,
+ "no-undef": 2,
+ "no-unused-vars": 1,
+ "no-empty": [
+ "error",
+ {
+ "allowEmptyCatch": true
+ }
+ ],
+ "no-console": "off",
+ "no-multi-spaces": "warn",
+ "prefer-const": [
+ "warn",
+ {
+ "destructuring": "all"
+ }
+ ],
+ "quotes": [
+ "warn",
+ "single"
+ ],
+ "semi": [
+ "warn",
+ "always"
+ ],
+ "spaced-comment": "warn",
+ "space-infix-ops": "warn"
+ }
+}
\ No newline at end of file
diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yml
new file mode 100644
index 0000000..1264238
--- /dev/null
+++ b/.github/workflows/eslint.yml
@@ -0,0 +1,32 @@
+name: ESLint
+on:
+ push:
+ paths:
+ - "src/**"
+ - ".eslintrc.*"
+ - ".github/workflows/eslint.yml"
+
+jobs:
+ update:
+ name: ESLint
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v2
+ - name: Install Node v12
+ uses: actions/setup-node@v1
+ with:
+ node-version: 12.x
+ - name: Install PNPM
+ run: curl -L https://unpkg.com/@pnpm/self-installer | node
+ - name: Install dependencies
+ run: pnpm install
+ - name: Run ESLint
+ run: npm run eslint:fix
+ - name: Commit changes
+ uses: EndBug/add-and-commit@v4
+ with:
+ add: src
+ message: "chore(lint): Auto-fix linting errors"
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
\ No newline at end of file
diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml
deleted file mode 100644
index e8461f8..0000000
--- a/.github/workflows/nodejs.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
-# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
-
-name: Node.js CI
-
-on:
- push:
- branches: [ Stable, Unstable ]
- pull_request:
- branches: [ Stable, Unstable ]
-
-jobs:
- build:
-
- runs-on: ubuntu-latest
-
- strategy:
- matrix:
- node-version: [10.x, 12.x]
-
- steps:
- - uses: actions/checkout@v2
- - name: Use Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v1
- with:
- node-version: ${{ matrix.node-version }}
- - run: npm ci
- - run: npm run build --if-present
- - run: npm test
- env:
- CI: true
diff --git a/.gitignore b/.gitignore
index 1b99d47..eab33cd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
.env
-configs/
+Configs/
node_modules/
-_main.js
\ No newline at end of file
+.vscode/
\ No newline at end of file
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 0000000..9cf9495
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1 @@
+package-lock=false
\ No newline at end of file
diff --git a/Commands/ban.js b/Commands/ban.js
deleted file mode 100644
index 4f55e34..0000000
--- a/Commands/ban.js
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- 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");
-
-exports.run = async (aruna, message, args) => {
-
- let buser = message.guild.member(
- message.mentions.users.first() || message.guild.members.get(args[0])
- );
-
- 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\`!`)
- .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\`!`)
- .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!`)
- .setTimestamp();
- 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.user.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.user.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.user.username}`)
- .setTimestamp();
-
- if (!message.member.hasPermission("BAN_MEMBERS"))
- return message.channel.send(error1)
- if (!message.guild.members.get(aruna.user.id).hasPermission("BAN_MEMBERS"))
- return message.channel.send(error2)
-
- if (!buser) return message.channel.send(error3);
-
- if(message.guild.owner.id == buser.user.id)
- return message.channel.send(error4)
- if(buser.highestRole.position >= message.guild.members.get(message.author.id).highestRole.position && message.guild.owner.id !== message.author.id)
- return message.channel.send(error5);
- if(buser.highestRole.position >= message.guild.members.get(aruna.user.id).highestRole.position)
- return message.channel.send(error6);
-
- if (args.join(" ").slice(22)) {
- var breason = `Punido por: ${message.author.username}`;
- } else {
- var breason =
- `Punido por: ${message.author.username} Com o Motivo: ` +
- args.join(" ").slice(22);
- }
-
- let embed = new Discord.RichEmbed()
- .setAuthor("Banimento Efetuado!")
- .setDescription(`Kick 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: ", message.createdAt, false)
- .addField("Motivo: ", `${breason}`, false)
- .setTimestamp();
-
- message.channel.send(embed);
- message.guild.member(buser).ban(breason);
-};
-
-exports.config = {
- name: "ban",
- aliases: ["banir"],
- category: `👮♂️ Moderação`
-};
\ No newline at end of file
diff --git a/Commands/bot.js b/Commands/bot.js
deleted file mode 100644
index d822c27..0000000
--- a/Commands/bot.js
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- 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");
-
-function format(seconds) {
- function pad(s) {
- return (s < 10 ? "0" : "") + s;
- }
- var hours = Math.floor(seconds / (60 * 60));
- var minutes = Math.floor((seconds % (60 * 60)) / 60);
- var seconds = Math.floor(seconds % 60);
- var days = Math.floor(hours / 24);
-
- if (pad(days) >= "1") {
- return (
- pad(days) +
- "d " +
- pad(hours) +
- "h " +
- pad(minutes) +
- "m " +
- pad(seconds) +
- "s"
- );
- } else if (pad(hours) >= "1") {
- return pad(hours) + "h " + pad(minutes) + "m " + pad(seconds) + "s";
- } else if (pad(minutes) >= "1") {
- return pad(minutes) + "m " + pad(seconds) + "s";
- } else {
- return pad(seconds) + "s";
- }
-}
-
-const { config } = require("../configs");
-
-const pak = require("../package.json");
-
-const emoji = require("../utils/emojis.js");
-
-exports.run = (aruna, message, args, prefix) => {
- let user = message.guild.member(aruna.user);
-
- let name = user.nickname !== null ? user.nickname : aruna.user.username;
-
- /*let embed = new Discord.RichEmbed()
- .setAuthor(aruna.user.username, `${aruna.user.avatarURL}`)
- .addField(`(${emoji.robot}) Nome na Guild`, `**${name}**`, true)
- .addField(`(📡) Versão`, `**${pak.version}**`, true)
- .addField(`(🏓) Ping`, `**${Math.round(aruna.ping)}** ms`, true)
- .addField(`(📃) Canais`, `**${aruna.channels.size}**`, true)
- .addField(`(🖥️) Servidores`, `**${aruna.guilds.size}**`, true)
- .addField(`(🕹️) Usuários`, `**${aruna.users.size}**`, true)
- .addField(
- `Convite`,
- `**[Link](https://discordapp.com/api/oauth2/authorize?client_id=593303574725787657&permissions=37604422&scope=bot)**`,
- true
- )
- .addField(`Meu Site`, `**Em Breve™️**`, true)
- .addField(
- `Servidor de Suporte`,
- `**[Link](https://discord.gg/NqbBgEf)**`,
- true
- )
- .setThumbnail(`${aruna.user.displayAvatarURL}`);*/
- let embed = new Discord.RichEmbed()
- .setAuthor(aruna.user.username, `${aruna.user.avatarURL}`)
- .addField(`(${emoji.robot}) Nome na Guild`, `**${name}**`, true)
- .addField(`(📡) Versão`, `**${pak.version}**`, true)
- .addField(`(🕰️) Uptime`, `**${format(process.uptime())}**`, true)
- .addField(`(📃) Canais`, `**${aruna.channels.size}**`, true)
- .addField(`(🖥️) Servidores`, `**${aruna.guilds.size}**`, true)
- .addField(`(🕹️) Usuários`, `**${aruna.users.size}**`, true)
- .addField(
- `Convite`,
- `**[Link](https://discordapp.com/api/oauth2/authorize?client_id=593303574725787657&permissions=37604422&scope=bot)**`,
- true
- )
- .addField(`Meu Site`, `**Em Breve™️**`, true)
- .addField(
- `Servidor de Suporte`,
- `**[Link](https://discord.gg/NqbBgEf)**`,
- true
- )
- .setThumbnail(`${aruna.user.displayAvatarURL}`);
- message.channel.send(embed);
-};
-
-exports.config = {
- name: "bot",
- aliases: ["botinfo", "info"],
- description: "Lista as Principais informações do bot",
- category: `${emoji.robot} Utilidades`
-};
diff --git a/Commands/eval.js b/Commands/eval.js
deleted file mode 100644
index f62e72c..0000000
--- a/Commands/eval.js
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- 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 emoji = require("../utils/emojis.js");
-
-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");
- let code = args.join(" ");
- let 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 {
- let 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!"
- )}`;
-
- if (str.length > 1800) {
- str = str.substr(0, 1800);
- str = str + "...";
- }
- let 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" });
- }
-}).catch(e => {})
-};
-
-exports.config = {
- name: "eval",
- aliases: [],
- category: `🧰 Administração`
-};
diff --git a/Commands/kick.js b/Commands/kick.js
deleted file mode 100644
index c18c8b5..0000000
--- a/Commands/kick.js
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- 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");
-
-exports.run = async (aruna, message, args) => {
-
- let kuser = message.guild.member(
- message.mentions.users.first() || message.guild.members.get(args[0])
- );
-
- 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 \`Kickar Membros\`!`)
- .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 \`Kickar Membros\`!`)
- .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!`)
- .setTimestamp();
- 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 kickar ${kuser.user.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 kickar este usuário pois seu cargo é igual ou inferior ao de ${kuser.user.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 kickar este usuário pois meu cargo é igual ou inferior ao de ${kuser.user.username}`)
- .setTimestamp();
-
- if (!message.member.hasPermission("KICK_MEMBERS"))
- return message.channel.send(error1)
- if (!message.guild.members.get(aruna.user.id).hasPermission("KICK_MEMBERS"))
- return message.channel.send(error2)
-
- if (!kuser) return message.channel.send(error3);
-
- if(message.guild.owner.id == kuser.user.id)
- return message.channel.send(error4)
- if (kuser.highestRole.position >= message.guild.members.get(message.author.id).highestRole.position && message.guild.owner.id !== message.author.id)
- return message.channel.send(error6);
- if (kuser.highestRole.position >= message.guild.members.get(aruna.user.id).highestRole.position)
- return message.channel.send(error5);
-
- if (args.join(" ").slice(22) == undefined) {
- var kreason = `Punido por: ${message.author.username}`;
- } else if (args.join(" ").slice(22) == false) {
- var kreason = `Punido por: ${message.author.username}`;
- } else if (args.join(" ").slice(22) == null) {
- var kreason = `Punido por: ${message.author.username}`;
- } else if (args.join(" ").slice(22) == "") {
- var kreason = `Punido por: ${message.author.username}`;
- } else {
- var kreason =
- `Punido por: ${message.author.username} Com o Motivo: ` +
- args.join(" ").slice(22);
- }
-
- let embed = new Discord.RichEmbed()
- .setAuthor("Kick Efetuado!")
- .setDescription(`Kick efetuado por ${message.author.username}`)
- .addField("Usuário kickado: ", `${kuser} id ${kuser.id}`, false)
- .addField("Kickado por: ", `<@${message.author.id}>`, false)
- .addField("Data do kick: ", message.createdAt, false)
- .addField("Motivo: ", `${kreason}`, false)
- .setTimestamp();
-
- message.channel.send(embed);
- message.guild.member(kuser).kick(kreason);
-};
-
-exports.config = {
- name: "kick",
- aliases: ["kickar"],
- category: `👮♂️ Moderação`
-};
\ No newline at end of file
diff --git a/Commands/serverinfo.js b/Commands/serverinfo.js
deleted file mode 100644
index 4bae4dd..0000000
--- a/Commands/serverinfo.js
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- 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/emojis.js");
-
-const status = {
- online: `${emoji.online} Online`,
- idle: `${emoji.idle} Ausente`,
- dnd: `${emoji.dnd} Não Pertube`,
- offline: `${emoji.offline} Offline`
-};
-
-exports.run = (aruna, message, args) => {
- 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_br: Singapura`;
- if (
- region === "us-central" ||
- region === "us-east" ||
- region === "us-south" ||
- region === "us-west"
- )
- region = `:flag_us: Estados Unidos`;
-
- let embed = new Discord.RichEmbed()
- .setColor([0, 23, 132])
- .setAuthor(`${message.guild.name}`)
- .setThumbnail(
- `https://cdn.discordapp.com/icons/${message.guild.id}/${message.guild.icon}.png`
- )
- .addField(":computer: ID da Guild", message.guild.id, true)
- .addField(":crown: Dono", `${message.guild.owner}`, true)
- .addField(":earth_americas: Região", `${region}`, 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
- }**`,
- false
- )
- .addField(
- `:busts_in_silhouette: Membros (${message.guild.members.size})`,
- `${status["online"]}: ${
- message.guild.members.filter(m => m.presence.status === "online").size
- }|${status["idle"]}: ${
- message.guild.members.filter(m => m.presence.status === "away").size
- }|${status["dnd"]}: ${
- message.guild.members.filter(m => m.presence.status === "dnd").size
- }|${status["offline"]}: ${
- message.guild.members.filter(m => m.presence.status === "offline").size
- }\n
- :raising_hand: Pessoas: ${
- message.guild.members.filter(m => !m.user.bot).size
- }\n
- :robot: Bots: ${message.guild.members.filter(m => m.user.bot).size}`,
- false
- )
- .setFooter("Bot Criado pelo Lobo Metalúrgico", aruna.user.avatarURL)
- .setTimestamp();
-
- message.reply(embed);
-};
-
-exports.config = {
- name: "serverinfo",
- aliases: ["si"],
- category: `${emoji.robot} Utilidades`
-};
diff --git a/Commands/ship.js b/Commands/ship.js
deleted file mode 100644
index 7826ee1..0000000
--- a/Commands/ship.js
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- 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 um segundo usuário!`)
- .setTimestamp();
-
- var porcentagem = 0;
- var aleatorio = Math.round(Math.random() * 100);
-
- porcentagem = aleatorio;
-
- let user1 = message.mentions.users.first() || message.author;
- let user2 = message.mentions.users.array()[1];
-
- if (!user2) return message.channel.send(error1);
-
- let richard_lindu = await Jimp.read(user1.avatarURL);
- let richard_dmais = await Jimp.read(user2.avatarURL);
-
- await richard_lindu.resize(115, 115);
- await richard_dmais.resize(115, 115);
-
- let 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`);
-
- let aido = new Array();
- aido[1] = "Msg 1";
- aido[2] = "Msg 2";
-
- var i = Math.floor(2 * Math.random());
-
- 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"
- }
- ]
- });
-
- //message.channel.send(embed);
-};
-
-exports.config = {
- name: "ship",
- aliases: ["shipar", "shipp", "casal"],
- category: `🎉 Entretenimento`
-};
diff --git a/Commands/ticket.js b/Commands/ticket.js
deleted file mode 100644
index c1915b9..0000000
--- a/Commands/ticket.js
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- 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 { database } = require("../configs");
-const emoji = require("../utils/emojis.js");
-const Discord = require("discord.js");
-
-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 ticket = await database.Tickets.findOne({
- _id: `${message.author.id}-${message.guild.id}`
- });
-
- const prefix = guild.prefix;
-
- const noperm = 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 error = new Discord.RichEmbed()
- .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL)
- .setFooter(`Algo deu errado, ${message.author.username}`)
- .setDescription(
- `Insira \`criar\` para criar um ticket ou \`fechar\` para fechar o ticket.`
- )
- .setTimestamp();
-
- const error2 = 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. Peça para algum ADM ativar com o comando \`${prefix}config\``
- )
- .setTimestamp();
- const error4 = new Discord.RichEmbed()
- .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL)
- .setFooter(`Algo deu errado, ${message.author.username}`)
- .setDescription(
- `Você não possui tickets abertos. Para abrir, use o comando \`\`${guild.prefix}ticket criar\`\``
- )
- .setTimestamp();
-
- if (user.SUPER !== true) return message.channel.send(noperm);
-
- if (guild.ticketEnable !== true) return message.channel.send(error2);
-
- if (!args[0]) return message.channel.send(error);
-
- const mode = args[0].toLowerCase();
-
- if (mode == "criar" || mode == "create" || mode == "new") {
- if (ticket) {
- const error3 = new Discord.RichEmbed()
- .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL)
- .setFooter(`Algo deu errado, ${message.author.username}`)
- .setDescription(
- `Você já possui um ticket aberto! Para visualiza-lo, acesse o canal <#${ticket.channel}>.`
- )
- .setTimestamp();
- return message.channel.send(error3);
- }
-
- const m = await message.channel.send(
- "Criando Ticket. Por favor, aguarde um momento..."
- );
-
- if (guild.ticketSupportID == null) {
- try {
- var supportRole = await message.guild
- .createRole({
- name: "Suporte",
- permissions: []
- })
- .then(roleId => {
- supportRole = roleId.id;
- guild.ticketSupportID = roleId.id;
- });
- } catch (e) {
- return console.log(e.stack);
- }
- message.channel.send(
- "Foi criado o cargo <@&" +
- supportRole +
- "> como cargo de suporte. Seu nome, cor e permissão podem ser alterados livremente."
- );
- } else {
- var supportRole = guild.ticketSupportID;
- if (!message.guild.roles.get(supportRole)) {
- try {
- var supportRole = await message.guild
- .createRole({
- name: "Suporte",
- permissions: []
- })
- .then(roleId => {
- supportRole = roleId.id;
- guild.ticketSupportID = roleId.id;
- });
- } catch (e) {
- return console.log(e.stack);
- }
- message.channel.send(
- "Foi criado o cargo <@&" +
- supportRole +
- "> como cargo de suporte. Seu nome, cor e permissão podem ser alterados livremente."
- );
- }
- }
-
- if (guild.ticketCategoryID == null) {
- try {
- var ticketCategory = await message.guild
- .createChannel(`Tickets`, "category", [
- {
- id: message.guild.defaultRole.id,
- deny: ["VIEW_CHANNEL"]
- }
- ])
- .then(catId => {
- console.log(catId);
- console.log("--------");
- console.log(ticketCategory);
- ticketCategory = catId;
- guild.ticketCategoryID = catId.id;
- });
- } catch (e) {
- console.log(e.stack);
- }
- console.log(ticketCategory);
- message.channel.send(
- "Foi criado a categoria " +
- ticketCategory.name +
- " como categoria que conterá os tickets. Seu nome pode ser alterado livremente."
- );
- } else {
- var ticketCategory = guild.ticketCategoryID;
- if (!aruna.channels.get(ticketCategory)) {
- try {
- var ticketCategory = await message.guild
- .createChannel(`Tickets`, "category", [
- {
- id: message.guild.defaultRole.id,
- deny: ["VIEW_CHANNEL"]
- }
- ])
- .then(catId => {
- console.log(catId);
- console.log("--------");
- console.log(ticketCategory);
- ticketCategory = catId;
- guild.ticketCategoryID = catId.id;
- });
- } catch (e) {
- console.log(e.stack);
- }
- console.log(ticketCategory);
- message.channel.send(
- "Foi criado a categoria " +
- ticketCategory.name +
- " como categoria que conterá os tickets. Seu nome pode ser alterado livremente."
- );
- }
- }
- if (guild.ticketLogID == null) {
- try {
- var ticketLog = await message.guild
- .createChannel(`ticket-log`, "text", [
- {
- id: message.guild.defaultRole.id,
- deny: ["VIEW_CHANNEL"]
- },
- {
- id: message.guild.roles.get(supportRole),
- allow: ["VIEW_CHANNEL"],
- deny: ["SEND_MESSAGES"]
- }
- ])
- .then(ticketId => {
- ticketLog = ticketId.id;
- guild.ticketLogID = ticketId.id;
- ticketId.setParent(ticketCategory);
- });
- message.channel.send(
- "Foi criado o canal " +
- ticketLog +
- " como canal de log dos tickets. Seu nome pode ser alterado livremente."
- );
- } catch (e) {
- console.log(e.stack);
- }
- } else {
- var ticketLog = guild.ticketLogID;
- if (!aruna.channels.get(ticketLog)) {
- try {
- var ticketLog = await message.guild
- .createChannel(`ticket-log`, "text", [
- {
- id: message.guild.defaultRole.id,
- deny: ["VIEW_CHANNEL"]
- },
- {
- id: message.guild.roles.get(supportRole),
- allow: ["VIEW_CHANNEL"],
- deny: ["SEND_MESSAGES"]
- }
- ])
- .then(ticketId => {
- ticketLog = ticketId.id;
- guild.ticketLogID = ticketId.id;
- ticketId.setParent(ticketCategory);
- });
- message.channel.send(
- "Foi criado o canal " +
- ticketLog +
- " como canal de log dos tickets. Seu nome pode ser alterado livremente."
- );
- } catch (e) {
- console.log(e.stack);
- }
- }
- }
- guild.save();
- } else if (mode == "fechar" || mode == "close") {
- if (!ticket) return message.channel.send(error4);
- } else return message.channel.send(error);
-};
-
-exports.config = {
- name: "ticket",
- aliases: [],
- category: `${emoji.robot} Utilidades`
-};
diff --git a/Commands/userinfo.js b/Commands/userinfo.js
deleted file mode 100644
index 8e5ed4e..0000000
--- a/Commands/userinfo.js
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- 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/emojis.js");
-
-exports.run = (aruna, message, args) => {
-
- const mentionedUser = message.guild.member(
- message.mentions.users.first() ||
- aruna.users.get(args[0]) ||
- message.author
- );
-
- let userNickName =
- mentionedUser.nickname !== null
- ? `${mentionedUser.nickname}`
- : "Sem apelido";
- let userDaysDiscord = Math.round(
- Math.abs(
- (mentionedUser.user.createdAt.getTime() - new Date().getTime()) /
- (24 * 60 * 60 * 1000)
- )
- );
- let userStatus;
- if (mentionedUser.presence.status === "dnd") userStatus = `Não pertubar`;
- 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`;
- }
- let userRoles = `${mentionedUser.roles.map(roles => roles).join(" | ") ||
- `${emoji.error} Sem Cargo`}`;
- /*let trad = {
- CREATE_INSTANT_INVITE: "`Criar convite instantâneo`",
- KICK_MEMBERS: "`Expulsar usuários`",
- BAN_MEMBERS: "`Banir usuários`",
- ADMINISTRATOR: "`Administrador`",
- MANAGE_CHANNELS: "`Gerenciar canais`",
- MANAGE_GUILD: "`Gerenciar servidor`",
- ADD_REACTIONS: "`Adicionar reação`",
- VIEW_AUDIT_LOG: "`Ver registro de auditoria`",
- VIEW_CHANNEL: "`Ver canais`",
- READ_MESSAGES: "`Ver mensagens`",
- SEND_MESSAGES: "`Enviar mensagens`",
- SEND_TTS_MESSAGES: "`Enviar mensagens com aúdio`",
- MANAGE_MESSAGES: "`Gerenciar mensagens`",
- EMBED_LINKS: "`Links em embed`",
- ATTACH_FILES: "`Arquivos arquivados`",
- READ_MESSAGE_HISTORY: "`Ver histórico de mensagens`",
- MENTION_EVERYONE: "`Mencionar todos`",
- EXTERNAL_EMOJIS: "`Emojis externos`",
- USE_EXTERNAL_EMOJIS: "`Usar emojis externos`",
- CONNECT: "`Conectar`",
- SPEAK: "`Falar`",
- MUTE_MEMBERS: "`Silenciar usuários`",
- DEAFEN_MEMBERS: "`Perdoar usuários`",
- MOVE_MEMBERS: "`Mover usuários`",
- USE_VAD: "`Usar detecção de voz`",
- PRIORITY_SPEAKER: "`Prioridade para falar`",
- CHANGE_NICKNAME: "`Trocar apelido`",
- MANAGE_NICKNAMES: "`Gerenciar apelidos`",
- MANAGE_ROLES: "`Gerenciar cargos`",
- MANAGE_ROLES_OR_PERMISSIONS: "`Gerenciar cargos e permissões`",
- MANAGE_WEBHOOKS: "`Gerenciar webhooks`",
- MANAGE_EMOJIS: "`Gerenciar emojis`"
- };
- let userPerms = mentionedUser.permissions
- .toArray()
- .map(perms => `${trad[perms]}`)
- .join(", ");
-*/
- var stringtime = ""
-
- if(userDaysDiscord == 1) stringtime = "dia"
- else stringtime = "dias"
-
- let embed = new Discord.RichEmbed()
- .setAuthor(`${mentionedUser.user.username}`, `${userAvatar}`)
- .addField(
- `(${emoji.boss}) Nome`,
- `${mentionedUser.user.username}`,
- true
- )
- .addField(`(${userStatusEmoji}) Status`, `${userStatus}`, true)
- .addField(
- `(${emoji.customer}) Administrador`,
- `${userAdminServer}`,
- true
- )
- .addField(
- `(${emoji.menu}) Discord Tag`,
- `${mentionedUser.user.tag}`,
- true
- )
- .addField(`(${emoji.discord}) Apelido`, `${userNickName}`, true)
- .addField(
- `(${emoji.pass}) Dias no discord`,
- `${userDaysDiscord} ${stringtime}`,
- true
- )
- .addField(`(${emoji.picture}) Cargos`, `${userRoles}`, true)
- .setFooter("Criada pelo Lobo Metalurgico")
- .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`
-};
diff --git a/_.env b/_.env
deleted file mode 100644
index 521d96f..0000000
--- a/_.env
+++ /dev/null
@@ -1,4 +0,0 @@
-MAINTENANCE=false
-OFICIAL_MODE=false
-DBL=false
-TOKEN_DBL=""
diff --git a/events/message.js b/events/message.js
deleted file mode 100644
index 64e734d..0000000
--- a/events/message.js
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- 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");
-var { database, config } = require("../configs");
-const cooldown = require("../utils/cooldown.js");
-const utils = require("../utils/utils.js");
-
-exports.run = async (aruna, message, args) => {
- if (message.author.bot) return;
-
- if (message.channel.type == "dm") {
- return message.reply(
- "Desculpe, mas ainda não funciono em mensagens diretas :("
- );
- }
-
- database.Guilds.findOne({ _id: message.guild.id }, function(
- servro,
- servidor
- ) {
- database.Users.findOne({ _id: message.author.id }, async function(
- erro,
- usuario
- ) {
- if (!servidor) {
- console.log("No Server!");
- var saveG = await new database.Guilds({
- _id: message.guild.id
- });
- saveG.save();
- servidor = await database.Guilds.findOne({ _id: message.guild.id });
- }
-
- if (!usuario) {
- console.log("No User!");
- var saveU = await new database.Users({ _id: message.author.id });
- saveU.save();
- usuario = await database.Users.findOne({ _id: message.author.id });
- }
-
- let mention = [`<@${aruna.user.id}>`, `<@!${aruna.user.id}>`];
-
- mention.find(mention => {
- if (message.content === mention) {
- let embed = new Discord.RichEmbed()
-
- .setAuthor(
- `${aruna.user.username}`,
- `${aruna.user.displayAvatarURL}`
- )
- .setDescription(
- `Olá ${message.author.username}, como está? Você, deve estar se perguntando qual minha função.\nBom, minha função é ajudar seu servidor de várias formas mas principalmente na moderação e no entretenimento.\n\nSe você possuir uma sugestão ou tiver encontrado algum parafuso meu perdido por aí, entre em meu servidor de suporte para falar com meu criador.`
- )
- .addField(
- `⚒ Quais são meus comando?`,
- `Para saber meus comandos, basta usar **${servidor.prefix}help** e eu irei mandar meus comandos à você :)`
- )
- .addField(
- `👤 Qual meu servidor de suporte`,
- `Para entrar em meu servidor de suporte clique [aqui](https://discord.gg/8mtqyaA)!`
- )
- .setColor("#6e096a")
- .setTimestamp();
-
- message.channel.send(embed);
- }
- });
-
- var prefix = servidor.prefix || config.prefix;
-
- 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;
-
- let xpsystem = require(`../utils/rankSystem.js`);
- xpsystem.run(aruna, message, db, cooldown, utils, Discord);
- }
-
- if (message.content.startsWith(prefix)) {
- if (message.content === prefix) return;
-
- let args = message.content
- .slice(prefix.length)
- .trim()
- .split(/ +/g);
- let comando = args.shift().toLowerCase();
- let ma = message.content.split(" ");
- let cmd = ma[0];
- let commandFile =
- aruna.commands.get(cmd.slice(prefix.length)) ||
- aruna.commands.get(aruna.aliases.get(cmd.slice(prefix.length)));
-
- if (commandFile) {
- if (
- !message.guild.members
- .get(aruna.user.id)
- .hasPermission("USE_EXTERNAL_EMOJIS")
- )
- return message.reply(
- "Para meu funcionamento, preciso da permissão de `Usar Emojis Externos`"
- );
- commandFile.run(aruna, message, args, prefix, comando);
- } else if (!commandFile) {
- let alts =
- aruna.commands
- .filter(c =>
- c.config.name.startsWith(cmd.slice(prefix.length).toLowerCase())
- )
- .map(a => "`" + a.config.name + "`")
- .join(", ") || undefined;
-
- if (alts !== undefined) {
- message.reply(
- "Oops, não encontrei o comando " +
- "`" +
- comando +
- "`" +
- ". Você quis dizer algo como " +
- alts +
- "?"
- );
- } else {
- message.reply(
- "Oops, não encontrei o comando " + "`" + comando + "` :("
- );
- }
- }
- }
- }).catch(e => {});
- }).catch(e => {});
-};
diff --git a/events/ready.js b/events/ready.js
deleted file mode 100644
index ebc1662..0000000
--- a/events/ready.js
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- 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 pkg = require("../package.json");
-const version = pkg.version;
-
-const chalk = require("chalk");
-
-exports.run = async (aruna, message) => {
- try {
- log("Conectado!")
- if(process.env.DBL == true){
- const DBL = require("dblapi.js");
- const dbl = new DBL(process.env.TOKEN_DBL, aruna);
-
- dbl.on("posted", () => {
- log("[DBL] => Server count posted!");
- });
-
- dbl.on("error", e => {
- error(`[DBL] => Oops! ${e}`);
- });
-
- setInterval(() => {
- dbl.postStats(aruna.guilds.size);
- }, 900000);
- }
-
- function format(seconds) {
- function pad(s) {
- return (s < 10 ? "0" : "") + s;
- }
- var hours = Math.floor(seconds / (60 * 60));
- var minutes = Math.floor((seconds % (60 * 60)) / 60);
- var seconds = Math.floor(seconds % 60);
- var days = Math.floor(hours / 24);
-
- return (
- pad(days) +
- "d " +
- pad(hours) +
- "h " +
- pad(minutes) +
- "m " +
- pad(seconds) +
- "s"
- );
- }
-
- aruna.channels.get(`660612307394756627`).setName(`📡Versão: ${version}`);
- aruna.channels.get(`647590857813393428`).setName(`📡Versão: ${version}`);
-
- let status = [
- { name: `Muppet Show`, type: `watching` },
-
- { name: `Faz ${format(process.uptime())}`, type: `playing` },
-
- {
- name: `Netflix`,
- type: `watching`
- },
-
- {
- name: `Versão 4.1`,
- type: `streaming`,
- url: `https://www.twitch.tv/lobometalurgico`
- }
- ];
- function setStatus() {
- let randomStatus = status[Math.floor(Math.random() * status.length)];
- aruna.user.setPresence({ game: randomStatus });
- }
- setStatus();
- setInterval(() => {
- var users = aruna.users.size;
- var servers = aruna.guilds.size;
- setStatus();
-
- aruna.channels.get(`688180527491973220`).setName(`👥Usuários: ${users}`);
- aruna.channels
- .get(`688180491995578397`)
- .setName(`💻Servidores: ${servers}`);
-
- aruna.channels.get(`647590390404349952`).setName(`👥Usuários: ${users}`);
- aruna.channels
- .get(`647590426378895393`)
- .setName(`💻Servidores: ${servers}`);
- }, 15000);
- } catch (error) {}
-
-function logPrefix() {
- return `${chalk.gray("[")}${isSharded() ? `SHARD ${chalk.blue(aruna.shard.id)}` : "ARUNA"}${chalk.gray("]")}`;
-}
-
-function log(...a) {
- return console.log(logPrefix(), ...a);
-}
-
-function warn(...a) {
- return console.warn(logPrefix(), chalk.yellow(...a));
-}
-
-function error(...a) {
- return console.error(logPrefix(), chalk.red(...a));
-}
-
-function debug(...a) {
- return console.debug(logPrefix(), chalk.magenta(...a));
-}
-
-function isSharded() {
- return !!aruna.shard;
-}
-};
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 2d74123..9d9301a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,38 +1,140 @@
{
"name": "arunabot",
- "version": "4.1.0",
+ "version": "4.2.0",
"lockfileVersion": 1,
"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==",
+ "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==",
+ "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.9.2",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz",
- "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==",
+ "version": "7.10.2",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz",
+ "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==",
"requires": {
"regenerator-runtime": "^0.13.4"
}
},
+ "@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.2",
+ "resolved": "https://registry.npmjs.org/@discordjs/opus/-/opus-0.3.2.tgz",
+ "integrity": "sha512-T/ubykd4Xi19vDfw7/Oe+iTQBJ28yMI2PQAzK+Zue0PB9OpEYaeIXU7k5255061RwL+rHX9w7P/P2of+x2Vu2A==",
+ "requires": {
+ "@discordjs/node-pre-gyp": "^0.1.0",
+ "node-addon-api": "^2.0.0"
+ }
+ },
"@jimp/bmp": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.10.2.tgz",
- "integrity": "sha512-vsLwkfj6rcxtSxEdpQaxDagrgpOB0ErHTS/vVRQKDIhrzZkW1ddQa9W1hV8qssSY3K7lz1QNYFQdeRw/qoCiBA==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.13.0.tgz",
+ "integrity": "sha512-7i/XZLoK5JETBKO0VL7qjnr6WDVl1X8mmaUk6Lzq06/veMPC5IwUIZi1JRVAXPEwTf5uUegq0WFnmUS0lVYzFw==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "bmp-js": "^0.1.0",
- "core-js": "^3.4.1"
+ "@jimp/utils": "^0.13.0",
+ "bmp-js": "^0.1.0"
}
},
"@jimp/core": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.10.2.tgz",
- "integrity": "sha512-oyJLzWYcT6u0joD2YJAAVqCc1Ng9wXGPdAijWy3xxQT/roALmWLGL5ev6fQ/gugPVAD+xKUQpM0OxJepRYUl0Q==",
+ "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==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
+ "@jimp/utils": "^0.13.0",
"any-base": "^1.1.0",
"buffer": "^5.2.0",
- "core-js": "^3.4.1",
"exif-parser": "^0.1.12",
"file-type": "^9.0.0",
"load-bmfont": "^1.3.1",
@@ -43,323 +145,295 @@
}
},
"@jimp/custom": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.10.2.tgz",
- "integrity": "sha512-+ErCKYrIC0m6nDxRwIq0ETdltL4+C8RKrv3bGW/bI94QSfIXCdP6Vsz03VMae1J9+IPjfhn1LJ5rQ3zWkZEfdA==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.13.0.tgz",
+ "integrity": "sha512-Zir/CHoLRhQDGfPWueCIQbVjVUlayNIUch9fulq4M9V2S+ynHx9BqRn58z8wy+mk8jm1WlpRVhvZ8QUenbL0vg==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/core": "^0.10.2",
- "core-js": "^3.4.1"
+ "@jimp/core": "^0.13.0"
}
},
"@jimp/gif": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.10.2.tgz",
- "integrity": "sha512-Evkwr7Vlt5zMqNccsUDetHpKtvhFz07yg8BRZl3kXzkeKeaK/PbuAV7yjXn1DxVVU+1uSS765MdbsMVe7J404A==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.13.0.tgz",
+ "integrity": "sha512-7FO2Fa9FZluqGt1MM/L8s6P5UEedxrIQT2eBAxzB8Z82YTTSWQXw4bdrZWCwiQjBFZwKTIaULIfw6+TxA/Q2XA==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1",
+ "@jimp/utils": "^0.13.0",
+ "gifwrap": "^0.9.2",
"omggif": "^1.0.9"
}
},
"@jimp/jpeg": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.10.2.tgz",
- "integrity": "sha512-+aQUGBZI6OueB0K6gqLCwehV5skZceVyZjjmPmuXaE7ZvdhFMP2QDh45vcT8LzlPGUcOwpIWxsGHrB6Q6RcFXQ==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.13.0.tgz",
+ "integrity": "sha512-Fol/DxA1lnIzCsNx/CckIEoyWImQHiWPgFAWL5s7VIVaJrEFnnbRqfOxmvr8yWg8mh3hWLeXNcxqA82CKXgg+Q==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1",
- "jpeg-js": "^0.3.4"
+ "@jimp/utils": "^0.13.0",
+ "jpeg-js": "^0.4.0"
}
},
"@jimp/plugin-blit": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.10.2.tgz",
- "integrity": "sha512-PdqKZLkwnOOnrr+M4X4K/GrQ26qeCHut7AoFbKW+BsHooHvyadOWwVTBUBfK8GyDp/NApEC9SXbT0UNk8XqabA==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.13.0.tgz",
+ "integrity": "sha512-roCShFZosJgRMLCLzuOT1pRZysQF/p3avQieZiu9pfg2F9X09f91OauU2Lf3/yOp0TZCWbheqbem9MPlhyED8w==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1"
+ "@jimp/utils": "^0.13.0"
}
},
"@jimp/plugin-blur": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.10.2.tgz",
- "integrity": "sha512-9KeLyUY3s5N0cPZN4uMg0qIiSDvIPhXEnpYnXdN2V53dM25sKrBCMH578/W+n9hAHVpsbJHS+VFknO1JV47QVw==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.13.0.tgz",
+ "integrity": "sha512-LeBhQe72bRk2fe2AftcqcDaWgSu6vFD0fxiAYYMy3pHa8pnPAwnw2W3u4bV/gc5XJt6AJzoRyc7WVG2pE4A3gg==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1"
+ "@jimp/utils": "^0.13.0"
}
},
"@jimp/plugin-circle": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.10.2.tgz",
- "integrity": "sha512-wOJ3qKa916YZMEwA9qwIn8yROYonkscJ3bqaaSsyf5CadiY8VCijKxA3BVwr7PKjj89yf5RCS4mcy+CO8+nmkw==",
+ "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==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1"
+ "@jimp/utils": "^0.13.0"
}
},
"@jimp/plugin-color": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.10.2.tgz",
- "integrity": "sha512-c6cw41Hn3tLYQIRg3hxXrefKcOfW4jRN9b9DGH16mcZrRtw5jMzq3NfZ+RLQM47SyAE7N2BeUz0Ah3pmCArI0g==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.13.0.tgz",
+ "integrity": "sha512-e71UDivZdZGOhQRLjDo4a0BKgrH858HJ7zFk7/Yti58LwgeIGjYHhuYc+xQOdnBWPzGSD47TuFX5GXmf/x1nmg==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1",
+ "@jimp/utils": "^0.13.0",
"tinycolor2": "^1.4.1"
}
},
"@jimp/plugin-contain": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.10.2.tgz",
- "integrity": "sha512-oDDe+XdpSwx2OQOSb6ar4O31+4d02Qz4R+1BeucuO7FzOrbDggnCWavSg6RevyOJPDKGkmv8Jj3V6S0jUwgVgw==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.13.0.tgz",
+ "integrity": "sha512-qPYS+ccMP4mEnf7BB0bcaszUTth8OxeRX0MdMvU6PDEI0nIvVVNwmuI6YtNqqs12PwuYxgPkq6AFenyLyoNP1g==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1"
+ "@jimp/utils": "^0.13.0"
}
},
"@jimp/plugin-cover": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.10.2.tgz",
- "integrity": "sha512-cnEqx8kHqBvQA+axKA8qRshwAIIfyxAwjdeRB/LZ9bWroh8XvbifW5buBgITDG5KklDkBhivmDEtPY90r3mMFQ==",
+ "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==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1"
+ "@jimp/utils": "^0.13.0"
}
},
"@jimp/plugin-crop": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.10.2.tgz",
- "integrity": "sha512-6uTb3LMP0kiMqYOAHyU/q/pkScw6aRWkTSxhjgcsewQS3zPHWTSGgP8u6CNAFnlDmVYVIz/jdKlFnnOdf0ZwrA==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.13.0.tgz",
+ "integrity": "sha512-Y1Ug3kOzsq72EjLiWQlwkHuvUvdSmFUDtxpyOXh3RxeWF7wmdjH8FvdhPj8hWvFLsDYFgWGaLI4Z6SXOr+N8nA==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1"
+ "@jimp/utils": "^0.13.0"
}
},
"@jimp/plugin-displace": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.10.2.tgz",
- "integrity": "sha512-AGQDlyeFJz+zszYUkIzi5QyLLPsJzRJNIplU0S0HBxmXf5tZEeiiEtmsaC4j9VoAVD9Jwwn39+cfwV88Ij7WGg==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.13.0.tgz",
+ "integrity": "sha512-c80VIUjIqQoavafthLpYRZdzANCxbOCHzqkFVbZ0kNKJnDDk6fW55mvVW4TJLDToDU81WMlttCmNV0oXcX93gQ==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1"
+ "@jimp/utils": "^0.13.0"
}
},
"@jimp/plugin-dither": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.10.2.tgz",
- "integrity": "sha512-TEu7n44OS/+F1eWqKumsKYI+i2cPxzRTmxJhxrsUGyDD2aNi7tCIfKILXDqO6Ii0tYgSqwakG2+Eu0Jqg7J/VQ==",
+ "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==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1"
+ "@jimp/utils": "^0.13.0"
}
},
"@jimp/plugin-fisheye": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.10.2.tgz",
- "integrity": "sha512-kxtfkcnnXitqpTxGaZg/q6bzMBRWCFEWs7maMIgjFkGvXsMegQ90EdKF1Ku76/gCTIGxyfbped8QD/+iACgzFw==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.13.0.tgz",
+ "integrity": "sha512-O7h5pNTk2sYcTKxLvV6+zzUpLx8qzdNl6qiP9x1S0CKy64oZ9IwtK1eR1eLom0YA8tUR7rX5Ra4pB8bhq8Oyqw==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1"
+ "@jimp/utils": "^0.13.0"
}
},
"@jimp/plugin-flip": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.10.2.tgz",
- "integrity": "sha512-JW/aAKPGYOEGrqldpUBFxHUZ21pwhtxeRiwXEyMu/8N23PVuNBAePKboPMxRvkSLvAOn122xKEyCQvF10v/TOQ==",
+ "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==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1"
+ "@jimp/utils": "^0.13.0"
}
},
"@jimp/plugin-gaussian": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.10.2.tgz",
- "integrity": "sha512-uP1up3fCIBzGexqs/+HMGBoZckEEcic09RNRj5Lq6EUVY8vFdKeBk3F+tAA+fstpA6yHhjPk1w7FZKX/tkECNw==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.13.0.tgz",
+ "integrity": "sha512-0ctRqbCcLdy8y9IrSIH2McWNPLnEwjoe8qxtqoi51zRsM3z3mwjiTC2q8AWeF0SdIdWwV+YV/eP0494AJqjTsg==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1"
+ "@jimp/utils": "^0.13.0"
}
},
"@jimp/plugin-invert": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.10.2.tgz",
- "integrity": "sha512-zm1NB+AS0fTKW0gmFs1Tjgkj892gtnDicyxzmYeCLoQzPTr/1iPVf2EGidCS88+aw04sA5DOu0UX7637ib7TkA==",
+ "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==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1"
+ "@jimp/utils": "^0.13.0"
}
},
"@jimp/plugin-mask": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.10.2.tgz",
- "integrity": "sha512-4pVBAU6d/7EhfYs8sYuBGB3JMIuvrdiXbt6ESNs4CyDSbiDT4z1/f2sjWvNyLYlJ7cQJ+we50qqvq8vvNnb5lA==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.13.0.tgz",
+ "integrity": "sha512-U3OdsgtMNpbCYc1lzzu96zdSgyz7BK9eD8IoFHdw4Ma8gCuM8kp9gdBJlKnzOh8eyYvssdCMZOWz9Xbxc5xH9A==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1"
+ "@jimp/utils": "^0.13.0"
}
},
"@jimp/plugin-normalize": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.10.2.tgz",
- "integrity": "sha512-B2HXf6uaH8EAyZA5KvVYJOfv4AZpferIuDhOQSqDLKAEBBfEViwHk/Rn+nCUzGsAzQ/yiVtKAil68YcybaI6oQ==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.13.0.tgz",
+ "integrity": "sha512-yKOgZSvOxSHNlh+U9NOQH4Drgca0Dwb7DQRk3vj67gvHQC96JafIpGwN+9V4fP89lA3rkItbw6xgN6C/28HEUQ==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1"
+ "@jimp/utils": "^0.13.0"
}
},
"@jimp/plugin-print": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.10.2.tgz",
- "integrity": "sha512-YXKBG5yNOr/DX958Omk1GzTrprRJ3YXWhJ6tzCbboxqXK6pErLDxFsa1mlngDGb/a43oGs63Myj7CuGf98/vaw==",
+ "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==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1",
+ "@jimp/utils": "^0.13.0",
"load-bmfont": "^1.4.0"
}
},
"@jimp/plugin-resize": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.10.2.tgz",
- "integrity": "sha512-F+pXSU5sbACqqArZfVeYYXrq7qMwZcMs97Z3V70qsLtvDSVyNFG5iYpJhFKJOj05O7a2G7FQ1Nq2h0UKJdlLJg==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.13.0.tgz",
+ "integrity": "sha512-XOo0Skn7aq/aGxV9czFx6EaBUbAsAGCVbAS26fMM0AZ4YAWWUEleKTpHunEo92giIPhvlxeFFjQR2jQ9UcB3uQ==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1"
+ "@jimp/utils": "^0.13.0"
}
},
"@jimp/plugin-rotate": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.10.2.tgz",
- "integrity": "sha512-bQ0RQuXS768G9l1HemULJ7puuevU5N3TpE1QV5NdzbKwjHidFAAavp8XFXOhd2Mj/Xh/3iFlMMEB7NG/McYoOA==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.13.0.tgz",
+ "integrity": "sha512-BaNeh655kF9Rz01ZV+Bkc8hLsHpNu3QnzigruVDjGt9Paoig0EBr+Dgyjje+7eTLu20kyuyxwPUAxLSOiPiraQ==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1"
+ "@jimp/utils": "^0.13.0"
}
},
"@jimp/plugin-scale": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.10.2.tgz",
- "integrity": "sha512-47GRG3joOGDBLHYyLR0tc3hEz/H8tgPcLZaNEAaIdyL+ckAWQIgnoytbqj7OEAFeMj5j+loNm+ahJVX7w/X/ug==",
+ "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==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1"
+ "@jimp/utils": "^0.13.0"
}
},
"@jimp/plugin-shadow": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.10.2.tgz",
- "integrity": "sha512-koksEMJZKjq8OiprLh+ffrRo/x/dXHCsfaKS4kf2EoFZEb6sZHeJgKLwozLky1DXBPiMryYSrNt8Cb6wzjd1zA==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.13.0.tgz",
+ "integrity": "sha512-qObtH63dmfPLze5wE8XDRjDsBOUnAfEWib4YbjPXGBZVxeKD7+2oPGemsK56HqC/+rYzIynkbi4MUIV1Q0dGjA==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1"
+ "@jimp/utils": "^0.13.0"
}
},
"@jimp/plugin-threshold": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.10.2.tgz",
- "integrity": "sha512-RQzxB40KK50iUUNLF9M7G3dVKFmbe/T4EQVWMPxxX8NQPNbU0vjZzTW0vVYoTYno2vLxewQgV0Y3ydX/l08NLg==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.13.0.tgz",
+ "integrity": "sha512-ACF7jk0ogso+2RK+0EsvBupVfE3IMq39wGFQWgpnHR9Tj12mSO279f6i/H8bcj1ZXmHot22nwLOG0wO4AlAaRg==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1"
+ "@jimp/utils": "^0.13.0"
}
},
"@jimp/plugins": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.10.2.tgz",
- "integrity": "sha512-z4Fhu97WZIussTzd1PJXUUuluushXlfCYzXifixf8fGAoVGZuMMJl6aqtuy4eUOgLyN8sXun0MzdWAahelqbfA==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.13.0.tgz",
+ "integrity": "sha512-onu8GnSnFjLFuFVFq8+aTYFIDfH8kwZuBHeGaDyScPFFn6QMKsPl4TeLzQ5vwIPvcpkADuFFfuAshE4peutjjA==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/plugin-blit": "^0.10.2",
- "@jimp/plugin-blur": "^0.10.2",
- "@jimp/plugin-circle": "^0.10.2",
- "@jimp/plugin-color": "^0.10.2",
- "@jimp/plugin-contain": "^0.10.2",
- "@jimp/plugin-cover": "^0.10.2",
- "@jimp/plugin-crop": "^0.10.2",
- "@jimp/plugin-displace": "^0.10.2",
- "@jimp/plugin-dither": "^0.10.2",
- "@jimp/plugin-fisheye": "^0.10.2",
- "@jimp/plugin-flip": "^0.10.2",
- "@jimp/plugin-gaussian": "^0.10.2",
- "@jimp/plugin-invert": "^0.10.2",
- "@jimp/plugin-mask": "^0.10.2",
- "@jimp/plugin-normalize": "^0.10.2",
- "@jimp/plugin-print": "^0.10.2",
- "@jimp/plugin-resize": "^0.10.2",
- "@jimp/plugin-rotate": "^0.10.2",
- "@jimp/plugin-scale": "^0.10.2",
- "@jimp/plugin-shadow": "^0.10.2",
- "@jimp/plugin-threshold": "^0.10.2",
- "core-js": "^3.4.1",
+ "@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",
"timm": "^1.6.1"
}
},
"@jimp/png": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.10.2.tgz",
- "integrity": "sha512-3r5q9Ns3Gz8pcI8oBdGTY7d0TkkW4atZ12bknB1sABc3UYX69arqmTvrULMYhWf0M6n3tKHdnmdW2cTlFWIAbw==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.13.0.tgz",
+ "integrity": "sha512-9MVU0BLMQKJ6Kaiwjrq6dLDnDktZzeHtxz4qthRHaGOyHLx3RpxmbhaDuK9dDg6NASX3JuXznEhaOP4lqQODpQ==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.10.2",
- "core-js": "^3.4.1",
+ "@jimp/utils": "^0.13.0",
"pngjs": "^3.3.3"
}
},
"@jimp/tiff": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.10.2.tgz",
- "integrity": "sha512-uuJF6ZMXo0EDyooho9RhwAY9YGcgUju1mw53N9BtU7E9Y+AxKn7miaK2niROmN2/ufmLJO8vS9zjpgAxv+zgKQ==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.13.0.tgz",
+ "integrity": "sha512-8lLGgEmhVRRjzZfn/QgpM3+mijq5ORYqRHtLcqDgcQaUY/q/OU1CxLYX777pozyQ3KIq1O+jyyHZm2xu3RZkPA==",
"requires": {
"@babel/runtime": "^7.7.2",
- "core-js": "^3.4.1",
"utif": "^2.0.1"
}
},
"@jimp/types": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.10.2.tgz",
- "integrity": "sha512-XCgFhH8BR0ovxrEkDnKRXalEAUjo3vW9vwOFxfSrJR/YS/k0TsvYB6/+QAU/cGwcN8icmYdDyhq2yhJACAl13w==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.13.0.tgz",
+ "integrity": "sha512-qGq9qVHiRTgtIy061FSBr9l7OFrSiFLkKyQVnOBndEjwls2XLBKXkMmSD2U3oiHcNuf3ACsDSTIzK3KX/hDHvg==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/bmp": "^0.10.2",
- "@jimp/gif": "^0.10.2",
- "@jimp/jpeg": "^0.10.2",
- "@jimp/png": "^0.10.2",
- "@jimp/tiff": "^0.10.2",
- "core-js": "^3.4.1",
+ "@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",
"timm": "^1.6.1"
}
},
"@jimp/utils": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.10.2.tgz",
- "integrity": "sha512-B3fBgkE7t7S4X1RXKY5vfx+8QdUvN0AIbG2rM7csYTsudOczTtzimlP7XxunYtOwCYBLVswRWpqn8PZcRLWu2w==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.13.0.tgz",
+ "integrity": "sha512-zA4573jE4FIpBKiYpPGo66JOAGdv/FS/N9fW9GpkbwJeTu12fV+r4R1ARSyt8UEKdE4DMBatBmQC0U2FGZijOA==",
"requires": {
"@babel/runtime": "^7.7.2",
- "core-js": "^3.4.1",
"regenerator-runtime": "^0.13.3"
}
},
@@ -368,6 +442,11 @@
"resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
"integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ=="
},
+ "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",
@@ -377,6 +456,41 @@
"negotiator": "0.6.2"
}
},
+ "acorn": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz",
+ "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==",
+ "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==",
+ "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==",
+ "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",
@@ -391,11 +505,51 @@
"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.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",
+ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+ "dev": true
+ },
"async-limiter": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
@@ -406,16 +560,24 @@
"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",
+ "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=="
},
- "bindings": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz",
- "integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE="
- },
"bl": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/bl/-/bl-2.2.0.tgz",
@@ -450,6 +612,30 @@
"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": {
@@ -476,15 +662,31 @@
"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
+ },
"chalk": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz",
- "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==",
+ "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",
@@ -506,11 +708,6 @@
"delayed-stream": "~1.0.0"
}
},
- "commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
- },
"complex.js": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.0.11.tgz",
@@ -521,6 +718,16 @@
"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="
+ },
+ "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",
@@ -549,27 +756,37 @@
"resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz",
"integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA=="
},
- "core-js": {
- "version": "3.6.5",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz",
- "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA=="
- },
"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="
},
- "dblapi.js": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/dblapi.js/-/dblapi.js-2.4.0.tgz",
- "integrity": "sha512-SqDYVcV1DBQnyhySTjd+Qvzu7jFr+4eKwl56fGpIti7OlXGF5dmDPeo3jQfRlOXTRn5/I5997MDIJukoDxE3Mg=="
+ "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"
+ }
+ },
+ "dbots": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/dbots/-/dbots-4.0.0.tgz",
+ "integrity": "sha512-G2KuFaymsDSeOMijNyEWJzAMuImMkn1MF2Tqh6d6f+FhZTDR+EUrKYLtgwYsEKc6h0a1iq+M6KTtQt41BKVEkQ==",
+ "requires": {
+ "axios": "^0.19.0",
+ "promise.allsettled": "^1.0.2"
+ }
},
"debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"requires": {
- "ms": "2.0.0"
+ "ms": "^2.1.1"
}
},
"decimal.js": {
@@ -577,11 +794,35 @@
"resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.0.tgz",
"integrity": "sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw=="
},
+ "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
+ },
+ "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",
"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",
@@ -597,6 +838,11 @@
"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",
@@ -609,26 +855,99 @@
"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=="
},
- "dotenv": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz",
- "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw=="
- },
"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": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "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"
+ }
+ },
+ "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==",
+ "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",
+ "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"
+ }
+ },
+ "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",
@@ -639,6 +958,168 @@
"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.4.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.4.0.tgz",
+ "integrity": "sha512-gU+lxhlPHu45H3JkEGgYhWhkR9wLHHEXC9FbWFnTlEkbKyZKWgWRLgf61E8zWmBuI6g5xKBph9ltg3NtZMVF8g==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "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-utils": "^2.0.0",
+ "eslint-visitor-keys": "^1.2.0",
+ "espree": "^7.1.0",
+ "esquery": "^1.2.0",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^5.0.1",
+ "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.14",
+ "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": "^5.2.3",
+ "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.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-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.0",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz",
+ "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-scope": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz",
+ "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.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"
+ }
+ },
+ "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
+ },
+ "espree": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-7.1.0.tgz",
+ "integrity": "sha512-dcorZSyfmm4WTuTnE5Y7MEN1DyoPYy1ZR783QW1FJoenn7RailyWFsq/UL6ZAAA7uXurN9FIpYyUs3OfiIW+Qw==",
+ "dev": true,
+ "requires": {
+ "acorn": "^7.2.0",
+ "acorn-jsx": "^5.2.0",
+ "eslint-visitor-keys": "^1.2.0"
+ }
+ },
+ "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.1.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz",
+ "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==",
+ "dev": true
+ }
+ }
+ },
+ "esrecurse": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.1.0"
+ }
+ },
+ "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",
@@ -684,6 +1165,21 @@
"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": {
@@ -701,11 +1197,24 @@
"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",
@@ -713,11 +1222,38 @@
}
}
},
+ "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=="
},
+ "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==",
+ "dev": true,
+ "requires": {
+ "flat-cache": "^2.0.1"
+ }
+ },
"file-type": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz",
@@ -735,6 +1271,72 @@
"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": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
+ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+ "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": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
+ "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": {
@@ -767,10 +1369,75 @@
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
},
- "fs": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.2.tgz",
- "integrity": "sha1-4fJE7zkzwbKmS9R5kTYGDQ9ZFPg="
+ "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="
+ },
+ "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",
+ "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",
@@ -781,11 +1448,38 @@
"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": {
+ "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",
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
+ },
"html-entities": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz",
@@ -801,69 +1495,259 @@
"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="
+ }
+ }
+ },
+ "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"
}
},
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "ieee754": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
+ "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg=="
+ },
+ "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.2.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
+ "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
+ "dev": true,
+ "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": {
+ "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.5",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
+ },
+ "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-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",
+ "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": {
- "safer-buffer": ">= 2.1.2 < 3"
+ "is-extglob": "^2.1.1"
}
},
- "ieee754": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
- "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg=="
+ "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=="
},
- "inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ "is-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz",
+ "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==",
+ "requires": {
+ "has-symbols": "^1.0.1"
+ }
},
- "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-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-function": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz",
- "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU="
+ "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",
"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
+ },
+ "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",
"integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k="
},
"jimp": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.10.2.tgz",
- "integrity": "sha512-dt6n3P0LZyoqAiIUur+gJEKS55sCUUo19cKx8LTSZRqGizF4JN0jfRAnfnV4nxF+sINP2FN6SOi82gHcAMm1nQ==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.13.0.tgz",
+ "integrity": "sha512-N/iG8L7Qe+AcHhrgcL0m7PTP/14iybmSIuOqCDvuel9gcIKEzxbbGuPCJVMchwXzusc2E7h9UjO9LZDfXb/09w==",
"requires": {
"@babel/runtime": "^7.7.2",
- "@jimp/custom": "^0.10.2",
- "@jimp/plugins": "^0.10.2",
- "@jimp/types": "^0.10.2",
- "core-js": "^3.4.1",
+ "@jimp/custom": "^0.13.0",
+ "@jimp/plugins": "^0.13.0",
+ "@jimp/types": "^0.13.0",
"regenerator-runtime": "^0.13.3"
}
},
"jpeg-js": {
- "version": "0.3.7",
- "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.7.tgz",
- "integrity": "sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ=="
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.0.tgz",
+ "integrity": "sha512-960VHmtN1vTpasX/1LupLohdP5odwAT7oK/VSm6mW0M58LbrBnowLAPWAZhWGhDAGjzbMnPXZxzB/QYgBwkN0w=="
+ },
+ "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.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
+ "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
+ "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.1",
"resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.1.tgz",
"integrity": "sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw=="
},
+ "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.0",
"resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.0.tgz",
@@ -879,24 +1763,30 @@
"xtend": "^4.0.0"
}
},
+ "lodash": {
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
+ "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.6.5",
- "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.6.5.tgz",
- "integrity": "sha512-QZCzhcfUliZfsOboi68QkNcMejPKTEhxE+s1TApvHubDeR8ythm4ViWuYFqgUwZeoHe8q0nsPxOvA3lQvdSzyg==",
+ "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"
}
},
"mathjs": {
- "version": "6.6.4",
- "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-6.6.4.tgz",
- "integrity": "sha512-fvmP89ujJbDAC8ths7FZh7PWdA71dfA5WJVAzJbQhSDCHK1aBk8WRf1XcTw51ERs+sKx9nYBGsRshqmb/oe8Ag==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-7.0.1.tgz",
+ "integrity": "sha512-ikFnvtvui8EA1KC+RsF7Sse34WA7EGsKnwwv7/lTRx04t25JtWpVWrs0ZcNKxygZVrOIpU9MRgbvXEFYFV3pOQ==",
"requires": {
"complex.js": "^2.0.11",
"decimal.js": "^10.2.0",
@@ -935,16 +1825,16 @@
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
},
"mime-db": {
- "version": "1.43.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz",
- "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ=="
+ "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.26",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz",
- "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==",
+ "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.43.0"
+ "mime-db": "1.44.0"
}
},
"min-document": {
@@ -956,15 +1846,40 @@
}
},
"miniget": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/miniget/-/miniget-1.7.0.tgz",
- "integrity": "sha512-yrgaDSMRzrfYTkudB4Y6xK8pCb7oAH2bvfv6iPY2m6CedZfs9yK4b/ofh0Vzv08hCYXH/HHkoS8an6fkWtOAQA=="
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/miniget/-/miniget-1.7.2.tgz",
+ "integrity": "sha512-USPNNK2bnHLOplX8BZVMehUkyQizS/DFpBdoH0TS+fM+hQoLNg9tWg4MeY9wE8gfY0pbzmx5UBEODujt3Lz8AA=="
+ },
+ "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.0",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.0.tgz",
+ "integrity": "sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA==",
+ "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",
@@ -974,9 +1889,9 @@
}
},
"moment": {
- "version": "2.24.0",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz",
- "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg=="
+ "version": "2.26.0",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.26.0.tgz",
+ "integrity": "sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw=="
},
"moment-duration-format": {
"version": "2.3.2",
@@ -984,12 +1899,12 @@
"integrity": "sha512-cBMXjSW+fjOb4tyaVHuaVE/A5TqkukDWiOfxxAjY+PEqmmBQlLwn+8OzwPiG3brouXKY5Un4pBjAeB6UToXHaQ=="
},
"mongodb": {
- "version": "3.5.5",
- "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.5.5.tgz",
- "integrity": "sha512-GCjDxR3UOltDq00Zcpzql6dQo1sVry60OXJY3TDmFc2SWFY6c8Gn1Ardidc5jDirvJrx2GC3knGOImKphbSL3A==",
+ "version": "3.5.8",
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.5.8.tgz",
+ "integrity": "sha512-jz7mR58z66JKL8Px4ZY+FXbgB7d0a0hEGCT7kw8iye46/gsqPrOEpZOswwJ2BQlfzsrCLKdsF9UcaUfGVN2HrQ==",
"requires": {
"bl": "^2.2.0",
- "bson": "^1.1.1",
+ "bson": "^1.1.4",
"denque": "^1.4.1",
"require_optional": "^1.0.1",
"safe-buffer": "^5.1.2",
@@ -997,13 +1912,13 @@
}
},
"mongoose": {
- "version": "5.9.9",
- "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.9.9.tgz",
- "integrity": "sha512-pLkIkM7XQwfbQ+xK1l57Zv0DYPH190/I6Cv5+PbJGfAU0HvX0atMlp+vly8zcjNTEvTkVM80qA5eBYBvZyLYXw==",
+ "version": "5.9.18",
+ "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.9.18.tgz",
+ "integrity": "sha512-agZbIuQcN1gZ12BJn6KesA+bgsvoLVjCwhfPw88hggxX8O24SWK4EJwN35GEZKDej9AHUZKNAPgmdeXCVQxviA==",
"requires": {
- "bson": "~1.1.1",
+ "bson": "^1.1.4",
"kareem": "2.3.1",
- "mongodb": "3.5.5",
+ "mongodb": "3.5.8",
"mongoose-legacy-pluralize": "1.0.2",
"mpath": "0.7.0",
"mquery": "3.2.2",
@@ -1012,13 +1927,6 @@
"safe-buffer": "5.1.2",
"sift": "7.0.1",
"sliced": "1.0.1"
- },
- "dependencies": {
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- }
}
},
"mongoose-legacy-pluralize": {
@@ -1050,42 +1958,117 @@
"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.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ "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
},
- "nan": {
- "version": "2.14.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
- "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg=="
+ "needle": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.0.tgz",
+ "integrity": "sha512-o/qITSDR0JCyCKEQ1/1bnUXMmznxabbwi/Y4WwJElf+evwJNFNwIDMCCt5IigFVxgeGBJESLohGtIS9gEzo1fA==",
+ "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-opus": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/node-opus/-/node-opus-0.3.3.tgz",
- "integrity": "sha512-ZQniA8iJ6y/qOTmW6eyzM9m8odt4CIGV0NM9/U03/pYLhGyxy18QXO25WfrWd8XsUYx57tnxll2xxj54CN08uQ==",
+ "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=="
+ },
+ "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": {
- "bindings": "~1.2.1",
- "commander": "^2.9.0",
- "nan": "^2.14.0",
- "ogg-packet": "^1.0.0"
+ "npm-normalize-package-bin": "^1.0.1"
}
},
- "ogg-packet": {
+ "npm-normalize-package-bin": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/ogg-packet/-/ogg-packet-1.0.1.tgz",
- "integrity": "sha512-dW1ok3BMnMikyXGDIgVEckWnlViW8JLWQV4qj9aN/rNRVqHlDYSlcIEtSIMH7tpuUOiIxAhY3+OxNdIOm6s17A==",
- "optional": true,
+ "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="
+ },
+ "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=="
+ },
+ "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": {
- "ref-struct": "*"
+ "define-properties": "^1.1.2",
+ "function-bind": "^1.1.1",
+ "has-symbols": "^1.0.0",
+ "object-keys": "^1.0.11"
}
},
"omggif": {
@@ -1106,11 +2089,61 @@
"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",
@@ -1140,6 +2173,17 @@
"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",
@@ -1163,6 +2207,12 @@
"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",
@@ -1178,6 +2228,24 @@
"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==",
+ "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",
@@ -1187,6 +2255,12 @@
"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",
@@ -1213,6 +2287,17 @@
"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",
@@ -1227,27 +2312,6 @@
"util-deprecate": "~1.0.1"
}
},
- "ref": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/ref/-/ref-1.3.5.tgz",
- "integrity": "sha512-2cBCniTtxcGUjDpvFfVpw323a83/0RLSGJJY5l5lcomZWhYpU2cuLdsvYqMixvsdLJ9+sTdzEkju8J8ZHDM2nA==",
- "optional": true,
- "requires": {
- "bindings": "1",
- "debug": "2",
- "nan": "2"
- }
- },
- "ref-struct": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/ref-struct/-/ref-struct-1.1.0.tgz",
- "integrity": "sha1-XV7mWtQc78Olxf60BYcmHkee3BM=",
- "optional": true,
- "requires": {
- "debug": "2",
- "ref": "1"
- }
- },
"regenerator-runtime": {
"version": "0.13.5",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
@@ -1258,6 +2322,12 @@
"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",
@@ -1265,6 +2335,13 @@
"requires": {
"resolve-from": "^2.0.0",
"semver": "^5.1.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ }
}
},
"resolve-from": {
@@ -1272,6 +2349,14 @@
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz",
"integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c="
},
+ "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"
+ }
+ },
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -1302,9 +2387,9 @@
"integrity": "sha1-KpsZ4lCoFwmSMaW5mk2vgLf77VQ="
},
"semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ "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",
@@ -1326,6 +2411,21 @@
"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",
@@ -1344,16 +2444,84 @@
"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": "2.1.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "astral-regex": "^1.0.0",
+ "is-fullwidth-code-point": "^2.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=",
+ "dev": true
+ }
+ }
+ },
"sliced": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
@@ -1373,11 +2541,65 @@
"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.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.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",
+ "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",
@@ -1386,6 +2608,19 @@
"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": "5.2.2",
"resolved": "https://registry.npmjs.org/superagent/-/superagent-5.2.2.tgz",
@@ -1413,19 +2648,14 @@
}
},
"mime": {
- "version": "2.4.4",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
- "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA=="
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ "version": "2.4.6",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz",
+ "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA=="
},
"qs": {
- "version": "6.9.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz",
- "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw=="
+ "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",
@@ -1452,6 +2682,78 @@
"has-flag": "^4.0.0"
}
},
+ "table": {
+ "version": "5.4.6",
+ "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
+ "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.10.2",
+ "lodash": "^4.17.14",
+ "slice-ansi": "^2.1.0",
+ "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==",
+ "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=",
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "tar": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.2.tgz",
+ "integrity": "sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg==",
+ "requires": {
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "minipass": "^3.0.0",
+ "minizlib": "^2.1.0",
+ "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.6.2",
"resolved": "https://registry.npmjs.org/timm/-/timm-1.6.2.tgz",
@@ -1477,6 +2779,21 @@
"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",
@@ -1504,6 +2821,15 @@
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"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==",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
"utif": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz",
@@ -1522,11 +2848,54 @@
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
"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==",
+ "dev": true
+ },
"vary": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
},
+ "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="
+ },
+ "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",
@@ -1570,14 +2939,19 @@
"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": "2.1.0",
- "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-2.1.0.tgz",
- "integrity": "sha512-UmblkTLSV0v3y9I3oqrZkllyT0FnK1Owm7WftEkcTIlqnjip1mnyaLICz0P6+W3Ji/AtBFSwy/mLG2dlEvP6Vw==",
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-2.1.7.tgz",
+ "integrity": "sha512-ithllxxlt4zmJVTnYtT8/31QLv5MGlK3fSk29lx2S4eKc1BGh+ELKQEAkRJqWIf2P8TYBYrKwijx11xND4JcXw==",
"requires": {
"html-entities": "^1.3.1",
- "m3u8stream": "^0.6.3",
- "miniget": "^1.7.0",
+ "m3u8stream": "^0.7.1",
+ "miniget": "^1.7.2",
"sax": "^1.1.3"
}
}
diff --git a/package.json b/package.json
index dd7212f..cd2c574 100644
--- a/package.json
+++ b/package.json
@@ -1,27 +1,36 @@
{
"name": "arunabot",
- "version": "4.1.0",
+ "version": "4.2.0",
"description": "A nova e melhorada aruna!",
- "main": "main.js",
+ "main": "src/main.js",
"scripts": {
- "start": "node sharding.js",
- "start-nonsharded": "node main.js"
+ "start": "node src/sharding.js",
+ "eslint": "eslint ./src",
+ "eslint:fix": "eslint ./src --fix"
},
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/ArunaBot/Aruna.git"
+ },
+ "author": "Lobo Metalurgico",
+ "license": "AGPL-3.0",
"dependencies": {
- "express": "^4.17.1",
+ "@discordjs/opus": "^0.3.2",
+ "chalk": "^4.1.0",
+ "dateformat": "^3.0.3",
+ "dbots": "^4.0.0",
"discord.js": "^11.6.4",
- "fs": "^0.0.2",
- "mongoose": "^5.9.7",
- "moment": "^2.24.0",
- "moment-duration-format": "^2.2.2",
+ "express": "^4.17.1",
"express-session": "^1.17.1",
- "dotenv": "^8.2.0",
- "ytdl-core": "^2.0.1",
- "node-opus": "^0.3.2",
- "jimp": "^0.10.1",
+ "jimp": "^0.13.0",
+ "mathjs": "^7.0.1",
+ "moment": "^2.26.0",
+ "moment-duration-format": "^2.3.2",
+ "mongoose": "^5.9.18",
"superagent": "^5.2.2",
- "mathjs": "^6.6.3",
- "chalk": "^4.0.0",
- "dblapi.js": "^2.4.0"
+ "ytdl-core": "^2.1.7"
+ },
+ "devDependencies": {
+ "eslint": "^7.3.1"
}
-}
\ No newline at end of file
+}
diff --git a/pm2.json b/pm2.json
new file mode 100644
index 0000000..3be6d96
--- /dev/null
+++ b/pm2.json
@@ -0,0 +1,9 @@
+{
+ "apps": [
+ {
+ "name": "ArunaBot",
+ "script": "pnpm",
+ "args": "start"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Commands/avatar.js b/src/Commands/avatar.js
similarity index 81%
rename from Commands/avatar.js
rename to src/Commands/avatar.js
index 8a0be2d..38ca2ea 100644
--- a/Commands/avatar.js
+++ b/src/Commands/avatar.js
@@ -16,16 +16,16 @@
along with this program. If not, see .
*/
-const Discord = require("discord.js");
+const Discord = require('discord.js');
-exports.run = (aruna, message, args, prefix) => {
+exports.run = (aruna, message, args) => {
const user1 = message.guild.member(
message.mentions.users.first() || aruna.users.get(args[0]) || message.author
);
const user = user1.user;
- let embed = new Discord.RichEmbed()
+ const embed = new Discord.RichEmbed()
.setAuthor(`Avatar de ${user.username}`)
.setDescription(`**Clique [aqui](${user.avatarURL}) para baixar a foto.**`)
.setImage(user.avatarURL)
@@ -33,8 +33,8 @@ exports.run = (aruna, message, args, prefix) => {
message.channel.send(embed);
};
exports.config = {
- name: "avatar",
- aliases: [""],
- description: "Mostra o avatar próprio ou de um usuário",
- category: `🎉 Entretenimento`
+ name: 'avatar',
+ aliases: [''],
+ description: 'Mostra o avatar próprio ou de um usuário',
+ category: '🎉 Entretenimento'
};
diff --git a/src/Commands/badges.js b/src/Commands/badges.js
new file mode 100644
index 0000000..2e5a965
--- /dev/null
+++ b/src/Commands/badges.js
@@ -0,0 +1,161 @@
+/* eslint-disable no-unused-vars */
+const Discord = require('discord.js');
+const { database, config } = require('../../Configs');
+const { premium } = require('../Utils/emojis');
+
+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}`)
+ .setDescription('Esse servidor já é VIP!')
+ .setTimestamp();
+ const error2 = new Discord.RichEmbed()
+ .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL)
+ .setFooter(`Algo deu errado, ${message.author.username}`)
+ .setDescription('Esse servidor já é um PARCEIRO!')
+ .setTimestamp();
+ const error3 = new Discord.RichEmbed()
+ .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL)
+ .setFooter(`Algo deu errado, ${message.author.username}`)
+ .setDescription('Esse servidor já é um PARCEIRO+')
+ .setTimestamp();
+ const error4 = new Discord.RichEmbed()
+ .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL)
+ .setFooter(`Algo deu errado, ${message.author.username}`)
+ .setDescription('Esse servidor não é um PARCEIRO+')
+ .setTimestamp();
+ const error5 = new Discord.RichEmbed()
+ .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL)
+ .setFooter(`Algo deu errado, ${message.author.username}`)
+ .setDescription('Esse servidor não é um PARCEIRO')
+ .setTimestamp();
+ const error6 = new Discord.RichEmbed()
+ .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL)
+ .setFooter(`Algo deu errado, ${message.author.username}`)
+ .setDescription('Esse servidor não é VIP')
+ .setTimestamp();
+ const error8 = new Discord.RichEmbed()
+ .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL)
+ .setFooter(`Algo deu errado, ${message.author.username}`)
+ .setDescription('Erro Desconhecido!')
+ .setTimestamp();
+ const error9 = new Discord.RichEmbed()
+ .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL)
+ .setFooter(`Algo deu errado, ${message.author.username}`)
+ .setDescription('Opção Inválida! Use apenas `set` ou `remove` como argumento primário!')
+ .setTimestamp();
+ const error10 = new Discord.RichEmbed()
+ .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL)
+ .setFooter(`Algo deu errado, ${message.author.username}`)
+ .setDescription('Insira Algum Argumento!')
+ .setTimestamp();
+ const error11 = new Discord.RichEmbed()
+ .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL)
+ .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);
+ } else if (args[0].toLowerCase() !== 'set' && args[0].toLowerCase() !== 'remove') {
+ return message.channel.send(error9);
+ } else if (!args[1] || args[1] !== 'partner+' && args[1] !== 'partner' && args[1] !== 'vip') {
+ return message.channel.send(error11);
+ }
+
+ const sucess = new Discord.RichEmbed()
+ .setColor([0, 255, 0])
+ .setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL)
+ .setFooter('Sucesso!')
+ .setDescription(`The Badge \`${args[1]}\` has been \`${args[0]}ed\` with sucess!`)
+ .setTimestamp();
+
+ var vip = guild.isPremium;
+ var partner = guild.isPartner;
+ var partnerPlus = '';
+
+ if (vip == true && partner == true) {
+ partnerPlus = true;
+ }
+
+ if (args[0] == 'set') {
+ if (args[1] == 'partner+') {
+ if (partnerPlus == true) {
+ return message.channel.send(error3);
+ } else if (vip == true) {
+ guild.isPartner = true;
+ await guild.save();
+ return message.channel.send(sucess);
+ } else if (partner == true) {
+ guild.isPremium = true;
+ await guild.save();
+ return message.channel.send(sucess);
+ } else {
+ guild.isPartner = true;
+ guild.isPremium = true;
+ await guild.save();
+ return message.channel.send(sucess);
+ }
+ } else if (args[1] == 'partner') {
+ if (partner == true) {
+ return message.channel.send(error2);
+ } else {
+ guild.isPartner = true;
+ await guild.save();
+ return message.channel.send(sucess);
+ }
+ } else if (args[1] == 'vip') {
+ if (vip == true) {
+ return message.channel.send(error1);
+ } else {
+ guild.isPremium = true;
+ await guild.save();
+ return message.channel.send(sucess);
+ }
+ } else return message.channel.send(error8);
+ } else if (args[0] == 'remove') {
+ if (args[1] == 'partner+') {
+ if (partnerPlus == false) {
+ return message.channel.send(error4);
+ } else {
+ guild.isPartner = false;
+ guild.isPremium = false;
+ await guild.save();
+ return message.channel.send(sucess);
+ }
+ } else if (args[1] == 'partner') {
+ if (partner == false) {
+ return message.channel.send(error5);
+ } else {
+ guild.isPartner = false;
+ await guild.save();
+ return message.channel.send(sucess);
+ }
+ } else if (args[1] == 'vip') {
+ if (vip == false) {
+ return message.channel.send(error6);
+ } else {
+ guild.isPremium = false;
+ await guild.save();
+ return message.channel.send(sucess);
+ }
+ } else return message.channel.send(error8);
+ } else return message.channel.send(error8);
+
+
+};
+
+exports.config = {
+ name: 'badge',
+ aliases: [],
+ category: '🧰 Administração'
+};
\ No newline at end of file
diff --git a/src/Commands/ban.js b/src/Commands/ban.js
new file mode 100644
index 0000000..73bda26
--- /dev/null
+++ b/src/Commands/ban.js
@@ -0,0 +1,119 @@
+/* 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');
+// 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) => {
+
+ 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}`)
+ .setDescription('Você não possui a permissão de `Banir Membros`!')
+ .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`!')
+ .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!')
+ .setTimestamp();
+ 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}`)
+ .setDescription(`Infelizmente não sei informar qual o erro. Sinto muito ${message.author.username} :(`)
+ .setTimestamp();
+
+ if (!message.member.hasPermission('BAN_MEMBERS'))
+ return message.channel.send(error1);
+ 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])
+ );
+
+ if (guildBuser) {
+ if (message.guild.owner.id == buser.id)
+ return message.channel.send(error4);
+ if (guildBuser.highestRole.position >= message.guild.members.get(message.author.id).highestRole.position && message.guild.owner.id !== message.author.id)
+ return message.channel.send(error5);
+ if (guildBuser.highestRole.position >= message.guild.members.get(aruna.user.id).highestRole.position)
+ return message.channel.send(error6);
+ }
+
+ var reason = '';
+
+ if (!args.join(' ').slice(19)) {
+ reason = `Punido por: ${message.author.username}`;
+ } else {
+ reason =
+ `Punido por: ${message.author.username} com o Motivo: ` +
+ args.join(' ').slice(19);
+ }
+
+ 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)
+ .setTimestamp();
+
+ message.channel.send(embed).then(async msg => {
+ await message.guild.ban(buser, reason).catch(err => {
+ console.log(err);
+ msg.edit(error7);
+ });
+ });
+};
+
+exports.config = {
+ name: 'banir',
+ aliases: ['ban'],
+ category: '👮♂️ Moderação'
+};
\ No newline at end of file
diff --git a/src/Commands/bot.js b/src/Commands/bot.js
new file mode 100644
index 0000000..15866f1
--- /dev/null
+++ b/src/Commands/bot.js
@@ -0,0 +1,77 @@
+/*
+ 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 { emojis } = require('../Utils');
+const Discord = require('discord.js');
+const pak = require('../../package.json');
+const { links } = require('../../Configs');
+
+exports.run = (aruna, message) => {
+
+ 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 = '';
+
+ 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 user = message.guild.member(aruna.user);
+
+ const name = user.nickname !== null ? user.nickname : aruna.user.username;
+
+ 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(
+ '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
+ )
+ .setThumbnail(`${aruna.user.displayAvatarURL}`);
+ message.channel.send(embed);
+};
+
+exports.config = {
+ name: 'bot',
+ aliases: ['botinfo'],
+ description: 'Lista as Principais informações do bot',
+ category: `${emojis.robot} Utilidades`
+};
diff --git a/Commands/calc.js b/src/Commands/calc.js
similarity index 64%
rename from Commands/calc.js
rename to src/Commands/calc.js
index 3c70512..0a61666 100644
--- a/Commands/calc.js
+++ b/src/Commands/calc.js
@@ -16,21 +16,21 @@
along with this program. If not, see .
*/
-const emoji = require("../utils/emojis.js");
-const Discord = require("discord.js");
-const math = require("mathjs");
+const { emojis } = require('../Utils');
+const Discord = require('discord.js');
+const math = require('mathjs');
exports.run = (aruna, message, args) => {
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.`)
+ .setDescription('Você deve inserir o cálculo a ser feito.')
.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.`
+ 'Desculpe, mas não consegui efetuar o cálculo. Tente inserir outra conta.'
)
.setTimestamp();
@@ -39,27 +39,27 @@ exports.run = (aruna, message, args) => {
var response;
try {
- response = math.eval(args.join(" "));
+ response = math.eval(args.join(' '));
} catch (e) {
return message.channel.send(error2);
}
- let embed = new Discord.RichEmbed()
- .setAuthor("Calculadora V2")
- .addField(
- `(${emoji.upload}) Entrada`,
- `\`\`\`js\n${args.join(' ')}\`\`\``
- )
- .addField(
- `(${emoji.dev}) Saida`,
- `\`\`\`js\n${response}\`\`\``
- )
- .setColor([54, 57, 63]);
- message.channel.send(embed);
+ const embed = new Discord.RichEmbed()
+ .setAuthor('Calculadora V2')
+ .addField(
+ `(${emojis.upload}) Entrada`,
+ `\`\`\`js\n${args.join(' ')}\`\`\``
+ )
+ .addField(
+ `(${emojis.dev}) Saida`,
+ `\`\`\`js\n${response}\`\`\``
+ )
+ .setColor([54, 57, 63]);
+ message.channel.send(embed);
};
exports.config = {
- name: "calc",
- aliases: ["calculadora", "math", "matematica", "calcular", "calculator"],
- category: `${emoji.robot} Utilidades`
+ name: 'calc',
+ aliases: ['calculadora', 'math', 'matematica', 'calcular', 'calculator'],
+ category: `${emojis.robot} Utilidades`
};
diff --git a/Commands/clear.js b/src/Commands/clear.js
similarity index 72%
rename from Commands/clear.js
rename to src/Commands/clear.js
index 6990b24..c103c7f 100644
--- a/Commands/clear.js
+++ b/src/Commands/clear.js
@@ -19,58 +19,58 @@
function verify(messages, args, message) {
if (args[0] == messages.size)
return (
- "Foram deletadas `" +
+ 'Foram deletadas `' +
messages.size +
- "` mensagens por " +
+ '` mensagens por ' +
`<@${message.author.id}>`
);
else
return (
`<@${message.author.id}> deletou apenas \`${messages.size}\`` +
- " mensagens das " +
+ ' mensagens das ' +
`\`${args[0]} requisitadas\`` +
- " por não existirem outras ou serem mais antigas que 2 semanas."
+ ' por não existirem outras ou serem mais antigas que 2 semanas.'
);
}
-const Discord = require('discord.js')
+const Discord = require('discord.js');
exports.run = async (client, message, args) => {
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\`!`)
+ .setDescription('Você não possui a permissão de `Gerenciar Mensagens`!')
.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\`!`)
+ .setDescription('Eu não possuo a permissão de `Gerenciar Mensagens`!')
.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!`)
+ .setDescription('Você deve inserir a quantidade de mensagens a ser apagada!')
.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.`)
+ .setDescription('Eu só posso apagar entre 2 e 100 mensagens.')
.setTimestamp();
if (
- !message.guild.members.get(client.user.id).hasPermission("MANAGE_MESSAGES")
+ !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)
+ return message.channel.send(error2);
+ if (!message.member.hasPermission('MANAGE_MESSAGES'))
+ return message.channel.send(error1);
if (!args[0])
- return message.channel.send(error3)
+ return message.channel.send(error3);
if (args[0] > 100 || args[0] <= 1)
- return message.channel.send(error4)
+ return message.channel.send(error4);
await message.delete();
await message.channel.bulkDelete(args[0]).then(messages => {
@@ -80,7 +80,7 @@ exports.run = async (client, message, args) => {
});
};
exports.config = {
- name: "clear",
+ name: 'clear',
aliases: [],
- category: `👮♂️ Moderação`
+ category: '👮♂️ Moderação'
};
diff --git a/Commands/config.js b/src/Commands/config.js
similarity index 67%
rename from Commands/config.js
rename to src/Commands/config.js
index 8db37fe..2f9cd45 100644
--- a/Commands/config.js
+++ b/src/Commands/config.js
@@ -1,3 +1,5 @@
+/* eslint-disable no-unused-vars */
+/* eslint-disable max-len */
/*
This File is part of ArunaBot
Copyright (C) LoboMetalurgico (and contributors) 2019-2020
@@ -16,44 +18,45 @@
along with this program. If not, see .
*/
-const { database } = require("../configs");
-const emoji = require("../utils/emojis.js");
-const Discord = require("discord.js");
+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'];
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!`)
+ .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}`)
- .setDescription(`Você não possui a permissão de \`Gerenciar Servidor\``)
+ .setDescription('Você não possui a permissão de `Gerenciar Servidor`')
.setTimestamp();
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: ` +
- "``" +
+ 'Insira um dos seguintes comandos para que seja efetuado o gerenciamento: ' +
+ '``' +
validOptions +
- "``"
+ '``'
)
.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.`
+ 'Este comando ainda não pode ser ativado. Desculpe pelo incoveniente.'
)
.setTimestamp();
- if (!message.member.hasPermission("MANAGE_GUILD"))
+ if (!message.member.hasPermission('MANAGE_GUILD'))
return message.channel.send(nopermission);
if (!args || !args[0]) return message.channel.send(error1);
@@ -62,11 +65,11 @@ exports.run = async (aruna, message, args) => {
const command = args[0].toLowerCase();
- if (command === "rank") {
+ if (command === 'rank') {
guild.verify = guild.rankEnable;
- } else if (command === "ticket") {
+ } else if (command === 'ticket') {
guild.verify = guild.ticketEnable;
- } else if (command === "autoRole" || command === "autorole") {
+ } else if (command === 'autoRole' || command === 'autorole') {
guild.verify = guild.autoRole;
}
@@ -85,14 +88,14 @@ exports.run = async (aruna, message, args) => {
)
.setTimestamp();
- const dbcommand = await database.Commands.findOne({ name: `${command}` });
+ const dbcommand = await database.Comandos.findOne({ name: `${command}` });
- if (!dbcommand || dbcommand.public !== true)
+ 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 (!args[1] || args[1] !== 'ativar' && args[1] !== 'desativar' && args[1] !== 'enable' && args[1] !== 'disable') {
if (guild.verify === false) {
return message.channel.send(no);
} else {
@@ -100,53 +103,55 @@ 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])
.setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL)
- .setFooter(`Sucesso!`)
+ .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!`)
+ .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") {
+ if (todo == 'ativar' && guild.verify === false || todo == 'enable' && guild.verify === true) {
+ if (command === 'rank') {
guild.rankEnable = true;
guild.save();
- } else if (command === "ticket") {
+ } else if (command === 'ticket') {
+ const { activeticket } = require('../Utils');
+ activeticket.run(aruna, message);
guild.ticketEnable = true;
guild.save();
- } else if (command === "autoRole" || command === "autorole") {
+ } else if (command === 'autoRole' || command === 'autorole') {
guild.autoRole = true;
guild.save();
}
return message.channel.send(ativo);
- } else if(guild.verify === false) return message.channel.send(yes);
+ } else if (guild.verify === false) return message.channel.send(yes);
- if (todo == "desativar" && guild.verify === true || todo == "disable" && guild.verify === true) {
- if (command === "rank") {
+ if (todo == 'desativar' && guild.verify === true || todo == 'disable' && guild.verify === true) {
+ if (command === 'rank') {
guild.rankEnable = false;
guild.save();
- } else if (command === "ticket") {
+ } else if (command === 'ticket') {
guild.ticketEnable = false;
guild.save();
- } else if (command === "autoRole" || command === "autorole") {
+ } else if (command === 'autoRole' || command === 'autorole') {
guild.autoRole = false;
guild.save();
}
return message.channel.send(inativo);
- } else if(guild.verify === true) return message.channel.send(no);
+ } else if (guild.verify === true) return message.channel.send(no);
};
exports.config = {
- name: "config",
- aliases: ["configurar", "configurações"],
- category: `⚙️ Configurações`
+ name: 'config',
+ aliases: ['configurar', 'configurações'],
+ category: '⚙️ Configurações'
};
diff --git a/Commands/dice.js b/src/Commands/dice.js
similarity index 81%
rename from Commands/dice.js
rename to src/Commands/dice.js
index 4d5cf51..2cbc316 100644
--- a/Commands/dice.js
+++ b/src/Commands/dice.js
@@ -16,49 +16,49 @@
along with this program. If not, see .
*/
-const Discord = require("discord.js");
+const Discord = require('discord.js');
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(`Você deve inserir o tipo do dado que devo girar!`)
+ .setDescription('Você deve inserir o tipo do dado que devo girar!')
.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.`)
+ .setDescription('Só aceito até d100.')
.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!`)
+ .setDescription('Essa quantidade de dados é absurda!')
.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!`)
+ .setDescription('Acho que esse número nem existe!')
.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`)
+ .setDescription('Insira algo como 1d6 por favor')
.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!`)
+ .setDescription('Todos sabemos que o resultado do d0 é 0!')
.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!`)
+ .setDescription('0 não é uma quantidade de dados que se possa girar!')
.setTimestamp();
if (!args[0]) return message.channel.send(error5);
@@ -66,7 +66,7 @@ exports.run = async (aruna, message, args) => {
const split = message.content
.slice(5)
.trim()
- .split("d" || "D");
+ .split('d' || 'D');
if (!split) return message.channel.send(error5);
@@ -82,14 +82,14 @@ exports.run = async (aruna, message, args) => {
if (number > 50) return message.channel.send(error3);
- if(dice == 0) return message.channel.send(error6)
+ if (dice == 0) return message.channel.send(error6);
- if(number == 0) return message.channel.send(error7)
+ if (number == 0) return message.channel.send(error7);
- var diceStr = ""
+ var diceStr = '';
- if(number == 1) diceStr = "dado"
- else diceStr = "dados"
+ if (number == 1) diceStr = 'dado';
+ else diceStr = 'dados';
const error8 = new Discord.RichEmbed()
.setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL)
@@ -97,18 +97,19 @@ exports.run = async (aruna, message, args) => {
.setDescription(`Todos sabemos que o resultado de ${number} ${diceStr} de 1 lado é ${number}!`)
.setTimestamp();
- if(dice == 1) return message.channel.send(error8)
+ if (dice == 1) return message.channel.send(error8);
var result = [];
var loop = number;
+ var embed = '';
var idVar = setInterval(() => {
if (loop <= 0) {
if (number > 1) {
- var embed = new Discord.RichEmbed()
+ embed = new Discord.RichEmbed()
.setAuthor(
`Resultado dos ${number} dados de ${dice} lados girados por ${message.author.username}`,
message.author.avatarURL
@@ -117,7 +118,7 @@ exports.run = async (aruna, message, args) => {
.setFooter(`Dados de ${message.author.username}`)
.setTimestamp();
} else {
- var embed = new Discord.RichEmbed()
+ embed = new Discord.RichEmbed()
.setAuthor(
`Resultado do dado de ${dice} lados girado por ${message.author.username}`,
message.author.avatarURL
@@ -143,7 +144,7 @@ exports.run = async (aruna, message, args) => {
}, 0,1);
};
exports.config = {
- name: "dice",
- aliases: ["dado"],
- category: `🎉 Entretenimento`
+ name: 'dice',
+ aliases: ['dado'],
+ category: '🎉 Entretenimento'
};
diff --git a/src/Commands/eval.js b/src/Commands/eval.js
new file mode 100644
index 0000000..6a68055
--- /dev/null
+++ b/src/Commands/eval.js
@@ -0,0 +1,76 @@
+/*
+ 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');
+
+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);
+
+ 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!'
+ )}`;
+
+ if (str.length > 1800) {
+ str = str.substr(0, 1800);
+ str = str + '...';
+ }
+ 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' });
+ }
+ }).catch(e => {
+ console.log(e);
+ });
+};
+
+exports.config = {
+ name: 'eval',
+ aliases: [],
+ category: '🧰 Administração'
+};
diff --git a/Commands/flip.js b/src/Commands/flip.js
similarity index 70%
rename from Commands/flip.js
rename to src/Commands/flip.js
index 37c934c..ccda752 100644
--- a/Commands/flip.js
+++ b/src/Commands/flip.js
@@ -16,19 +16,19 @@
along with this program. If not, see .
*/
-exports.run = async (aruna, message, args) => {
- var add = Math.round(Math.random());
- if(add == 0){
- message.channel.send('Cara!')
- } else if (add == 1){
- message.channel.send('Coroa!')
- } else {
- message.reply('Erro!')
- }
-}
+exports.run = async (aruna, message) => {
+ var add = Math.round(Math.random());
+ if (add == 0){
+ message.channel.send('Cara!');
+ } else if (add == 1){
+ message.channel.send('Coroa!');
+ } else {
+ message.reply('Erro!');
+ }
+};
exports.config = {
- name: "flip",
- aliases: ["moeda", "girar"],
- category: `🎉 Entretenimento`
+ name: 'flip',
+ aliases: ['moeda', 'girar'],
+ category: '🎉 Entretenimento'
};
\ No newline at end of file
diff --git a/src/Commands/git.js b/src/Commands/git.js
new file mode 100644
index 0000000..8d025e6
--- /dev/null
+++ b/src/Commands/git.js
@@ -0,0 +1,38 @@
+/* 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 { 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!`);
+ message.channel.send(embed);
+};
+
+exports.config = {
+ name: 'github',
+ aliases: ['git', 'repo', 'repositório', 'repositorio'],
+ category: `${emoji.robot} Utilidades`
+};
\ No newline at end of file
diff --git a/Commands/help.js b/src/Commands/help.js
similarity index 64%
rename from Commands/help.js
rename to src/Commands/help.js
index 5e699e7..4db9583 100644
--- a/Commands/help.js
+++ b/src/Commands/help.js
@@ -1,3 +1,4 @@
+/* eslint-disable max-len */
/*
This File is part of ArunaBot
Copyright (C) LoboMetalurgico (and contributors) 2019-2020
@@ -16,9 +17,9 @@
along with this program. If not, see .
*/
-const Discord = require("discord.js");
-const { database } = require("../configs/");
-const emoji = require("../utils/emojis.js");
+const Discord = require('discord.js');
+const { database } = require('../../Configs');
+const { emoji } = require('../Utils');
exports.run = async (aruna, message) => {
const embed = new Discord.RichEmbed(message.author);
@@ -28,21 +29,26 @@ exports.run = async (aruna, message) => {
.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.`
+ 'Verifique se tenho permissão para lhe enviar mensagens no privado pois, é por lá que envio os comandos.'
)
.setTimestamp();
const sucesso = new Discord.RichEmbed()
.setColor([0, 255, 0])
.setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL)
- .setFooter(`Comandos Enviados`)
+ .setFooter('Comandos Enviados')
.setDescription(
- `Os comandos foram enviados em seu privado com sucesso!`
+ 'Os comandos foram enviados em seu privado com sucesso!'
)
.setTimestamp();
- let guildDB = await database.Guilds.findOne({ _id: message.guild.id });
+ const guildDB = await database.Guilds.findOne({ _id: message.guild.id });
+ const userDB = await database.Users.findOne({ _id: message.author.id });
- const categories = aruna.commands
+ var prefix = guildDB.prefix;
+
+ var categories = '';
+
+ categories = aruna.commands
.map(c => c.config.category)
.filter((v, i, a) => a.indexOf(v) === i);
categories
@@ -51,27 +57,32 @@ exports.run = async (aruna, message) => {
const commands = aruna.commands
.filter(c => c.config.category === category)
.sort((a, b) => a.config.name.localeCompare(b.config.name))
- .map(c => guildDB.prefix + c.config.name)
- .join(", ");
- embed.addField(`${category}`, "```" + commands + "```", false);
- embed.setColor("#004080");
+ .map(c => prefix + c.config.name)
+ .join(', ');
+ if (category == '🧰 Administração' && userDB.SUPER == false) {
+ null;
+ } else {
+ embed.addField(`${category}`, '```' + commands + '```', false);
+ }
+ embed.setColor('#004080');
embed.setAuthor(
`${aruna.user.username}`,
`${aruna.user.displayAvatarURL}`
);
- embed.setFooter("Desenvolvida por Lobo Metalurgico#7237");
+ 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 => {
+ console.log(err);
msg.edit(error1);
});
});
};
exports.config = {
- name: "help",
- aliases: ["ajuda", "comandos", "commands"],
+ name: 'help',
+ aliases: ['ajuda', 'comandos', 'commands'],
category: `${emoji.robot} Utilidades`
};
diff --git a/Commands/invite.js b/src/Commands/invite.js
similarity index 75%
rename from Commands/invite.js
rename to src/Commands/invite.js
index 9dce203..edf4e7c 100644
--- a/Commands/invite.js
+++ b/src/Commands/invite.js
@@ -1,3 +1,4 @@
+/* eslint-disable max-len */
/*
This File is part of ArunaBot
Copyright (C) LoboMetalurgico (and contributors) 2019-2020
@@ -16,22 +17,22 @@
along with this program. If not, see .
*/
-const emoji = require("../utils/emojis.js");
-const Discord = require("discord.js");
+const { emoji } = require('../Utils');
+const { links } = require('../../Configs');
+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 queira me adicionar :)
-\nPara isso, basta clicar [aqui](
-https://discordapp.com/oauth2/authorize?client_id=593303574725787657&scope=bot&permissions=2146954751), selecionar o servidor na lista, confirmar o reCaptcha e pronto, eu estarei em seu servidor!
+\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!`);
message.channel.send(embed);
};
exports.config = {
- name: "invite",
- aliases: ["convidar", "convite"],
+ name: 'invite',
+ aliases: ['convidar', 'convite'],
category: `${emoji.robot} Utilidades`
};
diff --git a/src/Commands/kick.js b/src/Commands/kick.js
new file mode 100644
index 0000000..4cd322a
--- /dev/null
+++ b/src/Commands/kick.js
@@ -0,0 +1,118 @@
+/* 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');
+// 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) => {
+
+ 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}`)
+ .setDescription('Você não possui a permissão de `Expulsar Membros`!')
+ .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`!')
+ .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!')
+ .setTimestamp();
+ 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}`)
+ .setDescription(`Infelizmente não sei informar qual o erro. Sinto muito ${message.author.username} :(`)
+ .setTimestamp();
+
+ if (!message.member.hasPermission('KICK_MEMBERS'))
+ return message.channel.send(error1);
+ 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])
+ );
+
+ if (guildBuser) {
+ if (message.guild.owner.id == kuser.id)
+ return message.channel.send(error4);
+ if (guildBuser.highestRole.position >= message.guild.members.get(message.author.id).highestRole.position && message.guild.owner.id !== message.author.id)
+ return message.channel.send(error5);
+ if (guildBuser.highestRole.position >= message.guild.members.get(aruna.user.id).highestRole.position)
+ return message.channel.send(error6);
+ }
+
+ var reason = '';
+ if (!args.join(' ').slice(19)) {
+ reason = `Punido por: ${message.author.username}`;
+ } else {
+ reason =
+ `Punido por: ${message.author.username} com o Motivo: ` +
+ args.join(' ').slice(19);
+ }
+
+ 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)
+ .setTimestamp();
+
+ message.channel.send(embed).then(async msg => {
+ await message.guild.ban(kuser, reason).catch(err => {
+ console.log(err);
+ msg.edit(error7);
+ });
+ });
+};
+
+exports.config = {
+ name: 'kickar',
+ aliases: ['kick', 'expulsar'],
+ category: '👮♂️ Moderação'
+};
\ No newline at end of file
diff --git a/src/Commands/maintenance.js b/src/Commands/maintenance.js
new file mode 100644
index 0000000..9900c36
--- /dev/null
+++ b/src/Commands/maintenance.js
@@ -0,0 +1,20 @@
+/* eslint-disable no-unused-vars */
+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 = {
+ name: 'manutenção',
+ aliases: [],
+ category: '🧰 Administração'
+};
\ No newline at end of file
diff --git a/Commands/ping.js b/src/Commands/ping.js
similarity index 71%
rename from Commands/ping.js
rename to src/Commands/ping.js
index ee2a288..becf0c9 100644
--- a/Commands/ping.js
+++ b/src/Commands/ping.js
@@ -1,3 +1,4 @@
+/* eslint-disable max-len */
/*
This File is part of ArunaBot
Copyright (C) LoboMetalurgico (and contributors) 2019-2020
@@ -16,27 +17,27 @@
along with this program. If not, see .
*/
-const Discord = require("discord.js");
-const emoji = require("../utils/emojis.js");
+const Discord = require('discord.js');
+const { emoji } = require('../Utils');
exports.run = async (aruna, message) => {
- let embed = new Discord.RichEmbed()
+ const embed = new Discord.RichEmbed()
.setAuthor(`${aruna.user.username}`, `${aruna.user.displayAvatarURL}`)
- .setColor("#f5ebeb")
- .setDescription(`Calculando...`);
+ .setColor('#f5ebeb')
+ .setDescription('Calculando...');
message.channel.send(embed).then(async msg => {
- let latencia = Math.round(message.createdTimestamp);
- let api = Math.round(aruna.ping);
- //let heartbeat = Date.now() - message.createdTimestamp;
- let embed2 = new Discord.RichEmbed().setColor("#33def5")
+ // 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`);
msg.edit(embed2);
});
};
exports.config = {
- name: "ping",
- aliases: ["pong"],
+ name: 'ping',
+ aliases: ['pong'],
category: `${emoji.robot} Utilidades`
};
diff --git a/Commands/prefix.js b/src/Commands/prefix.js
similarity index 79%
rename from Commands/prefix.js
rename to src/Commands/prefix.js
index 51a5936..7900699 100644
--- a/Commands/prefix.js
+++ b/src/Commands/prefix.js
@@ -16,8 +16,8 @@
along with this program. If not, see .
*/
-const Discord = require("discord.js");
-const { database, config } = require("../configs");
+const Discord = require('discord.js');
+const { database, config } = require('../../Configs');
exports.run = async (aruna, message, args) => {
const server = await database.Guilds.findOne({ _id: message.guild.id });
@@ -25,28 +25,28 @@ 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}`)
- .setDescription(`Você não possui a permissão de \`Gerenciar Servidor\``)
+ .setDescription('Você não possui a permissão de `Gerenciar Servidor`')
.setTimestamp();
const error = 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).`
+ 'Insira se você deseja definir um prefixo (set) ou se deseja voltar ao padrão (remove).'
)
.setTimestamp();
const error2 = 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!`)
+ .setDescription('Você deve inserir o prefixo desejado!')
.setTimestamp();
const error3 = 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!`)
+ .setDescription('O prefixo atual já é o prefixo padrão!')
.setTimestamp();
const remove = new Discord.RichEmbed()
.setColor([0, 255, 0])
.setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL)
- .setFooter(`Sucesso!`)
+ .setFooter('Sucesso!')
.setDescription(
`Prefixo redefinido para \`${config.prefix}\` com sucesso!`
)
@@ -54,19 +54,19 @@ exports.run = async (aruna, message, args) => {
const definido = new Discord.RichEmbed()
.setColor([0, 255, 0])
.setAuthor(`Yay, ${message.author.username}`, message.author.avatarURL)
- .setFooter(`Sucesso!`)
+ .setFooter('Sucesso!')
.setDescription(`Prefixo definido para \`${args[1]}\` com sucesso!`)
.setTimestamp();
- if (!message.member.hasPermission("MANAGE_GUILD"))
+ if (!message.member.hasPermission('MANAGE_GUILD'))
return message.channel.send(nopermission);
if (!args[0]) return message.channel.send(error);
- if (args[0] !== "set" && args[0] !== "remove")
+ if (args[0] !== 'set' && args[0] !== 'remove')
return message.channel.send(error);
- if (args[0] === "remove") {
+ if (args[0] === 'remove') {
if (server.prefix === config.prefix)
return message.channel.send(error3);
@@ -75,7 +75,7 @@ exports.run = async (aruna, message, args) => {
message.channel.send(remove);
}
- if (args[0] === "set") {
+ if (args[0] === 'set') {
if (!args[1]) return message.channel.send(error2);
server.prefix = args[1];
@@ -85,7 +85,7 @@ exports.run = async (aruna, message, args) => {
};
exports.config = {
- name: "prefix",
- aliases: ["prefixo", "pref"],
- category: `⚙️ Configurações`
+ name: 'prefix',
+ aliases: ['prefixo', 'pref'],
+ category: '⚙️ Configurações'
};
diff --git a/Commands/rank.js b/src/Commands/rank.js
similarity index 75%
rename from Commands/rank.js
rename to src/Commands/rank.js
index c98a4ff..86c4633 100644
--- a/Commands/rank.js
+++ b/src/Commands/rank.js
@@ -1,3 +1,4 @@
+/* eslint-disable max-len */
/*
This File is part of ArunaBot
Copyright (C) LoboMetalurgico (and contributors) 2019-2020
@@ -16,9 +17,9 @@
along with this program. If not, see .
*/
-const Discord = require("discord.js");
-const { database } = require("../configs");
-const utils = require("../utils/utils.js");
+const Discord = require('discord.js');
+const { database } = require('../../Configs');
+const { utils } = require('../Utils');
exports.run = async (aruna, message, args) => {
const guild = await database.Guilds.findOne({ _id: message.guild.id });
@@ -49,27 +50,29 @@ exports.run = async (aruna, message, args) => {
let level = rank.level;
if (level === null) level = 0;
- const embed2 = new Discord.RichEmbed()
+ /*
+ 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)
+ .setAuthor('RANK: ' + userid.user.username, userid.user.avatarURL)
+ .addField('Nível', level, true)
+ .addField('Xp Atual', xp, true)
.setTimestamp();
+ */
- let need = utils.need(level);
+ 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('RANK: ' + userid.user.username, userid.user.avatarURL)
+ .addField('Nível', level, true)
+ .addField('Xp Atual', xp, true)
+ .addField('XP Necessário', need, true)
.setTimestamp();
message.channel.send(embed);
};
exports.config = {
- name: "rank",
- aliases: ["perfil"],
- category: `🎉 Entretenimento`
+ name: 'rank',
+ aliases: ['perfil'],
+ category: '🎉 Entretenimento'
};
diff --git a/Commands/say.js b/src/Commands/say.js
similarity index 91%
rename from Commands/say.js
rename to src/Commands/say.js
index 5571aad..3e81dbd 100644
--- a/Commands/say.js
+++ b/src/Commands/say.js
@@ -18,13 +18,13 @@
exports.run = async (aruna, message, prefix, comando) => {
var content = message.content.slice(comando.length).trim();
- var content = content.slice(4).trim();
+ content = content.slice(4).trim();
await message.delete();
await message.channel.send(content);
};
exports.config = {
- name: "say",
+ name: 'say',
aliases: [],
- category: `🎉 Entretenimento`
+ category: '🎉 Entretenimento'
};
\ No newline at end of file
diff --git a/src/Commands/serverinfo.js b/src/Commands/serverinfo.js
new file mode 100644
index 0000000..56c2ccf
--- /dev/null
+++ b/src/Commands/serverinfo.js
@@ -0,0 +1,116 @@
+/* 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');
+// eslint-disable-next-line no-unused-vars
+const { emoji, date } = require('../Utils');
+const { database } = require('../../Configs');
+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) => {
+ const guildDB = await database.Guilds.findOne({ _id: message.guild.id });
+ var pType = '';
+
+ if (guildDB.isPartner == true && guildDB.isPremium == true){
+ pType = emoji.partnerPlus;
+ } else if (guildDB.isPartner == true) {
+ pType = emoji.partner;
+ } else if (guildDB.isPremium == true){
+ pType = emoji.premium;
+ } else {
+ pType = emoji.discord;
+ }
+
+ 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_br: Singapura';
+ if (
+ region === 'us-central' ||
+ region === 'us-east' ||
+ region === 'us-south' ||
+ region === 'us-west'
+ )
+ region = ':flag_us: Estados Unidos';
+
+ 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`
+ )
+ .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(
+ `: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
+ }`,
+ 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)`,
+ `${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
+ }\n${status['dnd']}: ${
+ message.guild.members.filter(m => m.presence.status === 'dnd').size
+ }\n${status['offline']}: ${
+ message.guild.members.filter(m => m.presence.status === 'offline').size
+ }`,
+ false
+ )
+ .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();
+
+ message.reply(embed);
+};
+
+exports.config = {
+ name: 'serverinfo',
+ aliases: ['si'],
+ category: `${emoji.robot} Utilidades`
+};
diff --git a/src/Commands/ship.js b/src/Commands/ship.js
new file mode 100644
index 0000000..26010e7
--- /dev/null
+++ b/src/Commands/ship.js
@@ -0,0 +1,104 @@
+/*
+ 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) => {
+ 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!')
+ .setTimestamp();
+
+ var porcentagem = 0;
+ var aleatorio = Math.round(Math.random() * 100);
+
+ porcentagem = aleatorio;
+
+ const user1 = message.mentions.users.first() || message.author;
+ const user2 = message.mentions.users.array()[1];
+
+ 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);
+
+ 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`);
+
+ 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'
+};
diff --git a/Commands/suporte.js b/src/Commands/suporte.js
similarity index 90%
rename from Commands/suporte.js
rename to src/Commands/suporte.js
index 037cb57..1db4be4 100644
--- a/Commands/suporte.js
+++ b/src/Commands/suporte.js
@@ -16,8 +16,8 @@
along with this program. If not, see .
*/
-const emoji = require("../utils/emojis.js");
-const Discord = require("discord.js");
+const Discord = require('discord.js');
+const { emoji } = require('../Utils');
exports.run = async (aruna, message) => {
const embed = new Discord.RichEmbed().setAuthor(
@@ -30,7 +30,7 @@ https://discord.gg/NqbBgEf) e venha conversar com meus desenvolvedores!`);
};
exports.config = {
- name: "suporte",
- aliases: ["support"],
+ name: 'suporte',
+ aliases: ['support'],
category: `${emoji.robot} Utilidades`
};
diff --git a/src/Commands/ticket.js b/src/Commands/ticket.js
new file mode 100644
index 0000000..e3b94d6
--- /dev/null
+++ b/src/Commands/ticket.js
@@ -0,0 +1,97 @@
+/* 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 { database } = require('../../Configs');
+const { emoji } = require('../Utils');
+
+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 ticket = await database.Tickets.findOne({
+ _id: `${message.author.id}-${message.guild.id}`
+ });
+
+ const prefix = guild.prefix;
+
+ const noperm = 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 error = new Discord.RichEmbed()
+ .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL)
+ .setFooter(`Algo deu errado, ${message.author.username}`)
+ .setDescription(
+ 'Insira `criar` para criar um ticket ou `fechar` para fechar o ticket.'
+ )
+ .setTimestamp();
+
+ const error2 = 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. Peça para algum ADM ativar com o comando \`${prefix}config\``
+ )
+ .setTimestamp();
+ const error4 = new Discord.RichEmbed()
+ .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL)
+ .setFooter(`Algo deu errado, ${message.author.username}`)
+ .setDescription(
+ `Você não possui tickets abertos. Para abrir, use o comando \`\`${guild.prefix}ticket criar\`\``
+ )
+ .setTimestamp();
+
+ if (user.SUPER !== true) return message.channel.send(noperm);
+
+ if (guild.ticketEnable !== true) return message.channel.send(error2);
+
+ if (!args[0]) return message.channel.send(error);
+
+ const mode = args[0].toLowerCase();
+
+ if (mode == 'criar' || mode == 'create' || mode == 'new') {
+ if (ticket) {
+ const error3 = new Discord.RichEmbed()
+ .setAuthor(`Oops, ${message.author.username}`, message.author.avatarURL)
+ .setFooter(`Algo deu errado, ${message.author.username}`)
+ .setDescription(
+ `Você já possui um ticket aberto! Para visualiza-lo, acesse o canal <#${ticket.channel}>.`
+ )
+ .setTimestamp();
+ return message.channel.send(error3);
+ }
+
+ // eslint-disable-next-line no-unused-vars
+ const m = await message.channel.send(
+ 'Criando Ticket. Por favor, aguarde um momento...'
+ );
+
+
+ } else if (mode == 'fechar' || mode == 'close') {
+ if (!ticket) return message.channel.send(error4);
+ } else return message.channel.send(error);
+};
+
+exports.config = {
+ name: 'ticket',
+ aliases: [],
+ category: `${emoji.robot} Utilidades`
+};
diff --git a/src/Commands/unban.js b/src/Commands/unban.js
new file mode 100644
index 0000000..b7c94bd
--- /dev/null
+++ b/src/Commands/unban.js
@@ -0,0 +1,84 @@
+/*
+ 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');
+
+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}`)
+ .setDescription('Você não possui a permissão de `Banir Membros`!')
+ .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`!')
+ .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!')
+ .setTimestamp();
+ 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} :(`)
+ .setTimestamp();
+
+ if (!message.member.hasPermission('BAN_MEMBERS'))
+ return message.channel.send(error1);
+ if (!message.guild.members.get(aruna.user.id).hasPermission('BAN_MEMBERS'))
+ return message.channel.send(error2);
+
+ if (!unbuser) return message.channel.send(error3);
+
+ var reason = '';
+ if (!args.join(' ').slice(19)) {
+ reason = `Desbanido por: ${message.author.username}`;
+ } else {
+ reason =
+ `Desbanido por: ${message.author.username} com o Motivo: ` +
+ args.join(' ').slice(19);
+ }
+
+ 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)
+ .setTimestamp();
+
+ message.channel.send(embed).then(async msg => {
+ await message.guild.unban(unbuser, reason).catch(err => {
+ console.log(err);
+ msg.edit(error4);
+ });
+ });
+};
+
+exports.config = {
+ name: 'desbanir',
+ aliases: ['unban'],
+ category: '👮♂️ Moderação'
+};
\ No newline at end of file
diff --git a/src/Commands/userinfo.js b/src/Commands/userinfo.js
new file mode 100644
index 0000000..b9a09d1
--- /dev/null
+++ b/src/Commands/userinfo.js
@@ -0,0 +1,158 @@
+/*
+ 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 = `${emoji.nitro} Impulsionando Desde: ${dateFormat(message.guild.member(message.author).premiumSinceTimestamp, 'dd/mm/yyyy "às" HH:MM:ss')}\n`;
+ }
+ 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}\`
+ ${userBoost}
+ (:date:) **Entrou Em:** \`${joinedIn}\` (${userDaysGuild} ${stringtime2} atrás)`, 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`
+};
diff --git a/events/guildCreate.js b/src/Events/guildCreate.js
similarity index 91%
rename from events/guildCreate.js
rename to src/Events/guildCreate.js
index 509d53f..d5a04f1 100644
--- a/events/guildCreate.js
+++ b/src/Events/guildCreate.js
@@ -16,10 +16,10 @@
along with this program. If not, see .
*/
-var { database } = require("../configs");
+var { database } = require('../../Configs');
exports.run = async (aruna, guild) => {
var saveG = await new database.Guilds({ _id: guild.id });
await saveG.save();
- console.log('New Server Entry! :)')
+ console.log('New Server Entry! :)');
};
diff --git a/events/guildDelete.js b/src/Events/guildDelete.js
similarity index 84%
rename from events/guildDelete.js
rename to src/Events/guildDelete.js
index 6d6c3cd..10feed8 100644
--- a/events/guildDelete.js
+++ b/src/Events/guildDelete.js
@@ -16,9 +16,9 @@
along with this program. If not, see .
*/
-var { database } = require("../configs");
+var { database } = require('../../Configs');
exports.run = async (aruna, guild) => {
- var saveG = await database.Guilds.findOneAndDelete({ _id: guild.id });
- console.log('Server Removed :(')
+ await database.Guilds.findOneAndDelete({ _id: guild.id });
+ console.log('Server Removed :(');
};
\ No newline at end of file
diff --git a/events/guildMemberAdd.js b/src/Events/guildMemberAdd.js
similarity index 78%
rename from events/guildMemberAdd.js
rename to src/Events/guildMemberAdd.js
index 4db46e0..9cd587a 100644
--- a/events/guildMemberAdd.js
+++ b/src/Events/guildMemberAdd.js
@@ -16,12 +16,12 @@
along with this program. If not, see .
*/
-const Discord = require("discord.js");
-var { database } = require("../configs");
+const Discord = require('discord.js');
+var { database } = require('../../Configs');
const serverStatsPrincipal = {
- guildID: "660610178009530380",
- oldGuildID: "610206821763776522"
+ guildID: '660610178009530380',
+ oldGuildID: '610206821763776522'
};
exports.run = async (aruna, member) => {
@@ -34,19 +34,19 @@ exports.run = async (aruna, member) => {
}
if (member.guild.id == serverStatsPrincipal.guildID) {
- member.addRole(`660612149009448988`, "AutoRole");
+ member.addRole('660612149009448988', 'AutoRole');
const isOld = aruna.guilds
- .get("610206821763776522")
+ .get('610206821763776522')
.members.get(member.user.id);
if (isOld) {
- isOld.kick("Entrou no novo Servidor");
+ isOld.kick('Entrou no novo Servidor');
}
} 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 :)`)
+ .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)** :)"
+ 'Olá! No momento estamos trocando de servidor. Por favor, peço que entre no nosso novo servidor clicando **[aqui](https://discord.gg/NqbBgEf)** :)'
)
.setTimestamp();
member.send(changingMessage);
diff --git a/src/Events/message.js b/src/Events/message.js
new file mode 100644
index 0000000..f0f95be
--- /dev/null
+++ b/src/Events/message.js
@@ -0,0 +1,156 @@
+/* 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');
+var { database, config, links } = require('../../Configs');
+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);
+ }
+
+ database.Guilds.findOne({ _id: message.guild.id }, function(
+ servro,
+ servidor
+ ) {
+ database.Users.findOne({ _id: message.author.id }, async function(
+ erro,
+ usuario
+ ) {
+ if (!servidor) {
+ console.log('No Server!');
+ var saveG = await new database.Guilds({
+ _id: message.guild.id
+ });
+ await saveG.save();
+ servidor = await database.Guilds.findOne({ _id: message.guild.id });
+ }
+
+ if (!usuario) {
+ console.log('No User!');
+ var saveU = await new database.Users({ _id: message.author.id });
+ await saveU.save();
+ usuario = await database.Users.findOne({ _id: message.author.id });
+ }
+
+ var prefix = servidor.prefix || config.prefix;
+
+ 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
+ E por fim, obrigada por me chamar. Foi ótimo te explicar quem sou <3`
+ )
+ .setColor('#8400ff')
+ .setTimestamp();
+ return message.channel.send(embed);
+ }
+ });
+
+ 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);
+ }
+
+ if (message.content.startsWith(prefix)) {
+ if (message.content === prefix) return;
+
+ const args = message.content
+ .slice(prefix.length)
+ .trim()
+ .split(/ +/g);
+ const comando = 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, prefix, comando);
+ } else if (!commandFile) {
+ const alts =
+ aruna.commands
+ .filter(c =>
+ c.config.name.startsWith(cmd.slice(prefix.length).toLowerCase())
+ )
+ .map(a => '`' + a.config.name + '`')
+ .join(', ') || undefined;
+
+ if (alts !== undefined) {
+ message.reply(
+ 'Oops, não encontrei o comando ' +
+ '`' +
+ comando +
+ '`' +
+ '. Você quis dizer algo como ' +
+ alts +
+ '?'
+ );
+ }
+ }
+ }
+ }).catch(e => {
+ console.log(e);
+ });
+ }).catch(e => {
+ console.log(e);
+ });
+};
diff --git a/src/Events/ready.js b/src/Events/ready.js
new file mode 100644
index 0000000..9bc5ea7
--- /dev/null
+++ b/src/Events/ready.js
@@ -0,0 +1,124 @@
+/* eslint-disable no-unused-vars */
+/* 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 pkg = require('../../package.json');
+const chalk = require('chalk');
+const { apiKeys, database } = require('../../Configs');
+
+exports.run = async (aruna) => {
+ log('Conectado!');
+
+ 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 = '';
+
+ 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: 'Muppet Show',
+ type: 'watching'
+ },
+ {
+ name: 'M83 - Midnight City',
+ type: 'listening'
+ },
+ {
+ name: `Faz ${uptime}`,
+ type: 'playing'
+ },
+ {
+ name: 'Netflix',
+ type: 'watching'
+ },
+ {
+ name: `Versão ${pkg.version}`,
+ type: 'streaming',
+ url: 'https://www.twitch.tv/lobometalurgico'
+ },
+ {
+ name: `Seu Shard é o ${aruna.shard.id}!`,
+ type: 'watching'
+ }
+ ];
+ 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}!🚫`}});
+ } else {
+ const randomStatus = status[Math.floor(Math.random() * status.length)];
+ aruna.user.setPresence({ game: randomStatus });
+ }
+ }
+ setStatus();
+ setInterval(() => {
+ setStatus();
+ }, 15000);
+
+ function logPrefix() {
+ return `${chalk.gray('[')}${isSharded() ? `SHARD ${chalk.blue(aruna.shard.id)}` : 'ARUNA'}${chalk.gray(']')}`;
+ }
+
+ function log(...a) {
+ return console.log(logPrefix(), ...a);
+ }
+
+ function warn(...a) {
+ return console.warn(logPrefix(), chalk.yellow(...a));
+ }
+
+ function error(...a) {
+ return console.error(logPrefix(), chalk.red(...a));
+ }
+
+ function debug(...a) {
+ return console.debug(logPrefix(), chalk.magenta(...a));
+ }
+
+ function isSharded() {
+ return !!aruna.shard;
+ }
+
+ if (apiKeys) {
+ const client = aruna;
+ const dbots = require('dbots');
+ const poster = new dbots.Poster({
+ client,
+ apiKeys,
+ clientLibrary: 'discord.js'
+ });
+
+ poster.startInterval();
+ }
+};
\ No newline at end of file
diff --git a/utils/activeTicket.js b/src/Utils/activeTicket.js
similarity index 67%
rename from utils/activeTicket.js
rename to src/Utils/activeTicket.js
index 0d52d74..874c9e6 100644
--- a/utils/activeTicket.js
+++ b/src/Utils/activeTicket.js
@@ -1,3 +1,4 @@
+/* eslint-disable no-redeclare */
/*
This File is part of ArunaBot
Copyright (C) LoboMetalurgico (and contributors) 2019-2020
@@ -16,23 +17,23 @@
along with this program. If not, see .
*/
-const { database } = require("../configs");
+const { database } = require('../../Configs');
-exports.run = async (aruna, message, args) => {
+exports.run = async (aruna, message) => {
const guild = await database.Guilds.findsOne({ _id: message.guild.id });
if (guild.ticketSupportID == null) {
try {
var supportRole = await message.guild
.createRole({
- name: "Suporte",
- permissions: ["VIEW_CHANNEL", "SEND_MESSAGES", "CONNECT", "SPEAK"]
+ name: 'Suporte',
+ permissions: ['VIEW_CHANNEL', 'SEND_MESSAGES', 'CONNECT', 'SPEAK']
})
.then(async roleId => {
await message.channel.send(
- "Foi criado o cargo <@&" +
+ 'Foi criado o cargo <@&' +
roleId.id +
- "> como cargo de suporte. Seu nome, cor e permissão podem ser alterados livremente."
+ '> como cargo de suporte. Seu nome, cor e permissão podem ser alterados livremente.'
);
guild.ticketSupportID = roleId.id;
});
@@ -45,14 +46,14 @@ exports.run = async (aruna, message, args) => {
try {
var supportRole = await message.guild
.createRole({
- name: "Suporte",
- permissions: ["VIEW_CHANNEL", "SEND_MESSAGES", "CONNECT", "SPEAK"]
+ name: 'Suporte',
+ permissions: ['VIEW_CHANNEL', 'SEND_MESSAGES', 'CONNECT', 'SPEAK']
})
.then(async roleId => {
await message.channel.send(
- "Foi criado o cargo <@&" +
+ 'Foi criado o cargo <@&' +
roleId.id +
- "> como cargo de suporte. Seu nome, cor e permissão podem ser alterados livremente."
+ '> como cargo de suporte. Seu nome, cor e permissão podem ser alterados livremente.'
);
guild.ticketSupportID = roleId.id;
});
@@ -61,15 +62,15 @@ exports.run = async (aruna, message, args) => {
}
}
}
- let ticketCategory = message.guild.channels.find(`name`, "Tickets");
+ let ticketCategory = message.guild.channels.find('name', 'Tickets');
if (!ticketCategory) {
try {
- ticketCategory = await message.guild.createChannel(`Tickets`, "category");
+ ticketCategory = await message.guild.createChannel('Tickets', 'category');
message.channel.send(
- "Foi criado a categoria " +
+ 'Foi criado a categoria ' +
ticketCategory.name +
- " como categoria que conterá os tickets. Seu nome não pode ser alterado."
+ ' como categoria que conterá os tickets. Seu nome não pode ser alterado.'
);
} catch (e) {
console.log(e.stack);
@@ -79,15 +80,15 @@ exports.run = async (aruna, message, args) => {
if (guild.ticketLogID == null) {
try {
var ticketLog = await message.guild
- .createChannel(`ticket-log`, "text", [
+ .createChannel('ticket-log', 'text', [
{
id: message.guild.defaultRole.id,
- deny: ["VIEW_CHANNEL"]
+ deny: ['VIEW_CHANNEL']
},
{
id: message.guild.roles.get(supportRole),
- allow: ["VIEW_CHANNEL"],
- deny: ["SEND_MESSAGES"]
+ allow: ['VIEW_CHANNEL'],
+ deny: ['SEND_MESSAGES']
}
])
.then(async ticketId => {
@@ -96,9 +97,9 @@ exports.run = async (aruna, message, args) => {
await ticketId.setParent(ticketCategory);
});
message.channel.send(
- "Foi criado o canal " +
+ 'Foi criado o canal ' +
ticketLog +
- " como canal de log dos tickets. Seu nome pode ser alterado livremente."
+ ' como canal de log dos tickets. Seu nome pode ser alterado livremente.'
);
} catch (e) {
console.log(e.stack);
@@ -108,15 +109,15 @@ exports.run = async (aruna, message, args) => {
if (!aruna.channels.get(ticketLog)) {
try {
var ticketLog = await message.guild
- .createChannel(`ticket-log`, "text", [
+ .createChannel('ticket-log', 'text', [
{
id: message.guild.defaultRole.id,
- deny: ["VIEW_CHANNEL"]
+ deny: ['VIEW_CHANNEL']
},
{
id: message.guild.roles.get(supportRole),
- allow: ["VIEW_CHANNEL"],
- deny: ["SEND_MESSAGES"]
+ allow: ['VIEW_CHANNEL'],
+ deny: ['SEND_MESSAGES']
}
])
.then(ticketId => {
@@ -125,9 +126,9 @@ exports.run = async (aruna, message, args) => {
ticketId.setParent(ticketCategory);
});
message.channel.send(
- "Foi criado o canal " +
+ 'Foi criado o canal ' +
ticketLog +
- " como canal de log dos tickets. Seu nome pode ser alterado livremente."
+ ' como canal de log dos tickets. Seu nome pode ser alterado livremente.'
);
} catch (e) {
console.log(e.stack);
@@ -142,14 +143,14 @@ exports.run = async (aruna, message, args) => {
try {
var supportRole = await message.guild
.createRole({
- name: "Suporte",
- permissions: ["VIEW_CHANNEL", "SEND_MESSAGES", "CONNECT", "SPEAK"]
+ name: 'Suporte',
+ permissions: ['VIEW_CHANNEL', 'SEND_MESSAGES', 'CONNECT', 'SPEAK']
})
.then(async roleId => {
await message.channel.send(
- "Foi criado o cargo <@&" +
+ 'Foi criado o cargo <@&' +
roleId.id +
- "> como cargo de suporte. Seu nome, cor e permissão podem ser alterados livremente."
+ '> como cargo de suporte. Seu nome, cor e permissão podem ser alterados livremente.'
);
guild2.ticketSupportID = roleId.id;
});
@@ -162,14 +163,14 @@ exports.run = async (aruna, message, args) => {
try {
var supportRole = await message.guild
.createRole({
- name: "Suporte",
- permissions: ["VIEW_CHANNEL", "SEND_MESSAGES", "CONNECT", "SPEAK"]
+ name: 'Suporte',
+ permissions: ['VIEW_CHANNEL', 'SEND_MESSAGES', 'CONNECT', 'SPEAK']
})
.then(async roleId => {
await message.channel.send(
- "Foi criado o cargo <@&" +
+ 'Foi criado o cargo <@&' +
roleId.id +
- "> como cargo de suporte. Seu nome, cor e permissão podem ser alterados livremente."
+ '> como cargo de suporte. Seu nome, cor e permissão podem ser alterados livremente.'
);
guild2.ticketSupportID = roleId.id;
});
@@ -182,15 +183,15 @@ exports.run = async (aruna, message, args) => {
if (guild.ticketLogID == null) {
try {
var ticketLog = await message.guild
- .createChannel(`ticket-log`, "text", [
+ .createChannel('ticket-log', 'text', [
{
id: message.guild.defaultRole.id,
- deny: ["VIEW_CHANNEL"]
+ deny: ['VIEW_CHANNEL']
},
{
id: message.guild.roles.get(supportRole),
- allow: ["VIEW_CHANNEL"],
- deny: ["SEND_MESSAGES"]
+ allow: ['VIEW_CHANNEL'],
+ deny: ['SEND_MESSAGES']
}
])
.then(async ticketId => {
@@ -199,9 +200,9 @@ exports.run = async (aruna, message, args) => {
await ticketId.setParent(ticketCategory);
});
message.channel.send(
- "Foi criado o canal " +
+ 'Foi criado o canal ' +
ticketLog +
- " como canal de log dos tickets. Seu nome pode ser alterado livremente."
+ ' como canal de log dos tickets. Seu nome pode ser alterado livremente.'
);
} catch (e) {
console.log(e.stack);
@@ -211,15 +212,15 @@ exports.run = async (aruna, message, args) => {
if (!aruna.channels.get(ticketLog)) {
try {
var ticketLog = await message.guild
- .createChannel(`ticket-log`, "text", [
+ .createChannel('ticket-log', 'text', [
{
id: message.guild.defaultRole.id,
- deny: ["VIEW_CHANNEL"]
+ deny: ['VIEW_CHANNEL']
},
{
id: message.guild.roles.get(supportRole),
- allow: ["VIEW_CHANNEL"],
- deny: ["SEND_MESSAGES"]
+ allow: ['VIEW_CHANNEL'],
+ deny: ['SEND_MESSAGES']
}
])
.then(ticketId => {
@@ -228,9 +229,9 @@ exports.run = async (aruna, message, args) => {
ticketId.setParent(ticketCategory);
});
message.channel.send(
- "Foi criado o canal " +
+ 'Foi criado o canal ' +
ticketLog +
- " como canal de log dos tickets. Seu nome pode ser alterado livremente."
+ ' como canal de log dos tickets. Seu nome pode ser alterado livremente.'
);
} catch (e) {
console.log(e.stack);
diff --git a/utils/cooldown.js b/src/Utils/cooldown.js
similarity index 85%
rename from utils/cooldown.js
rename to src/Utils/cooldown.js
index 6ee4aa6..bbb4df0 100644
--- a/utils/cooldown.js
+++ b/src/Utils/cooldown.js
@@ -16,22 +16,22 @@
along with this program. If not, see .
*/
-let array = [];
+const array = [];
function add(id) {
- array.push(id);
+ array.push(id);
}
function remove(id) {
- array.splice(array.indexOf(id), 1)
+ array.splice(array.indexOf(id), 1);
}
function is(id) {
- return array.includes(id);
+ return array.includes(id);
}
module.exports = {
- add: add,
- remove: remove,
- is: is
-}
\ No newline at end of file
+ add: add,
+ remove: remove,
+ is: is
+};
\ No newline at end of file
diff --git a/src/Utils/date.js b/src/Utils/date.js
new file mode 100644
index 0000000..ce05b16
--- /dev/null
+++ b/src/Utils/date.js
@@ -0,0 +1,15 @@
+/* eslint-disable max-len */
+var dateFormat = require('dateformat');
+dateFormat.i18n = {
+ dayNames: [
+ 'Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab',
+ 'Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'
+ ],
+ monthNames: [
+ 'Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez',
+ 'Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'
+ ],
+ timeNames: [
+ 'a', 'p', 'am', 'pm', 'A', 'P', 'AM', 'PM'
+ ]
+};
\ No newline at end of file
diff --git a/src/Utils/emojis.js b/src/Utils/emojis.js
new file mode 100644
index 0000000..4ddc5ee
--- /dev/null
+++ b/src/Utils/emojis.js
@@ -0,0 +1,42 @@
+/*
+ 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 .
+*/
+
+module.exports = {
+ robot: '<:robotpngrepocom:637026750336860173>',
+ aruna: '<:images4:625367765146140674>',
+ crown: '<:crownpngrepocom:637026749456187393>',
+ online: '<:online:637026750408294460>',
+ offline: '<:offline:637026750295048223>',
+ dnd: '<:dnd:637026749401530369>',
+ idle: '<:idle:637026749540204586>',
+ streamming: '<:stream:637026750538317873>',
+ discord: '<:discord:728820560317906964>',
+ menu: '<:menu:638183751368704030>',
+ pass: '<:pass:638073603644063774>',
+ boss: '<:bosspngrepocom:637026749225631746>',
+ customer: '<:customerservicepngrepocom:637026749741531146>',
+ picture: '<:pictureimagepngrepocom:637026750429265946>',
+ passport: '<:passport:638067652337729597>',
+ error: '<:errorsvgrepocom:637027333986975770>',
+ upload: '<:uploaduisvgrepocom:637027335173832727>',
+ dev: '<:developmentsvgrepocom:637027334553337896>',
+ nitro: '<:nitro:728819044211359746>',
+ partner: '<:partner:728849144734810163>',
+ partnerPlus: '<:partnerPlus:728845414274564146>',
+ premium: '<:vip:728816348892889118>'
+};
diff --git a/src/Utils/index.js b/src/Utils/index.js
new file mode 100644
index 0000000..3805416
--- /dev/null
+++ b/src/Utils/index.js
@@ -0,0 +1,27 @@
+/*
+ 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 .
+*/
+
+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')
+};
\ No newline at end of file
diff --git a/utils/rankSystem.js b/src/Utils/rankSystem.js
similarity index 88%
rename from utils/rankSystem.js
rename to src/Utils/rankSystem.js
index e4b9771..87708d9 100644
--- a/utils/rankSystem.js
+++ b/src/Utils/rankSystem.js
@@ -17,7 +17,7 @@
*/
exports.run = async (aruna, message, database, cooldown, utils, Discord) => {
- let user = message.author;
+ const user = message.author;
const rank = await database.Rank.findOne({
user: user.id,
@@ -58,19 +58,19 @@ exports.run = async (aruna, message, database, cooldown, utils, Discord) => {
level = rank2.level;
- let embed = new Discord.RichEmbed()
- .setAuthor("Novo Nível!")
+ const embed = new Discord.RichEmbed()
+ .setAuthor('Novo Nível!')
.setDescription(
`Parabéns <@${message.author.id}>` +
- ", agora você está no **Nível " +
+ ', agora você está no **Nível ' +
rank2.level +
- "**!"
+ '**!'
)
.setColor([15, 15, 250])
.setTimestamp();
message.channel.send(embed);
- const args = "";
- let exiberank = require(`../cmds/rank.js`);
+ const args = '';
+ const exiberank = require('../cmds/rank.js');
exiberank.run(aruna, message, args);
}
}
diff --git a/utils/utils.js b/src/Utils/utils.js
similarity index 71%
rename from utils/utils.js
rename to src/Utils/utils.js
index 3a41fb2..0d8d1fe 100644
--- a/utils/utils.js
+++ b/src/Utils/utils.js
@@ -1,3 +1,4 @@
+/* eslint-disable max-len */
/*
This File is part of ArunaBot
Copyright (C) LoboMetalurgico (and contributors) 2019-2020
@@ -17,11 +18,11 @@
*/
function need(level) {
- var xp = [50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 850, 900, 950,
- 1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350, 1400, 1450, 1500, 1550, 1600, 1650, 1700, 1750, 1800, 1850, 1900, 1950, 2000, 2050, 9999999999999999999]
- return xp[level]
-};
+ var xp = [50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 850, 900, 950,
+ 1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350, 1400, 1450, 1500, 1550, 1600, 1650, 1700, 1750, 1800, 1850, 1900, 1950, 2000, 2050, 9999999999999999999];
+ return xp[level];
+}
module.exports = {
- need:need
-}
\ No newline at end of file
+ need:need
+};
\ No newline at end of file
diff --git a/main.js b/src/main.js
similarity index 61%
rename from main.js
rename to src/main.js
index e6fcc21..287a591 100644
--- a/main.js
+++ b/src/main.js
@@ -1,3 +1,4 @@
+/* eslint-disable max-len */
/*
This File is part of ArunaBot
Copyright (C) LoboMetalurgico (and contributors) 2019-2020
@@ -16,57 +17,58 @@
along with this program. If not, see .
*/
-require("events").EventEmitter.defaultMaxListeners = 999;
+require('events').EventEmitter.defaultMaxListeners = 999;
-var oficialMode = 0;
-
-if (process.env.OFICIAL_MODE === true) oficialMode = "";
-else oficialMode = "(BETA)";
+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")
-const pkg = require("./package.json");
-const chalk = require("chalk");
+const Discord = require('discord.js');
+const fs = require('fs');
+const { config } = require('../Configs');
+const chalk = require('chalk');
const aruna = new Discord.Client();
aruna.commands = new Discord.Collection();
aruna.aliases = new Discord.Collection();
-fs.readdir("./events/", (erro, files) => {
+fs.readdir('./src/Events/', (erro, files) => {
if (erro) return error(`[ERROR] => ${erro}`);
files.forEach(file => {
- let eventFunction = require(`./events/${file}`);
+ const eventFunction = require(`./Events/${file}`);
log(`[EVENT] => ${file}`);
- let eventName = file.split(".")[0];
+ const eventName = file.split('.')[0];
aruna.on(eventName, (...args) => eventFunction.run(aruna, ...args));
});
});
-fs.readdir("./Commands/", (err, files) => {
+fs.readdir('./src/Commands/', (err, files) => {
if (err) return error(`[ERROR] => ${err}`);
- let jsfile = files.filter(f => f.split(".").pop() === "js");
+ const jsfile = files.filter(f => f.split('.').pop() === 'js');
if (jsfile.length <= 0) {
- return warn("[COMMANDS] Not Found!");
+ return warn('[COMMANDS] Not Found!');
}
- jsfile.forEach((f, i) => {
- let pull = require(`./Commands/${f}`);
+ jsfile.forEach(f => {
+ const pull = require(`./Commands/${f}`);
aruna.commands.set(pull.config.name, pull);
log(`[COMMAND] => ${f}`);
pull.config.aliases.forEach(alias => {
aruna.aliases.set(alias, pull.config.name);
});
- aruna.on("ready", () => {
- aruna.channels
- .get(`660612304282583043`)
- .setName(`🧩Comandos: ${jsfile.length}`);
- });
});
});
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'}${chalk.gray(']')}`;
}
function log(...a) {
@@ -81,6 +83,7 @@ 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));
}
@@ -89,4 +92,4 @@ function isSharded() {
return !!aruna.shard;
}
-aruna.login(config.token);
+aruna.login(config.token);
\ No newline at end of file
diff --git a/sharding.js b/src/sharding.js
similarity index 67%
rename from sharding.js
rename to src/sharding.js
index ec751df..3f70c28 100644
--- a/sharding.js
+++ b/src/sharding.js
@@ -1,3 +1,4 @@
+/* eslint-disable max-len */
/*
This File is part of ArunaBot
Copyright (C) LoboMetalurgico (and contributors) 2019-2020
@@ -15,23 +16,22 @@
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 Discord = require('discord.js');
+const chalk = require('chalk');
+const { config } = require('../Configs');
+const pkg = require('../package.json');
const manager = new Discord.ShardingManager(`./${pkg.main}`, {
token: config.token,
totalShards: config.sharding.totalShards
});
-const logPrefix = `${chalk.gray("[")}${chalk.yellow("SHARD MASTER")}${chalk.gray("]")}`;
+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}) 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));
console.log(`${logPrefix} Começando a gerar shards...`);
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('Finalizando a geração dos Shards!')}`);
});
\ No newline at end of file
diff --git a/utils/emojis.js b/utils/emojis.js
deleted file mode 100644
index 794bbd0..0000000
--- a/utils/emojis.js
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- 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 .
-*/
-
-module.exports = {
- robot: "<:robotpngrepocom:637026750336860173>",
- aruna: "<:images4:625367765146140674>",
- crown: '<:crownpngrepocom:637026749456187393>',
- online: "<:online:637026750408294460>",
- offline: "<:offline:637026750295048223>",
- dnd: "<:dnd:637026749401530369>",
- idle: "<:idle:637026749540204586>",
- streamming: "<:stream:637026750538317873>",
- discord: "<:discordpngrepocom:637027162892926986>",
- menu: "<:menu:638183751368704030>",
- pass: "<:pass:638073603644063774>",
- boss: "<:bosspngrepocom:637026749225631746>",
- customer: "<:customerservicepngrepocom:637026749741531146>",
- picture: "<:pictureimagepngrepocom:637026750429265946>",
- passport: "<:passport:638067652337729597>",
- error: "<:errorsvgrepocom:637027333986975770>",
- upload: "<:uploaduisvgrepocom:637027335173832727>",
- dev: "<:developmentsvgrepocom:637027334553337896>"
-};