diff --git a/.env.example b/.env.example
index 1d45125..0d48060 100644
--- a/.env.example
+++ b/.env.example
@@ -1,20 +1,11 @@
TOKEN =
MONGO = mongodb://127.0.0.1:27017/test
-CLIENT_SECRET =
-CLIENT_ID =
-SPOTIFY_ID =
-SPOTIFY_SECRET =
+CLIENT_SECRET =
+CLIENT_ID =
+SPOTIFY_ID =
+SPOTIFY_SECRET =
PORT = 3000
-host = lava.link
-port = 80
-password = youshallnotpass
-DMLogID =
-DMLogToken =
-CMDLogID =
-CMDLogToken =
-ReadyLogID =
-ReadyLogToken =
-ErrorLogID =
-ErrorLogToken =
-ServerLogID =
-ServerLogToken =
\ No newline at end of file
+host = lavalink.darrennathanael.com
+port = 2095
+password = whatwasthelastingyousaid
+api = http://localhost:3000
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 0000000..7accab5
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: [night0721, ThunderE75] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: cathteam
+tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/.gitignore b/.gitignore
index a651d06..b6d79a5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,7 @@
-node_modules/
-/.env
\ No newline at end of file
+node_modules
+package-lock.json
+.env
+/events/log.js
+/.prettierignore
+/util/functions/economy(backup).js
+.vscode
\ No newline at end of file
diff --git a/.replit b/.replit
index 0502834..d86c068 100644
--- a/.replit
+++ b/.replit
@@ -1,2 +1,2 @@
"language"="nodejs"
-"run"="node ."
\ No newline at end of file
+"run"="node_modules/.bin/node index.js"
\ No newline at end of file
diff --git a/README.md b/README.md
index cdc76e7..242d46c 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,7 @@
-# CATH.EXE TEMPLATE
+# CATH.EXE [![botStatus](https://discord-md-badge.vercel.app/api/shield/bot/800966959268364288?style=flat-square&flat-Square&theme=clean-inverted&compact=true)](https://discord.com/oauth2/authorize?client_id=800966959268364288&permissions=4231314550&scope=bot%20applications.commands)
-
-
-*This is a Bot Template based on Cath.exe, This templated **does not** conatain any data from Project Lighthouse. For Call of duty mobile stats invite the main instance using the **INVITE ME** badge.*
+
**Cath.exe** is a Multipurpose Discord Bot with many features that include but are not limited to Moderation, Music and Economy. The Call of Duty Stats are courtesy of [**Project Lighthouse**](https://discord.gg/ARNFCu9NxK) by [**Path.exe**](https://www.youtube.com/channel/UC0hvUWYhyx_DOEBzLWEJxsw).
If you like this bot, feel free to **Star** and **fork** this repository.
@@ -11,7 +9,9 @@ If you like this bot, feel free to
+[![node](https://img.shields.io/badge/Node.js-43853D?style=for-the-badge&logo=node.js&logoColor=white)]()
### Step by Step Walkthrough
@@ -74,7 +73,7 @@ git clone https://github.com/night0721/cath.exe
npm i
```
-7. Now, to start the bot use this command.
+7. Now, to start the bot use this command in the terminal.
```cmd
node .
```
@@ -99,6 +98,8 @@ To enable the Economy Commands, you need to Setup a MongoDB Database. You can al
- Replace `myFirstDatabase` with the name of the Database that you named in **Step 5**.
13. That's it!
+
+
# Support, Feature Request & Bug Reports
## Support & Feature Request
diff --git a/bot.js b/bot.js
index 546b5a3..adf7f9a 100644
--- a/bot.js
+++ b/bot.js
@@ -1,85 +1,61 @@
-const {
- Client,
- Collection,
- WebhookClient,
- MessageEmbed,
-} = require("discord.js");
+const { Client, Collection, MessageEmbed, Intents } = require("discord.js");
const { GiveawaysManager } = require("discord-giveaways");
-const fs = require("fs");
-const config = require("./config.json");
require("dotenv").config();
const client = new Client({
allowedMentions: { parse: ["users", "roles"], repliedUser: true },
restTimeOffset: 0,
partials: ["MESSAGE", "CHANNEL", "REACTION", "GUILD_MEMBER"],
- intents: ["GUILDS", "GUILD_MESSAGES", "GUILD_MEMBERS", "GUILD_PRESENCES"],
+ intents: [
+ Intents.FLAGS.GUILDS,
+ Intents.FLAGS.GUILD_MEMBERS,
+ Intents.FLAGS.GUILD_BANS,
+ Intents.FLAGS.GUILD_EMOJIS_AND_STICKERS,
+ Intents.FLAGS.GUILD_INVITES,
+ Intents.FLAGS.GUILD_VOICE_STATES,
+ Intents.FLAGS.GUILD_MESSAGES,
+ Intents.FLAGS.GUILD_MESSAGE_REACTIONS,
+ Intents.FLAGS.DIRECT_MESSAGES,
+ Intents.FLAGS.GUILD_PRESENCES,
+ ],
});
module.exports = client;
-client.color = config.color;
-client.author = "Cath Team";
-client.invite = "https://discord.gg/SbQHChmGcp";
-client.web = config.URL;
-require("./util/dist/cmds").cmds();
-require("./inlinereply");
require("./util/functions/economy")(client);
require("./util/dist/manager")(client);
-client.CMDLog = new WebhookClient(
- process.env.CMDLogID,
- process.env.CMDLogToken
-);
-client.ReadyLog = new WebhookClient(
- process.env.ReadyLogID,
- process.env.ReadyLogToken
-);
-client.ServerLog = new WebhookClient(
- process.env.ServerLogID,
- process.env.ServerLogToken
-);
-client.ErrorLog = new WebhookClient(
- process.env.ErrorLogID,
- process.env.ErrorLogToken
-);
-process.on("unhandledRejection", async err => {
- if (client.user) {
- if (client.user.id === client.user.id) {
- const embed = new MessageEmbed()
- .setTitle("UnhandledRejection Error")
- .setDescription(`\`\`\`ini\n${err.stack}\`\`\``)
- .setTimestamp()
- .setColor(client.color)
- .setFooter(client.user.username);
- client.ErrorLog.send(embed);
- }
- }
- return console.log(err);
-});
-client.SuggestionLog = config.Suggestion;
-client.ReportLog = config.Report;
-client.DMLog = config.DM;
+require("./util/dist/handler")(client);
client.commands = new Collection();
+client.slashCommands = new Collection();
client.aliases = new Collection();
-client.events = new Collection();
-client.snipes = [];
client.esnipes = new Collection();
-client.hide = new Collection();
+client.snipes = new Array();
client.queue = new Map();
client.Timers = new Map();
-client.cat = config.ca;
+client.config = require("./config.json");
client.function = require("./util/functions/function");
client.data = require("./util/functions/mongoose");
client.err = require("./util/dist/err");
+client.cat = client.config.ca;
+client.SuggestionLog = client.config.Suggestion;
+client.ReportLog = client.config.Report;
+client.DMLog = client.config.DMLog;
+client.CMDLog = client.config.CMDLog;
+client.ReadyLog = client.config.ReadyLog;
+client.ServerLog = client.config.ServerLog;
+client.ErrorLog = client.config.ErrorLog;
+client.color = client.config.color;
+client.author = "Cath Team";
+client.invite = "https://discord.gg/SbQHChmGcp";
+client.web = client.config.URL;
client.data
.connect(process.env.MONGO)
.then(() => console.log("Connected to MongoDB!"))
.catch(e => console.log(e));
client.owners = [
- "452076196419600394",
- "749692825402212494",
- "766645910087139338",
- "755476040029306952",
- "534027706325532694",
- "381442059111759883",
- "556808365574193194",
+ "452076196419600394", //Night
+ "766645910087139338", //chekseaa
+ "755476040029306952", //Kałÿ
+ "534027706325532694", //Cat drinking a cat
+ "381442059111759883", //Thunder
+ "556808365574193194", //chunchunmaru
];
client.currency = "<:cp:840231933933387797>";
client.path = [
@@ -100,9 +76,18 @@ client.giveaways = new GiveawaysManager(client, {
reaction: "🎉",
},
});
-client.categories = fs.readdirSync("./commands/");
-client.paths = fs.readdirSync("./cat/");
-["command"].forEach(handler => {
- require(`./util/command-handler`)(client);
+process.on("unhandledRejection", async err => {
+ if (client.user) {
+ if (client.user.id === client.user.id) {
+ const embed = new MessageEmbed()
+ .setTitle("UnhandledRejection Error")
+ .setDescription(`\`\`\`ini\n${err.stack}\`\`\``)
+ .setTimestamp()
+ .setColor(client.color)
+ .setFooter(client.user.username);
+ client.channels.cache.get(client.ErrorLog).send({ embeds: [embed] });
+ }
+ }
+ return console.log(err);
});
client.login(process.env.TOKEN);
diff --git a/cat/fantastic.js b/cat/fantastic.js
new file mode 100644
index 0000000..8742380
--- /dev/null
+++ b/cat/fantastic.js
@@ -0,0 +1,13 @@
+const { Client, Message, MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "fantastic",
+ timeout: 60000,
+
+ run: async (client, message, args) => {
+ message.delete();
+ const player = args.join(" ") || message.author.username;
+ message.channel.send(
+ `${player} is a fantastic CoDM player. Just need to work on communication, map awareness, info scouting, bomb plants, positioning, teamfighting, gun skill , utility usage, rotations and getting kills.`
+ );
+ },
+};
diff --git a/cat/fight.js b/cat/fight.js
new file mode 100644
index 0000000..49eee9c
--- /dev/null
+++ b/cat/fight.js
@@ -0,0 +1,72 @@
+const { Client, Message, MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "fight",
+ description: "Goooooooooooooooolag!",
+ timeout: 15000,
+
+ run: async (client, message, args) => {
+ const gaes = [
+ "Gae",
+ "Super Gae",
+ "Ultra Gae",
+ "Snow Gae",
+ "Ultimate Gae",
+ "Terminal Gae",
+ "Akimbo Gae",
+ "Dead(extended timer)",
+ "Mega Gae",
+ "Cheez Gae",
+ "Gath Gae",
+ "Koosun Gae",
+ "KDR Gae",
+ "Gaezer Gae",
+ "Big Gae",
+ "Horni Gae",
+ "Zero Gae",
+ "Gae beyond repair",
+ "Dead×2(extended timer)",
+ "Not Gae",
+ "Animus Gae",
+ "Dust Gae",
+ "Orcus Gae",
+ "Gulag Cleaner",
+ "Kedar Gae",
+ "Smol Gae",
+ "Meta Gae",
+ "Mono Gae",
+ "Stippled Gae",
+ "BSA Gae",
+ "Oreo Gae",
+ "Random Gae",
+ "Tortol Gae",
+ "Amogus Gae",
+ "Gae×2",
+ "Dan Gae",
+ "Real Gae©®™",
+ "Mastered Ultra Instinct Gae",
+ "Bamboozled",
+ "More Gae",
+ "Morrre Gae",
+ "Most Gae",
+ "Undisputable Gae",
+ "Gae Prince of Horni",
+ "Gae with Y",
+ "Phatopenisis Gae",
+ "Gathophile",
+ "a Bot",
+ "locknload with 200 round RPD gae",
+ "ros gae",
+ "Cath Gae",
+ "Cat drinking a cat gae",
+ "Night Gae",
+ ];
+ const gae = gaes[Math.floor(Math.random() * gaes.length)];
+ const embed = new MessageEmbed()
+ .setTitle("**Gulag Fight**")
+ .setDescription(
+ `**${message.author} has taken a chance at redemption in The Gulag. \nYou fight only to find out that you're \`${gae}\`. If you somehow turned out to not be gae, DM an admin to get your timer halved ||only if your mute is less than 69m||**`
+ )
+ .setColor(5198940);
+ message.channel.send({ embeds: [embed] });
+ },
+};
diff --git a/cat/gae.js b/cat/gae.js
new file mode 100644
index 0000000..4adb457
--- /dev/null
+++ b/cat/gae.js
@@ -0,0 +1,37 @@
+const { Client, Message, MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "gae",
+ timeout: 15000,
+
+ run: async (client, message, args) => {
+ const MEE6 = [
+ "u = gae",
+ "pLeaSe gAE",
+ "REEEEEEEEEEEEEEEEEEEEEE*GAE*EEEEEEEEEEEEEEEEEEEEEEEEEEE",
+ "Enough with the gae jokes, U gae",
+ "Plain ol' gae",
+ "",
+ "By the way, Deity bot is my senpai.\nShe is the most beautiful bot I've ever seen <3",
+ "aight imma gae out",
+ "*gae with extra steps*",
+ "**wae r u gae**",
+ "u gae bro?",
+ "**100%** gae",
+ "I bet you do **tiktok**",
+ "**G.A.E.**",
+ "The next person to chat is gae",
+ "Whoever used C.gae, is **gae**",
+ "*Its ok to be gae*",
+ "*succ my* **cheez**",
+ "**gae gae gae gae gae gae**",
+ "**Be gae**",
+ "There's no cooldown so y'all get muted for being *gae*",
+ "Ok stop using this command, really. U gae?",
+ "What the hell, u gae?",
+ "**GAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE**",
+ ];
+ const MEE6Index = MEE6[Math.floor(Math.random() * MEE6.length)];
+ message.delete();
+ message.channel.send(`${MEE6Index}`);
+ },
+};
diff --git a/cat/gg.js b/cat/gg.js
new file mode 100644
index 0000000..f3df604
--- /dev/null
+++ b/cat/gg.js
@@ -0,0 +1,26 @@
+const { Client, Message, MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "gg",
+ timeout: 15000,
+
+ run: async (client, message, args) => {
+ const GG = [
+ "**GIT GUD**",
+ "Git gud kid",
+ "good game *question mark*",
+ "gg l0ser",
+ "delet cod gg",
+ "*ggwp*",
+ "I was lagging doe",
+ "```Stop using this command```",
+ " ez pz ",
+ "",
+ "**GOOD GAME WELL PLAYED**",
+ " get rektd ",
+ "",
+ ];
+ const GGIndex = GG[Math.floor(Math.random() * GG.length)];
+ message.delete();
+ message.channel.send(`${GGIndex}`);
+ },
+};
diff --git a/cat/how.js b/cat/how.js
new file mode 100644
index 0000000..5a342fa
--- /dev/null
+++ b/cat/how.js
@@ -0,0 +1,19 @@
+const { MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "howgae",
+ description: "Check how gae is the user",
+ usage: "(User)",
+ Path: true,
+
+ run: async (client, message, args) => {
+ const target = message.mentions.users.first() || message.author;
+ let simp = Math.floor(Math.random() * 100);
+ message.reply({
+ embeds: [
+ new MessageEmbed()
+ .setTitle(`${target.username}'s gae rate`)
+ .setDescription(`You are ${simp}% gae`),
+ ],
+ });
+ },
+};
diff --git a/cat/nab.js b/cat/nab.js
new file mode 100644
index 0000000..77b57f2
--- /dev/null
+++ b/cat/nab.js
@@ -0,0 +1,30 @@
+const { Client, Message, MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "nab",
+ timeout: 15000,
+
+ run: async (client, message, args) => {
+ const NAB = [
+ "stop being a nab, nab",
+ "Lmao you a nab",
+ "Biggest nab of all time",
+ "You're just a nab",
+ "Okay calm down nab",
+ "**Stop** spamming this command you **nab**",
+ "```I told you to stop spamming this command nab```",
+ "Get rekt nab XD Jajajajajaja",
+ "**N.A.B.**",
+ "Better luck next time nab",
+ "Ooooh look at me im better than you nab",
+ "Whoever used C.nab, is a nab",
+ "Stfu nab",
+ "**you cant aim**",
+ "*bonjour* nab",
+ "u = ",
+ "Go back to tiktok ",
+ ];
+ const NABIndex = NAB[Math.floor(Math.random() * NAB.length)];
+ message.delete();
+ message.channel.send(`${NABIndex}`);
+ },
+};
diff --git a/cat/pp.js b/cat/pp.js
new file mode 100644
index 0000000..ea11be5
--- /dev/null
+++ b/cat/pp.js
@@ -0,0 +1,22 @@
+const { Client, Message, MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "pp",
+ description: "Check how long is the user",
+ usage: "(User)",
+
+ run: async (client, message, args) => {
+ let user = message.mentions.users.first() || message.author;
+ let embed = new MessageEmbed()
+ .addField(
+ `${user.username}\'s peepee`,
+ `8${"=".repeat(Math.floor(Math.random() * 20))}D`
+ )
+ .setColor(client.color)
+ .setTitle("Peepee size machine")
+ .setTimestamp()
+ .setFooter(`Made by ${client.author}`);
+ message.reply({
+ embeds: [embed],
+ });
+ },
+};
diff --git a/command/Economy/bal.js b/command/Economy/bal.js
new file mode 100644
index 0000000..e3d4a89
--- /dev/null
+++ b/command/Economy/bal.js
@@ -0,0 +1,28 @@
+const { MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "balance",
+ description: "Show an user's balance",
+ usage: "(User)",
+ category: "Economy",
+ options: [
+ {
+ type: 6,
+ name: "user",
+ description: "The user you want to hack",
+ required: true,
+ },
+ ],
+ type: "CHAT_INPUT",
+ run: async (client, interaction, args) => {
+ const user = interaction.guild.members.cache.get(args[0]);
+ const bal = await client.bal(user.id);
+ let embed = new MessageEmbed()
+ .addField(`${client.currency} Balance`, `**${bal}**`)
+ .setColor(client.color)
+ .setURL(client.web)
+ .setTitle(`${user.displayName}'s Balance`)
+ .setTimestamp()
+ .setFooter(`Requested by ${client.author}`);
+ await interaction.followUp({ embeds: [embed] });
+ },
+};
diff --git a/command/Economy/daily.js b/command/Economy/daily.js
new file mode 100644
index 0000000..6ae03c7
--- /dev/null
+++ b/command/Economy/daily.js
@@ -0,0 +1,46 @@
+const { MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "daily",
+ description: "Earns daily money",
+ category: "Economy",
+ timeout: 1000 * 60 * 60 * 24,
+ run: async (client, interaction, args) => {
+ var money;
+ const user = await client.data.getUser(interaction.user.id);
+ if (user) {
+ if (user.Premium == true) {
+ money = 20000;
+ let pre_embed = new MessageEmbed()
+ .setAuthor(
+ interaction.member.user.tag,
+ interaction.user.displayAvatarURL({ dyanmic: true })
+ )
+ .setDescription(
+ `**Here is your daily ${money}${client.currency}!\nThanks for supporting Cath!**`
+ )
+ .setURL(client.web)
+ .setColor(client.color)
+ .setFooter(`Made by ${client.author}`)
+ .setTimestamp();
+ await client.add(interaction.user.id, money, interaction);
+ return await interaction.followUp({ embeds: [pre_embed] });
+ } else {
+ money = 10000;
+ let norm_embed = new MessageEmbed()
+ .setAuthor(
+ interaction.member.user.tag,
+ interaction.user.displayAvatarURL({ dyanmic: true })
+ )
+ .setDescription(
+ `Here is your daily ${money}${client.currency}!\nBe [premium](https://discord.gg/SbQHChmGcp) user, you can get more coins everyday!`
+ )
+ .setURL(client.web)
+ .setColor(client.color)
+ .setFooter(`Made by ${client.author}`)
+ .setTimestamp();
+ await client.add(interaction.user.id, money, interaction);
+ return await interaction.followUp({ embeds: [norm_embed] });
+ }
+ }
+ },
+};
diff --git a/command/Economy/rich.js b/command/Economy/rich.js
new file mode 100644
index 0000000..d9b7a0d
--- /dev/null
+++ b/command/Economy/rich.js
@@ -0,0 +1,45 @@
+const { Collection, MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "rich",
+ description: "Displaying top 10 richest users.",
+ category: "Economy",
+ run: async (client, interaction, args) => {
+ const collection = new Collection();
+ await Promise.all(
+ interaction.guild.members.cache.map(async member => {
+ const id = member.id;
+ const bal = await client.bal(id);
+ if (!bal) return;
+ return bal !== 0
+ ? collection.set(id, {
+ id,
+ bal,
+ })
+ : null;
+ })
+ );
+ if (!collection)
+ return await interaction.followUp({
+ content: `None of the members got ${client.currency}!`,
+ });
+ const ata = collection.sort((a, b) => b.bal - a.bal).first(10);
+ await interaction.followUp({
+ embeds: [
+ new MessageEmbed()
+ .setTitle(`Richest users in ${interaction.guild.name}`)
+ .setDescription(
+ ata
+ .map((v, i) => {
+ return `${i + 1}: ${
+ interaction.guild.members.cache.get(v.id).user.tag
+ } => **${v.bal}${client.currency}**`;
+ })
+ .join("\n")
+ )
+ .setFooter(`Made by ${client.author}`)
+ .setTimestamp()
+ .setColor(client.color),
+ ],
+ });
+ },
+};
diff --git a/command/Fun/8ball.js b/command/Fun/8ball.js
new file mode 100644
index 0000000..0e464a7
--- /dev/null
+++ b/command/Fun/8ball.js
@@ -0,0 +1,33 @@
+const { MessageEmbed } = require("discord.js");
+const axios = require("axios");
+module.exports = {
+ name: "8ball",
+ usage: "(Question)",
+ description: "8ball an answer",
+ category: "Fun",
+ type: "CHAT_INPUT",
+ options: [
+ {
+ type: 3,
+ name: "question",
+ description: "The question you want to ask",
+ required: true,
+ },
+ ],
+ run: async (client, interaction, args) => {
+ const data = await axios
+ .get(`${process.env.api}/api/v1/fun/8ball`)
+ .then(res => res.data.answer);
+ const embed = new MessageEmbed()
+ .setAuthor(
+ `🎱 ${interaction.member.user.tag} asks`,
+ interaction.user.displayAvatarURL({ dynamic: true })
+ )
+ .setDescription(`**🎱Question:** \n${args[0]} \n**🎱Answer:** \n ${data}`)
+ .setColor(client.color)
+ .setTimestamp()
+ .setURL(client.web)
+ .setFooter(`Made by ${client.author}`);
+ await interaction.followUp({ embeds: [embed] });
+ },
+};
diff --git a/command/Fun/ascii.js b/command/Fun/ascii.js
new file mode 100644
index 0000000..dc0f2c0
--- /dev/null
+++ b/command/Fun/ascii.js
@@ -0,0 +1,22 @@
+const figlet = require("figlet");
+module.exports = {
+ name: "ascii",
+ description: "Converts text into ASCII art",
+ category: "Fun",
+ type: "CHAT_INPUT",
+ options: [
+ {
+ type: 3,
+ name: "text",
+ description: "The text you want to convert",
+ required: true,
+ },
+ ],
+ run: async (client, interaction, args) => {
+ const msg = args[0];
+ figlet.text(msg, async (err, data) => {
+ if (err) console.log(err);
+ await interaction.followUp(`\`\`\`${data}\`\`\``);
+ });
+ },
+};
diff --git a/command/Fun/busted.js b/command/Fun/busted.js
new file mode 100644
index 0000000..48377a9
--- /dev/null
+++ b/command/Fun/busted.js
@@ -0,0 +1,25 @@
+const { MessageAttachment } = require("discord.js");
+module.exports = {
+ name: "busted",
+ description: "Bust someone",
+ category: "Fun",
+ options: [
+ {
+ type: 6,
+ name: "user",
+ description: "The user you want to use the effect",
+ required: true,
+ },
+ ],
+ type: "CHAT_INPUT",
+ run: async (client, interaction, args) => {
+ const user = interaction.guild.members.cache.get(args[0]);
+ const ima = new MessageAttachment(
+ `${process.env.api}/api/v1/image/busted?q=${user.user.displayAvatarURL({
+ format: "png",
+ size: 2048,
+ })}`
+ );
+ await interaction.followUp({ files: [ima] });
+ },
+};
diff --git a/command/Fun/cat.js b/command/Fun/cat.js
new file mode 100644
index 0000000..536846e
--- /dev/null
+++ b/command/Fun/cat.js
@@ -0,0 +1,35 @@
+const { MessageEmbed } = require("discord.js");
+const fetch = require("node-fetch");
+module.exports = {
+ name: "cat",
+ category: "Fun",
+ description: "Get a cat from reddit",
+ run: async (client, interaction, args) => {
+ let subreddits = ["cat", "cats"];
+ let subreddit = subreddits[Math.floor(Math.random() * subreddits.length)];
+ fetch(`https://www.reddit.com/r/${subreddit}/random/.json`).then(
+ async res => {
+ let content = await res.json();
+ let permalink = content[0].data.children[0].data.permalink;
+ let memeURL = `https://reddit.com${permalink}`;
+ let memeImage = content[0].data.children[0].data.url;
+ let memeTitle = content[0].data.children[0].data.title;
+ let memeUpvotes = content[0].data.children[0].data.ups;
+ let memeDownvotes = content[0].data.children[0].data.downs;
+ let memeNumComments = content[0].data.children[0].data.num_comments;
+ const memeEmbed = new MessageEmbed()
+ .setTitle(`A cat image | ${memeTitle}`)
+ .setAuthor(
+ interaction.member.user.tag,
+ interaction.user.displayAvatarURL({ dynamic: true })
+ )
+ .setURL(`${memeURL}`)
+ .setImage(memeImage)
+ .setTimestamp()
+ .setColor(client.color)
+ .setFooter(` 👍 ${memeUpvotes} 💬 ${memeNumComments}`);
+ await interaction.followUp({ embeds: [memeEmbed] });
+ }
+ );
+ },
+};
diff --git a/command/Fun/choose.js b/command/Fun/choose.js
new file mode 100644
index 0000000..8f83713
--- /dev/null
+++ b/command/Fun/choose.js
@@ -0,0 +1,73 @@
+module.exports = {
+ name: "choose",
+ description: "Choose random things",
+ usage: "(Choices)",
+ category: "Fun",
+ type: "CHAT_INPUT",
+ options: [
+ {
+ type: 3,
+ name: "first",
+ description: "The first choice",
+ required: true,
+ },
+ {
+ type: 3,
+ name: "second",
+ description: "The second choice",
+ required: true,
+ },
+ {
+ type: 3,
+ name: "third",
+ description: "The third choice",
+ required: false,
+ },
+ {
+ type: 3,
+ name: "forth",
+ description: "The forth choice",
+ required: false,
+ },
+ {
+ type: 3,
+ name: "fifth",
+ description: "The fifth choice",
+ required: false,
+ },
+ {
+ type: 3,
+ name: "sixth",
+ description: "The sixth choice",
+ required: false,
+ },
+ {
+ type: 3,
+ name: "seventh",
+ description: "The seventh choice",
+ required: false,
+ },
+ {
+ type: 3,
+ name: "eighth",
+ description: "The eighth choice",
+ required: false,
+ },
+ {
+ type: 3,
+ name: "ninth",
+ description: "The ninth choice",
+ required: false,
+ },
+ {
+ type: 3,
+ name: "tenth",
+ description: "The tenth choice",
+ required: false,
+ },
+ ],
+ run: async (client, interaction, args) => {
+ let choices = args[Math.floor(Math.random() * args.length)];
+ await interaction.followUp(`I will choose - \`${choices}\``);
+ },
+};
diff --git a/command/Fun/coinflip.js b/command/Fun/coinflip.js
new file mode 100644
index 0000000..f125f2c
--- /dev/null
+++ b/command/Fun/coinflip.js
@@ -0,0 +1,17 @@
+const { MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "coinflip",
+ description: "Flip a coin",
+ category: "Fun",
+ run: async (client, interaction, args) => {
+ let HT = ["Heads!", "Tails!"];
+ let pick = HT[Math.floor(Math.random() * HT.length)];
+ let embed = new MessageEmbed()
+ .setColor(client.color)
+ .setTitle("CoinFilp Game")
+ .setTimestamp()
+ .setFooter(`Made by ${client.author}`)
+ .setDescription(pick);
+ await interaction.followUp({ embeds: [embed] });
+ },
+};
diff --git a/command/Fun/dino.js b/command/Fun/dino.js
new file mode 100644
index 0000000..675b579
--- /dev/null
+++ b/command/Fun/dino.js
@@ -0,0 +1,98 @@
+module.exports = {
+ name: "dinochrome",
+ category: "Fun",
+ description: "Dinosaur in Chrome",
+ run: async (client, interaction, args) => {
+ await interaction.deleteReply();
+ let msg = await interaction.channel.send(`---------------🦖`);
+ let time = 1 * 1000;
+ setTimeout(function () {
+ msg.edit(`-----------🦖----`);
+ }, time);
+ time += 1.5 * 1000;
+
+ setTimeout(function () {
+ msg.edit(`----------🦖------`);
+ }, time);
+ time += 1.5 * 1000;
+
+ setTimeout(function () {
+ msg.edit(`--------🦖--------`);
+ }, time);
+ time += 1.5 * 1000;
+
+ setTimeout(function () {
+ msg.edit(`------🦖-----------`);
+ }, time);
+ time += 1.5 * 1000;
+
+ setTimeout(function () {
+ msg.edit(`-------🦖-----------`);
+ }, time);
+ time += 1.5 * 1000;
+
+ setTimeout(function () {
+ msg.edit(`---🌵-----🦖---------`);
+ }, time);
+ time += 1.5 * 1000;
+
+ setTimeout(function () {
+ msg.edit(`---🌵-🦖-------------`);
+ }, time);
+ time += 1.5 * 1000;
+
+ setTimeout(function () {
+ msg.edit(`🦖\n ---🌵--------------`);
+ }, time);
+ time += 1.5 * 1000;
+
+ setTimeout(function () {
+ msg.edit(`------🦖---🌵--------------`);
+ }, time);
+ time += 1.5 * 1000;
+
+ setTimeout(function () {
+ msg.edit(`----🦖-----🌵----------------`);
+ }, time);
+ time += 1.5 * 1000;
+
+ setTimeout(function () {
+ msg.edit(`-🌵🌵-----🦖-------🌵--------`);
+ }, time);
+ time += 1.5 * 1000;
+
+ setTimeout(function () {
+ msg.edit(`----🌵🌵-🦖----------🌵------`);
+ }, time);
+ time += 1.5 * 1000;
+
+ setTimeout(function () {
+ msg.edit(`🦖\n ---🌵🌵-------------🌵---`);
+ }, time);
+ time += 1.5 * 1000;
+
+ setTimeout(function () {
+ msg.edit(`-----🦖---🌵🌵-------------🌵--`);
+ }, time);
+ time += 1.5 * 1000;
+
+ setTimeout(function () {
+ msg.edit(`-------🦖-----🌵🌵-------------`);
+ }, time);
+ time += 1.5 * 1000;
+
+ setTimeout(function () {
+ msg.edit(`🎂----🦖--------🌵🌵-----------`);
+ }, time);
+ time += 1.5 * 1000;
+
+ setTimeout(function () {
+ msg.edit(`---🎂--🦖----------🌵🌵---------`);
+ }, time);
+ time += 1.5 * 1000;
+
+ setTimeout(function () {
+ msg.edit(`**Ⓜⓘⓢⓢⓘⓞⓝ Ⓒⓞⓜⓟⓛⓔⓣⓔⓓ !**\n ---🎂🦖----------🌵🌵-------------`);
+ }, time);
+ },
+};
diff --git a/command/Fun/dog.js b/command/Fun/dog.js
new file mode 100644
index 0000000..32f9389
--- /dev/null
+++ b/command/Fun/dog.js
@@ -0,0 +1,35 @@
+const { MessageEmbed } = require("discord.js");
+const fetch = require("node-fetch");
+module.exports = {
+ name: "dog",
+ category: "Fun",
+ description: "Get a dog from reddit",
+ run: async (client, interaction, args) => {
+ let subreddits = ["dog", "dogs"];
+ let subreddit = subreddits[Math.floor(Math.random() * subreddits.length)];
+ fetch(`https://www.reddit.com/r/${subreddit}/random/.json`).then(
+ async res => {
+ let content = await res.json();
+ let permalink = content[0].data.children[0].data.permalink;
+ let memeURL = `https://reddit.com${permalink}`;
+ let memeImage = content[0].data.children[0].data.url;
+ let memeTitle = content[0].data.children[0].data.title;
+ let memeUpvotes = content[0].data.children[0].data.ups;
+ let memeDownvotes = content[0].data.children[0].data.downs;
+ let memeNumComments = content[0].data.children[0].data.num_comments;
+ const memeEmbed = new MessageEmbed()
+ .setTitle(`A dog image | ${memeTitle}`)
+ .setAuthor(
+ interaction.member.user.tag,
+ interaction.user.displayAvatarURL({ dynamic: true })
+ )
+ .setURL(`${memeURL}`)
+ .setImage(memeImage)
+ .setTimestamp()
+ .setColor(client.color)
+ .setFooter(` 👍 ${memeUpvotes} 💬 ${memeNumComments}`);
+ await interaction.followUp({ embeds: [memeEmbed] });
+ }
+ );
+ },
+};
diff --git a/command/Fun/drake.js b/command/Fun/drake.js
new file mode 100644
index 0000000..a51bbdb
--- /dev/null
+++ b/command/Fun/drake.js
@@ -0,0 +1,31 @@
+const { MessageAttachment } = require("discord.js");
+const fetch = require("node-fetch");
+module.exports = {
+ name: "drake",
+ description: "Drake meme",
+ usage: "(Text) (Text)",
+ category: "Fun",
+ options: [
+ {
+ type: 3,
+ name: "first",
+ description: "The first text",
+ required: true,
+ },
+ {
+ type: 3,
+ name: "second",
+ description: "The second text",
+ required: true,
+ },
+ ],
+ run: async (client, interaction, args) => {
+ const res = await fetch(
+ `https://frenchnoodles.xyz/api/endpoints/drake/?text1=${args[0]}&text2=${args[1]}`,
+ {}
+ );
+ let i = await res.buffer();
+ const drake = new MessageAttachment(i);
+ await interaction.followUp({ files: [drake] });
+ },
+};
diff --git a/command/Fun/ds.js b/command/Fun/ds.js
new file mode 100644
index 0000000..e009586
--- /dev/null
+++ b/command/Fun/ds.js
@@ -0,0 +1,24 @@
+const fetch = require("node-fetch");
+module.exports = {
+ name: "doublestruck",
+ description: "Doublestruck your text",
+ usage: "(text)",
+ category: "Fun",
+ type: "CHAT_INPUT",
+ options: [
+ {
+ type: 3,
+ name: "text",
+ description: "The text you want to convert",
+ required: true,
+ },
+ ],
+ run: async (client, interaction, args) => {
+ let text = args[0].split(" ").join("+");
+ let res = await fetch(
+ "https://api.popcatdev.repl.co/doublestruck?text=" + text
+ );
+ let json = await res.json();
+ await interaction.followUp(json.text);
+ },
+};
diff --git a/command/Fun/emojify.js b/command/Fun/emojify.js
new file mode 100644
index 0000000..9840be2
--- /dev/null
+++ b/command/Fun/emojify.js
@@ -0,0 +1,43 @@
+module.exports = {
+ name: "emojify",
+ usage: "(Word)",
+ description: "Emojify a sentence",
+ type: "CHAT_INPUT",
+ category: "Fun",
+ options: [
+ {
+ type: 3,
+ name: "text",
+ description: "The text you want to convert",
+ required: true,
+ },
+ ],
+ run: async (client, interaction, args) => {
+ const mapping = {
+ " ": " ",
+ 0: ":zero:",
+ 1: ":one:",
+ 2: ":two:",
+ 3: ":three:",
+ 4: ":four:",
+ 5: ":five:",
+ 6: ":six:",
+ 7: ":seven:",
+ 8: ":eight:",
+ 9: ":nine:",
+ "!": ":grey_exclamation:",
+ "?": ":grey_question:",
+ "#": ":hash:",
+ "*": ":asterisk:",
+ };
+ "abcdefghijklmnopqrstuvwxyz".split("").forEach(c => {
+ mapping[c] = mapping[c.toUpperCase()] = ` :regional_indicator_${c}:`;
+ });
+ await interaction.followUp(
+ args[0]
+ .split("")
+ .map(c => mapping[c] || c)
+ .join("")
+ );
+ },
+};
diff --git a/command/Fun/hack.js b/command/Fun/hack.js
new file mode 100644
index 0000000..77c7545
--- /dev/null
+++ b/command/Fun/hack.js
@@ -0,0 +1,138 @@
+const { MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "hack",
+ description: "Hack a user",
+ usage: "(User)",
+ category: "Fun",
+ options: [
+ {
+ type: 6,
+ name: "user",
+ description: "The user you want to hack",
+ required: true,
+ },
+ ],
+ type: "CHAT_INPUT",
+ run: async (client, interaction, args) => {
+ let answers = [
+ "@yousuck.noob",
+ "@hesnoob.haha",
+ "@thisguy.suck",
+ "@paypal.removed",
+ "@noob.haha",
+ "@hacked.xyz",
+ "@susmate.com",
+ "@gmail.sus",
+ "@why-im.withyou",
+ "@someone-end.me",
+ "@isnoob.io",
+ "@username-is.noob",
+ "@hahaget.lost",
+ "@yahoo.sus",
+ "@botmail.zip",
+ "@gmail.com",
+ "@yahoo.com",
+ ];
+ let passwords = [
+ "Disb****",
+ "disc******",
+ "pass**********",
+ "get****",
+ "mails***",
+ "endm****",
+ "gamer***********",
+ "asegeio*********",
+ "whys*******",
+ "Brot******",
+ "imwith*******",
+ "luckyyougotthispasswordlolnocencor",
+ "starb*******",
+ "egghunt2***",
+ "secr*****",
+ ];
+ let ips = [
+ "10.313.523.502.00.1",
+ "25.537.753.462.29.2",
+ "21.175.866.974.07.08",
+ "32.653.587.825.35.5",
+ "12.172.764.781.22.8",
+ "91.723.242.452.09.3",
+ "92.743.116.896.85.6",
+ "84.091.000.853.54.7",
+ "51.071.124.129.12.0",
+ ];
+ const answer = answers[Math.floor(Math.random() * answers.length)];
+ const passwrd = passwords[Math.floor(Math.random() * passwords.length)];
+ const ip = ips[Math.floor(Math.random() * ips.length)];
+ const taggedUser = interaction.guild.members.cache.get(args[0]);
+ await interaction.deleteReply();
+ interaction.channel
+ .send(`Hacking ${taggedUser.user.username}...`)
+ .then(async msg => {
+ client.function.sleep(100);
+ msg.edit("Status: ■□□□□□□□□□□ 0%");
+ client.function.sleep(100);
+ msg.edit("Status: ■■□□□□□□□□□ 7%: Hacking Email...");
+ client.function.sleep(600);
+ msg.edit(
+ `Status: ■■■□□□□□□□□ 8%:\n \`Email: ${taggedUser.user.username}@yousuck.noob\`\n \`Password: ${passwrd}\` `
+ );
+ client.function.sleep(600);
+ msg.edit("Status: ■■□□□□□□□□□ 9%: Logging in to the Email...");
+ client.function.sleep(2000);
+ msg.edit("Status: ■■■□□□□□□□□ 12%: Turning off the antivirus");
+ client.function.sleep(1000);
+ msg.edit("Status: ■■■■□□□□□□ 14%: Downloading SYNAPSE X");
+ client.function.sleep(100);
+ msg.edit("Status: ■■■□□□□□□□□ 17%: Deleting Captcha...");
+ client.function.sleep(100);
+ msg.edit("Status: ■■□□□□□□□□□ 20%: Deleting Paypal account...");
+ client.function.sleep(10);
+ msg.edit("Status: ■■■□□□□□□□□ 21%");
+ client.function.sleep(12);
+ msg.edit("Status: ■■■■□□□□□□□ 22%");
+ client.function.sleep(100);
+ msg.edit("Status: ■■■■■□□□□□□ 24%: Paypal account deleted");
+ client.function.sleep(1000);
+ msg.edit("Status: ■■■■□□□□□□ 29%: Hacking is almost ready...");
+ client.function.sleep(80);
+ msg.edit("Status: ■■■□□□□□□□□ 31%");
+ client.function.sleep(80);
+ msg.edit("Status: ■■■■□□□□□□□ 36%");
+ client.function.sleep(40);
+ msg.edit("Status: ■■■■■□□□□□□ 41%");
+ client.function.sleep(60);
+ msg.edit("Status: ■■■■□□□□□□□ 47%");
+ client.function.sleep(50);
+ msg.edit("Status: ■■■■■■□□□□□ 53%");
+ client.function.sleep(3000);
+ msg.edit(
+ `Status: ■■■■■■■□□□□ 58%: Email password changed so ${taggedUser.user.username} can not login`
+ );
+ client.function.sleep(500);
+ msg.edit("Status: ■■■■■■□□□□□ 66%");
+ client.function.sleep(60);
+ msg.edit("Status: ■■■■■□□□□□□ 74%");
+ client.function.sleep(20);
+ msg.edit(`Status: ■■■■■□□□□□□ 79%: IP address found: ${ip}`);
+ client.function.sleep(83);
+ msg.edit("Status: ■■■■■■□□□□ 80%");
+ client.function.sleep(50);
+ msg.edit("Status: ■■■■■■■□□□ 85%");
+ client.function.sleep(14);
+ msg.edit("Status: ■■■■■■■■■□□ 93%");
+ client.function.sleep(70);
+ msg.edit("Status: ■■■■■■■■■■□ 97%");
+ client.function.sleep(90);
+ msg.edit("Status: ■■■■■■■■■■■ 100%");
+ const embed = new MessageEmbed()
+ .setDescription(`${taggedUser} has been hacked!`)
+ .addField("Email", `${taggedUser.user.username}${answer}`)
+ .addField("Password", `${passwrd}`)
+ .addField("IP address", `${ip}`)
+ .setFooter(`Made by ${client.author}`)
+ .setColor("02023a");
+ await msg.edit({ embeds: [embed] });
+ });
+ },
+};
diff --git a/command/Fun/hug.js b/command/Fun/hug.js
new file mode 100644
index 0000000..52ad1a8
--- /dev/null
+++ b/command/Fun/hug.js
@@ -0,0 +1,43 @@
+const { MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "hug",
+ description: "Hug someone",
+ category: "Fun",
+ usage: "(User)",
+ options: [
+ {
+ type: 6,
+ name: "user",
+ description: "The user you want to hug",
+ required: true,
+ },
+ {
+ type: 3,
+ name: "words",
+ description: "The words you want to say",
+ required: false,
+ },
+ ],
+ type: "CHAT_INPUT",
+ run: async (client, interaction, args) => {
+ const user = interaction.guild.members.cache.get(args[0]);
+ words = args[1];
+ if (user.id === interaction.user.id) {
+ return await interaction.followUp("You can't hug yourself");
+ }
+ const embed = new MessageEmbed()
+ .setDescription(`${interaction.user} **hugs** ${user}`)
+ .setImage(
+ `https://media.tenor.com/images/ca88f916b116711c60bb23b8eb608694/tenor.gif`
+ )
+ .setColor(client.color)
+ .setTimestamp()
+ .setFooter(`Made by ${client.author}`);
+ if (words) {
+ embed.addField("Words:", reason);
+ }
+ await interaction
+ .followUp({ embeds: [embed] })
+ .then(msg => msg.react("💕"));
+ },
+};
diff --git a/command/Fun/kiss.js b/command/Fun/kiss.js
new file mode 100644
index 0000000..184bcd4
--- /dev/null
+++ b/command/Fun/kiss.js
@@ -0,0 +1,43 @@
+const { Client, Message, MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "kiss",
+ description: "Kiss someone",
+ category: "Fun",
+ usage: "(User)",
+ options: [
+ {
+ type: 6,
+ name: "user",
+ description: "The user you want to kiss",
+ required: true,
+ },
+ {
+ type: 3,
+ name: "words",
+ description: "The words you want to say",
+ required: false,
+ },
+ ],
+ type: "CHAT_INPUT",
+ run: async (client, interaction, args) => {
+ const user = interaction.guild.members.cache.get(args[0]);
+ words = args[1];
+ if (user.id === interaction.user.id) {
+ return await interaction.followUp("You can't kiss yourself");
+ }
+ const embed = new MessageEmbed()
+ .setDescription(`${interaction.user} **kisses** ${user}`)
+ .setImage(
+ `https://media.discordapp.net/attachments/814310468906123274/817656819416825896/image0.gif`
+ )
+ .setColor(client.color)
+ .setTimestamp()
+ .setFooter(`Made by ${client.author}`);
+ if (words) {
+ embed.addField("Words:", reason);
+ }
+ await interaction
+ .followUp({ embeds: [embed] })
+ .then(msg => msg.react("💕"));
+ },
+};
diff --git a/command/Fun/meme.js b/command/Fun/meme.js
new file mode 100644
index 0000000..a62c1d5
--- /dev/null
+++ b/command/Fun/meme.js
@@ -0,0 +1,35 @@
+const { MessageEmbed } = require("discord.js");
+const fetch = require("node-fetch");
+module.exports = {
+ name: "meme",
+ category: "Fun",
+ description: "Get a meme from reddit",
+ run: async (client, interaction, args) => {
+ let subreddits = ["comedyheaven", "dank", "meme", "memes"];
+ let subreddit = subreddits[Math.floor(Math.random() * subreddits.length)];
+ fetch(`https://www.reddit.com/r/${subreddit}/random/.json`).then(
+ async res => {
+ let content = await res.json();
+ let permalink = content[0].data.children[0].data.permalink;
+ let memeURL = `https://reddit.com${permalink}`;
+ let memeImage = content[0].data.children[0].data.url;
+ let memeTitle = content[0].data.children[0].data.title;
+ let memeUpvotes = content[0].data.children[0].data.ups;
+ let memeDownvotes = content[0].data.children[0].data.downs;
+ let memeNumComments = content[0].data.children[0].data.num_comments;
+ const memeEmbed = new MessageEmbed()
+ .setTitle(`${memeTitle}`)
+ .setAuthor(
+ interaction.member.user.tag,
+ interaction.user.displayAvatarURL({ dynamic: true })
+ )
+ .setURL(`${memeURL}`)
+ .setImage(memeImage)
+ .setTimestamp()
+ .setColor(client.color)
+ .setFooter(` 👍 ${memeUpvotes} 💬 ${memeNumComments}`);
+ await interaction.followUp({ embeds: [memeEmbed] });
+ }
+ );
+ },
+};
diff --git a/command/Fun/obama.js b/command/Fun/obama.js
new file mode 100644
index 0000000..dd78f07
--- /dev/null
+++ b/command/Fun/obama.js
@@ -0,0 +1,45 @@
+const o = "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠛⠛⠛⠉⠉⠉⠋⠛⠛⠛⠻⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿";
+const b = "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠛⠉⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠉⠙⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿";
+const a = "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠋⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿";
+const m = "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠏⠄⠄⠄⠄⠄⠄⠄⠂⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⠹⣿⣿⣿⣿⣿⣿⣿";
+const a2 = "⣿⣿⣿⣿⣿⣿⣿⣿⣿⠛⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠠⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠘⢻⣿⣿⣿⣿⣿";
+const aa = "⣿⣿⣿⣿⣿⣿⣿⣿⠃⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⠄⢠⠄⠄⡀⠄⠄⢀⠂⠄⠄⠄⠄⠄⠄⠄⠄⠄⡁⠄⠄⢛⣿⣿⣿⣿";
+const ab = "⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠐⡈⢔⠸⣐⢕⢕⢵⢰⢱⢰⢐⢤⡡⡢⣕⢄⢢⢠⠄⠄⠄⠄⠄⠄⠙⣿⣿⣿";
+const ac = "⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡁⠂⠅⢕⠌⡎⡎⣎⢎⢮⢮⣳⡳⣝⢮⢺⢜⢕⢕⢍⢎⠪⡐⠄⠁⠄⠸⣿⣿";
+const ad = "⣿⣿⣿⣿⣿⣿⠏⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠐⠄⠄⢅⠣⡡⡣⣣⡳⡵⣝⡮⣗⣗⡯⣗⣟⡮⡮⣳⣣⣳⢱⢱⠱⣐⠄⠂⠄⢿⣿";
+const ae = "⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⠄⠄⠄⠂⠄⠄⠄⠄⠄⠄⢂⢈⠢⡱⡱⡝⣮⣿⣟⣿⣽⣷⣿⣯⣿⣷⣿⣿⣿⣾⣯⣗⡕⡇⡇⠄⠂⡀⢹⣿";
+const af = "⣿⣿⣿⣿⣿⡟⠄⠄⠄⠄⠄⠄⠂⠄⠄⠄⠄⠄⠄⠐⢀⢂⢕⢸⢨⢪⢳⡫⣟⣿⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡺⡮⡣⡣⠠⢂⠒⢸⣿";
+const ag = "⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠠⠐⠄⡂⠆⡇⣗⣝⢮⢾⣻⣞⣿⣿⣿⣿⣿⣿⣿⣿⢿⣽⣯⡯⣺⢸⢘⠨⠔⡅⢨⣿";
+const ah = "⣿⣿⠋⠉⠙⠃⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠁⠄⠄⠄⡂⡪⡪⡪⡮⡮⡯⣻⣽⣾⣿⣿⣿⣟⣿⣿⣿⣽⣿⣿⡯⣯⡺⡸⡰⡱⢐⡅⣼⣿";
+const ai = "⣿⠡⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠠⠈⠆⠱⠑⠝⠜⠕⡝⡝⣞⢯⢿⣿⣿⡿⣟⣿⣿⣿⡿⡿⣽⣷⣽⡸⡨⡪⣂⠊⣿⣿";
+const aj = "⣿⠡⠄⡨⣢⠐⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠐⠍⡓⣗⡽⣝⠽⠍⠅⠑⠁⠉⠘⠘⠘⠵⡑⢜⢀⢀⢉⢽";
+const ak = "⣿⠁⠠⢱⢘⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⠈⠱⣁⠜⡘⠌⠄⠄⡪⣳⣟⡮⢅⠤⠠⠄⠄⣀⣀⡀⡀⠄⠈⡂⢲⡪⡠⣿";
+const al = "⣿⡇⠨⣺⢐⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡀⠄⠄⠄⠤⡠⡢⢒⠦⠠⠄⠄⠄⡸⢽⣟⢮⠢⡂⡐⠄⡈⡀⠤⡀⠄⠑⢄⠨⢸⡺⣐⣿";
+const am = "⣿⣿⠈⠕⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡂⡪⡐⡥⢤⣰⣰⣰⡴⡮⠢⠂⠄⠄⡊⢮⢺⢕⢵⢥⡬⣌⣒⡚⣔⢚⢌⢨⢚⠌⣾⡪⣾⣿";
+const an = "⣿⣿⣆⠄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡑⢕⢕⡯⡷⣕⢧⢓⢭⠨⡀⠄⡂⠨⡨⣪⡳⣝⢝⡽⣻⣻⣞⢽⣲⢳⢱⢡⠱⠨⣟⢺⣿⣿";
+const ao = "⣿⣿⣿⡆⠄⡅⠇⡄⠄⠄⠄⠄⠄⠄⠄⠐⠨⢪⢹⢽⢽⣺⢝⠉⠁⠁⠄⠄⠄⢌⢎⡖⡯⡎⡗⢝⠜⣶⣯⣻⢮⡻⣟⣳⡕⠅⣷⣿⣿⣿";
+const ap = "⣿⣿⣿⣿⣶⣶⣿⣷⠄⠄⠄⠄⠄⠄⠄⠄⠈⠔⡑⠕⠝⠄⡀⠄⠄⠊⢆⠂⠨⡪⣺⣮⣿⡾⡜⣜⡜⣄⠙⢞⣿⢿⡿⣗⢝⢸⣾⣿⣿⣿";
+const aq = "⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⠄⡀⠄⠄⠄⠄⢀⠄⠠⠄⠠⠄⠄⠄⠄⠄⠄⠊⠺⡹⠳⡙⡜⡓⡭⡺⡀⠄⠣⡻⡹⡸⠨⣣⣿⣿⣿⣿";
+const ar = "⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⠄⠠⠄⠄⣂⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢄⠤⡤⡄⡆⡯⡢⡣⡣⡓⢕⠽⣄⠄⠨⡂⢌⣼⣿⣿⣿⣿⣿";
+const a_ = "⣿⣿⣿⣿⣿⣿⣿⣿⡆⠄⠄⠄⠄⠈⠆⠄⠸⡂⠄⠄⠄⢀⠄⢀⠈⠄⠂⠁⠙⠝⠼⠭⠣⠣⠣⠑⠌⠢⠣⡣⡠⡘⣰⣱⣿⣿⣿⣿⣿⣿";
+const at = "⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⢑⠄⠈⡱⠄⢘⠄⡀⠨⢐⣧⣳⣷⣶⣦⣤⣴⣶⣶⣶⡶⠄⡠⡢⡕⣜⠎⡮⣣⣿⣿⣿⣿⣿⣿⣿";
+const au = "⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠢⠄⠨⠄⠄⠣⡀⠄⢀⢀⢙⠃⡿⢿⠿⡿⡿⢟⢋⢔⡱⣝⢜⡜⡪⡪⣵⣿⣿⣿⣿⣿⣿⣿⣿";
+const av = "⣿⣿⣿⣿⣿⣿⣿⣿⡁⠄⠄⠄⠄⠄⠄⠄⠅⠄⠡⠄⠄⠡⢀⢂⠢⡡⠡⠣⡑⣏⢯⡻⡳⣹⡺⡪⢎⠎⡆⢣⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿";
+const aw = "⣿⣿⣿⣿⣿⣿⣿⣿⣇⠄⠄⠄⠄⠄⠄⠄⠐⠄⠄⠁⠄⢈⠄⢂⠕⡕⡝⢕⢎⢎⢮⢎⢯⢺⢸⢬⠣⢃⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿";
+const ax = "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠠⠨⡐⠌⢆⢇⢧⢭⣣⡳⣵⢫⣳⢱⠱⢑⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿";
+const ay = "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣆⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠁⡊⢌⢢⢡⢣⢪⡺⡪⡎⡎⡎⡚⣨⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿";
+const az = "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠕⡅⢗⢕⡳⡭⣳⢕⠕⡱⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿";
+const ba = "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠌⠄⠑⠩⢈⢂⣱⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿";
+const bb = "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⡀⢄⠄⣀⠄⡀⣀⢠⢄⣖⣖⣞⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿";
+const bc = "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⣱⡐⡕⡕⡽⣝⣟⣮⣾⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿";
+
+module.exports = {
+ name: "obama",
+ category: "Utilities",
+ description: "Obama",
+ run: async (client, interaction, args) => {
+ await interaction.followUp({
+ content: `${o}\n${b}\n${a}\n${m}\n${a2}\n${aa}\n${ab}\n${ac}\n${ad}\n${ae}\n${af}\n${ag}\n${ah}\n${ai}\n${aj}\n${ak}\n${al}\n${am}\n${an}\n${ao}\n${ap}\n${aq}\n${ar}\n${a_}\n${at}\n${au}\n${av}\n${aw}\n${ax}\n${ay}\n${az}\n${ba}\n${bb}\n${bc}`,
+ });
+ },
+};
diff --git a/command/Fun/pp.js b/command/Fun/pp.js
new file mode 100644
index 0000000..1871603
--- /dev/null
+++ b/command/Fun/pp.js
@@ -0,0 +1,32 @@
+const { MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "pp",
+ description: "Check how long is the user",
+ usage: "(User)",
+ category: "Fun",
+ options: [
+ {
+ type: 6,
+ name: "user",
+ description: "The user you want to see",
+ required: false,
+ },
+ ],
+ type: "CHAT_INPUT",
+ run: async (client, interaction, args) => {
+ const { user } =
+ interaction.guild.members.cache.get(args[0]) || interaction.member;
+ let embed = new MessageEmbed()
+ .addField(
+ `${user.username}\'s peepee`,
+ `8${"=".repeat(Math.floor(Math.random() * 20))}D`
+ )
+ .setColor(client.color)
+ .setTitle("Peepee size machine")
+ .setTimestamp()
+ .setFooter(`Made by ${client.author}`);
+ await interaction.followUp({
+ embeds: [embed],
+ });
+ },
+};
diff --git a/command/Fun/rickroll.js b/command/Fun/rickroll.js
new file mode 100644
index 0000000..1624bc0
--- /dev/null
+++ b/command/Fun/rickroll.js
@@ -0,0 +1,22 @@
+const { MessageAttachment } = require("discord.js");
+
+module.exports = {
+ name: "rickroll",
+ description: "Rickroll?",
+ category: "Fun",
+ run: async (client, interaction, args) => {
+ const roll = [
+ "Never gonna give you up",
+ "Never gonna let you down",
+ "Never gonna run around and desert you",
+ "Never gonna make you cry",
+ "Never gonna say goodbye",
+ "Never gonna tell a lie and hurt you",
+ ];
+ const rick = roll[Math.floor(Math.random() * roll.length)];
+ const rickroll = new MessageAttachment(
+ "https://i.pinimg.com/originals/88/82/bc/8882bcf327896ab79fb97e85ae63a002.gif"
+ );
+ await interaction.followUp({ content: `**${rick}**`, files: [rickroll] });
+ },
+};
diff --git a/command/Fun/rps.js b/command/Fun/rps.js
new file mode 100644
index 0000000..e2ca7a1
--- /dev/null
+++ b/command/Fun/rps.js
@@ -0,0 +1,214 @@
+const Discord = require("discord.js");
+
+module.exports = {
+ name: "rockpaperscissors",
+ description: "Play RPS with someone",
+ usage: "(User)",
+ category: "Fun",
+ options: [
+ {
+ type: 6,
+ name: "user",
+ description: "The user you want to play with",
+ required: true,
+ },
+ ],
+ type: "CHAT_INPUT",
+ run: async (client, interaction, args, utils) => {
+ let user = interaction.guild.members.cache.get(args[0]);
+ if (user.user.id == interaction.user.id)
+ return await interaction.followUp("You can't play with yourself");
+ if (user.user.bot)
+ return await interaction.followUp("You can't play with bots");
+
+ let embed = new Discord.MessageEmbed()
+ .setDescription(`Wait for **${user.user.username}** to accept your game`)
+ .setColor(client.color)
+ .setTimestamp()
+ .setFooter(`Made by ${client.author}`);
+
+ let confirm = new Discord.MessageActionRow().addComponents(
+ new Discord.MessageButton()
+ .setLabel("Accept")
+ .setStyle("SUCCESS")
+ .setCustomId("accept")
+ .setEmoji("808683134786863124"),
+ new Discord.MessageButton()
+ .setLabel("Decline")
+ .setStyle("DANGER")
+ .setCustomId("decline")
+ .setEmoji("808683573544353792")
+ );
+ await interaction
+ .followUp({
+ content: `<@!${user.user.id}>`,
+ embeds: [embed],
+ components: [confirm],
+ })
+ .then(async m => {
+ let filter = button => button.user.id == user.user.id;
+ const collector = m.createMessageComponentCollector({
+ filter,
+ type: "BUTTON",
+ time: 60000,
+ });
+ collector.on("collect", button => {
+ if (button.customId == "decline") {
+ button.deferUpdate();
+ return collector.stop("decline");
+ }
+ button.deferUpdate();
+ let pick = new Discord.MessageEmbed()
+ .setTitle(`${interaction.user.username} VS ${user.user.username}`)
+ .setColor(client.color)
+ .setDescription("Choose either 🪨, 📄, or ✂️")
+ .setTimestamp();
+ let choices = new Discord.MessageActionRow().addComponents(
+ new Discord.MessageButton()
+ .setCustomId("rock")
+ .setStyle("SECONDARY")
+ .setEmoji("🪨"),
+ new Discord.MessageButton()
+ .setCustomId("paper")
+ .setStyle("SECONDARY")
+ .setEmoji("📄"),
+ new Discord.MessageButton()
+ .setCustomId("scissors")
+ .setStyle("SECONDARY")
+ .setEmoji("✂️")
+ );
+ m.edit({
+ embeds: [pick],
+ components: [choices],
+ });
+ collector.stop();
+ let users = new Set();
+ users.add(interaction.user.id);
+ users.add(user.user.id);
+ let ping, pong;
+ let filter = b => users.has(b.user.id);
+ const collect = m.createMessageComponentCollector({
+ filter,
+ type: "BUTTON",
+ time: 60000,
+ });
+ collect.on("collect", async b => {
+ users.delete(b.user.id);
+ if (b.user.id == user.user.id) {
+ ping = b.customId;
+ await b.reply({
+ content: `You have choosen **${utils.format(ping)}**`,
+ ephemeral: true,
+ });
+ }
+ if (b.user.id == interaction.user.id) {
+ pong = b.customId;
+ await b.reply({
+ content: `You have choosen **${utils.format(pong)}**`,
+ ephemeral: true,
+ });
+ }
+ if (users.size == 0) return collect.stop();
+ });
+ collect.on("end", (c, reason) => {
+ if (reason == "time") {
+ let timeout = new Discord.MessageEmbed()
+ .setTitle("Timeout")
+ .setColor("RED")
+ .setDescription(
+ "Game cancelled since a player didn't react in time"
+ );
+ m.edit({
+ embeds: [timeout],
+ });
+ } else {
+ const sit1 = ping == "rock" && pong == "scissors";
+ const sit2 = ping == "scissors" && pong == "rock";
+ const sit3 = ping == "scissors" && pong == "paper";
+ const sit4 = ping == "paper" && pong == "scissors";
+ const sit5 = ping == "paper" && pong == "rock";
+ const sit6 = ping == "rock" && pong == "paper";
+ if (sit1 || sit3 || sit5) {
+ let embed = new Discord.MessageEmbed()
+ .setTitle(`${user.user.username} wins!`)
+ .setColor("GREEN")
+ .setFooter(`Made by ${client.author}`)
+ .addField(
+ `${user.user.username} choice`,
+ `${utils.format(ping)}`
+ )
+ .addField(
+ `${interaction.user.username} choice`,
+ `${utils.format(pong)}`
+ )
+ .setTimestamp();
+ m.edit({
+ embeds: [embed],
+ components: [],
+ });
+ } else if (sit2 || sit4 || sit6) {
+ let embed = new Discord.MessageEmbed()
+ .setTitle(`${interaction.user.username} wins!`)
+ .setColor("GREEN")
+ .setFooter(`Made by ${client.author}`)
+ .addField(
+ `${interaction.user.username} choice`,
+ `${utils.format(pong)}`
+ )
+ .addField(
+ `${user.user.username} choice`,
+ `${utils.format(ping)}`
+ )
+ .setTimestamp();
+ m.edit({
+ embeds: [embed],
+ components: [],
+ });
+ } else {
+ let embed = new Discord.MessageEmbed()
+ .setTitle(`Tie!`)
+ .setColor("GREY")
+ .setFooter(`Made by ${client.author}`)
+ .addField(
+ `${interaction.user.username} choice`,
+ `${utils.format(pong)}`
+ )
+ .addField(
+ `${user.user.username} choice`,
+ `${utils.format(ping)}`
+ )
+ .setTimestamp();
+ m.edit({ embeds: [embed], components: [] });
+ }
+ }
+ });
+ });
+ collector.on("end", (collected, reason) => {
+ if (reason == "time") {
+ let embed = new Discord.MessageEmbed()
+ .setTitle("Timeout")
+ .setColor("RED")
+ .setDescription(
+ `**${user.user.username}** did not confirm before 60 seconds of time`
+ );
+ m.edit({
+ embeds: [embed],
+ components: [],
+ });
+ }
+ if (reason == "decline") {
+ let embed = new Discord.MessageEmbed()
+ .setTitle("Declined")
+ .setColor("RED")
+ .setDescription(
+ `**${user.user.username}** has declined your game of RPS`
+ );
+ m.edit({
+ embeds: [embed],
+ components: [],
+ });
+ }
+ });
+ });
+ },
+};
diff --git a/command/Fun/say.js b/command/Fun/say.js
new file mode 100644
index 0000000..f6c2814
--- /dev/null
+++ b/command/Fun/say.js
@@ -0,0 +1,20 @@
+const { Util } = require("discord.js");
+module.exports = {
+ name: "say",
+ description: "Pretend a bot to say",
+ usage: "(Words)",
+ category: "Fun",
+ type: "CHAT_INPUT",
+ options: [
+ {
+ type: 3,
+ name: "words",
+ description: "The words to say",
+ required: true,
+ },
+ ],
+ run: async (client, interaction, args) => {
+ await interaction.deleteReply();
+ interaction.channel.send(Util.cleanContent(args[0], interaction.channel));
+ },
+};
diff --git a/command/Fun/ship.js b/command/Fun/ship.js
new file mode 100644
index 0000000..cc104e3
--- /dev/null
+++ b/command/Fun/ship.js
@@ -0,0 +1,42 @@
+const { MessageEmbed } = require("discord.js");
+block = "⬛";
+heart = "🟥";
+
+module.exports = {
+ name: "ship",
+ description: "Ship an user to an user",
+ usage: "(User) (User)",
+ category: "Fun",
+ options: [
+ {
+ type: 6,
+ name: "1stuser",
+ description: "The user you want to ship",
+ required: true,
+ },
+ {
+ type: 6,
+ name: "2nduser",
+ description: "The user you want to ship",
+ required: true,
+ },
+ ],
+ type: "CHAT_INPUT",
+ run: async (client, interaction, args) => {
+ const user1 = interaction.guild.members.cache.get(args[0]).user.username;
+ const user2 = interaction.guild.members.cache.get(args[1]).user.username;
+ let loveEmbed = new MessageEmbed()
+ .setColor("dd2e44")
+ .setFooter(`Shipped by ${interaction.member.user.tag}`)
+ .setTimestamp()
+ .setTitle(`💘 | Shipping ${user1} and ${user2} | 💘`)
+ .setDescription(`🔻 | ${user1} \n${ship()}\n🔺 | ${user2}`);
+ await interaction.followUp({ embeds: [loveEmbed] });
+ },
+};
+function ship() {
+ const hearts = Math.floor(Math.random() * 100);
+ const hearte = hearts / 10;
+ const str = `${heart.repeat(hearte)}${block.repeat(10 - hearte)} ${hearts}%`;
+ return str;
+}
diff --git a/command/Fun/sr.js b/command/Fun/sr.js
new file mode 100644
index 0000000..c08a2c4
--- /dev/null
+++ b/command/Fun/sr.js
@@ -0,0 +1,28 @@
+const axios = require("axios");
+
+module.exports = {
+ name: "superscript",
+ description: "Superscript your text",
+ usage: "(text)",
+ category: "Fun",
+ type: "CHAT_INPUT",
+ options: [
+ {
+ type: 3,
+ name: "text",
+ description: "The text you want to convert",
+ required: true,
+ },
+ ],
+ run: async (client, interaction, args) => {
+ const text = args[0];
+ if (text.includes("@"))
+ return await interaction.followUp({
+ content: "Text cannot includes '@'",
+ });
+ const data = await axios
+ .get(`${process.env.api}/api/v1/fun/superscript?text=${text}`)
+ .then(res => res.data.text);
+ await interaction.followUp({ content: data });
+ },
+};
diff --git a/command/Fun/triggered.js b/command/Fun/triggered.js
new file mode 100644
index 0000000..575aa0f
--- /dev/null
+++ b/command/Fun/triggered.js
@@ -0,0 +1,25 @@
+const { Canvas } = require("canvacord");
+const { MessageAttachment } = require("discord.js");
+module.exports = {
+ name: "triggered",
+ usage: "{User}",
+ description: "Have a trigger effect on a user's avatar",
+ category: "Fun",
+ options: [
+ {
+ type: 6,
+ name: "user",
+ description: "The user you want to use the effect",
+ required: true,
+ },
+ ],
+ type: "CHAT_INPUT",
+ run: async (client, interaction, args) => {
+ const user = interaction.guild.members.cache.get(args[0]);
+ const ava = user.user.displayAvatarURL({ format: "png", size: 2048 });
+ const imga = await Canvas.trigger(ava);
+ await interaction.followUp({
+ files: [new MessageAttachment(imga, "image.gif")],
+ });
+ },
+};
diff --git a/command/Information/avatar.js b/command/Information/avatar.js
new file mode 100644
index 0000000..53207c0
--- /dev/null
+++ b/command/Information/avatar.js
@@ -0,0 +1,50 @@
+const { MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "avatar",
+ description: "Show user's avatar in different formats",
+ type: "CHAT_INPUT",
+ usage: "{User}",
+ category: "Information",
+ options: [
+ {
+ type: 6,
+ name: "user",
+ description: "The user you want to see",
+ required: false,
+ },
+ ],
+ run: async (client, interaction, args) => {
+ const member =
+ interaction.guild.members.cache.get(args[0]) || interaction.member;
+ const embed = new MessageEmbed()
+ .setAuthor(
+ member.user.tag,
+ member.user.displayAvatarURL({ dynamic: true, size: 1024 })
+ )
+ .setColor(client.color)
+ .setTitle(`${member.user.username}'s Avatar`)
+ .setDescription(
+ `\`Links:\` **[png](${member.user.displayAvatarURL({
+ format: "png",
+ size: 2048,
+ })}) | [jpg](${member.user.displayAvatarURL({
+ format: "jpg",
+ size: 2048,
+ })}) | [gif](${member.user.displayAvatarURL({
+ format: "gif",
+ size: 2048,
+ dynamic: true,
+ })}) | [webp](${member.user.displayAvatarURL({
+ format: "webp",
+ size: 2048,
+ })})**`
+ )
+ .setImage(
+ member.user.avatarURL({ size: 2048, dynamic: true, format: "png" })
+ )
+ .setFooter(`Made by ${client.author}`)
+ .setURL(client.web)
+ .setTimestamp();
+ await interaction.followUp({ embeds: [embed] });
+ },
+};
diff --git a/command/Information/banner.js b/command/Information/banner.js
new file mode 100644
index 0000000..fc97db0
--- /dev/null
+++ b/command/Information/banner.js
@@ -0,0 +1,57 @@
+const { MessageEmbed } = require("discord.js");
+const axios = require("axios");
+
+module.exports = {
+ name: "banner",
+ description: "Show user's banner",
+ type: "CHAT_INPUT",
+ usage: "{User}",
+ category: "Information",
+ options: [
+ {
+ type: 6,
+ name: "user",
+ description: "The user you want to see",
+ required: false,
+ },
+ ],
+ run: async (client, interaction, args) => {
+ const { user } =
+ interaction.guild.members.cache.get(args[0]) || interaction.member;
+ axios
+ .get(`https://discord.com/api/v9/users/${user.id}`, {
+ headers: {
+ Authorization: `Bot ${client.token}`,
+ },
+ })
+ .then(async res => {
+ const { banner, accent_color } = res.data;
+
+ if (banner) {
+ const extension = banner.startsWith("a_") ? ".gif" : ".png";
+ const url = `https://cdn.discordapp.com/banners/${user.id}/${banner}${extension}?size=2048`;
+
+ const embed = new MessageEmbed()
+ .setTitle(`${user.tag}'s Banner`)
+ .setImage(url)
+ .setColor(accent_color || "BLUE");
+
+ await interaction.followUp({ embeds: [embed] });
+ } else {
+ if (accent_color) {
+ const embed = new MessageEmbed()
+ .setDescription(
+ `**${user.tag}** does not have a banner but they have an accent color`
+ )
+ .setColor(accent_color);
+
+ await interaction.followUp({ embeds: [embed] });
+ } else {
+ await interaction.followUp({
+ content: `**${user.tag}** does not have a banner nor do they have an accent color.`,
+ });
+ }
+ }
+ });
+ },
+};
diff --git a/command/Information/botinfo.js b/command/Information/botinfo.js
new file mode 100644
index 0000000..a0ca047
--- /dev/null
+++ b/command/Information/botinfo.js
@@ -0,0 +1,47 @@
+const { MessageEmbed, version: djsversion } = require("discord.js");
+const version = require("../../package.json").version;
+const { utc } = require("moment");
+const os = require("os");
+const ms = require("ms");
+module.exports = {
+ name: "botinfo",
+ description: "Check the info of the bot",
+ category: "Information",
+ type: "CHAT_INPUT",
+ run: async (client, interaction, args) => {
+ const core = os.cpus()[0];
+ const embed = new MessageEmbed()
+ .setURL(client.web)
+ .setThumbnail(client.user.displayAvatarURL())
+ .setColor(interaction.guild.me.displayHexColor || client.color)
+ .addField(
+ "General",
+ `**❯ Client:** ${client.user.tag} (${client.user.id})
+ **❯ Commands:** ${client.commands.size}
+ **❯ Servers:** ${client.guilds.cache.size.toLocaleString()}
+ **❯ Users:** ${client.guilds.cache
+ .reduce((a, b) => a + b.memberCount, 0)
+ .toLocaleString()}
+ **❯ Channels:** ${client.channels.cache.size.toLocaleString()}
+ **❯ Creation Date:** ${utc(client.user.createdTimestamp).format(
+ "Do MMMM YYYY HH:mm:ss"
+ )}
+ **❯ Node.js:** ${process.version}
+ **❯ Version:** v${version}
+ **❯ Discord.js:** v${djsversion}
+ \u200b`
+ )
+ .setColor(client.color)
+ .addField(
+ "System",
+ `**❯ Platform:** ${process.platform}
+ **❯ Uptime:** ${ms(os.uptime() * 1000, { long: true })}
+ **❯ CPU:**
+ \u3000 Cores: ${os.cpus().length}
+ \u3000 Model: ${core.model}
+ \u3000 Speed: ${core.speed}MHz`
+ )
+ .setTimestamp();
+ await interaction.followUp({ embeds: [embed] });
+ },
+};
diff --git a/command/Information/help.js b/command/Information/help.js
new file mode 100644
index 0000000..644e5b6
--- /dev/null
+++ b/command/Information/help.js
@@ -0,0 +1,181 @@
+const Discord = require("discord.js");
+module.exports = {
+ name: "help",
+ usage: "(Command/Category)",
+ description: "Shows all available bot commands",
+ category: "Information",
+ options: [
+ {
+ type: 3,
+ name: "command",
+ description: "The command you want to see",
+ required: false,
+ },
+ ],
+ run: async (client, interaction, args, utils) => {
+ if (!args[0]) {
+ await interaction.deleteReply();
+ const emoji = {
+ CODM: "",
+ Config: "<:staff:840231971526803467>",
+ Economy: client.currency,
+ Fun: "",
+ Moderation: "🔨",
+ Utilities: "⚙",
+ Music: "",
+ Giveaway: "",
+ Information: "ℹ",
+ };
+ const directories = [
+ ...new Set(client.slashCommands.map(cmd => cmd.directory)),
+ ];
+ const categories = directories.map(dir => {
+ if (dir == "Owner") return;
+ const getCmds = client.slashCommands
+ .filter(c => c.directory == dir)
+ .map(cmd => {
+ return {
+ name: cmd.name || "No command name",
+ };
+ });
+ return {
+ directory: dir,
+ commands: getCmds,
+ };
+ });
+ const embed = new Discord.MessageEmbed()
+ .setTitle(`**${client.user.username} commands**`)
+ .setDescription(`Please choose a category in the dropdown menu`)
+ .setColor(client.color)
+ .setTimestamp()
+ .setAuthor(
+ `Requested by ${interaction.user.tag}`,
+ interaction.user.displayAvatarURL({ dynamic: true })
+ )
+ .addField(
+ "**Invite Link**",
+ `**Invite me to your server by clicking [here](https://discord.com/api/oauth2/authorize?client_id=${client.user.id}&permissions=4231314550&scope=bot%20applications.commands)**`
+ )
+ .addField(
+ "**Support Server Invite**",
+ "**Join the support server by clicking [here](https://discord.gg/SbQHChmGcp)**"
+ )
+ .addField(
+ "**Premium**",
+ "**You can either boost support server or subscribe to developer's team [Ko-fi](https://ko-fi.com/cathteam) or gift a nitro to one of the developer team **"
+ )
+ .setFooter(`Made by ${client.author}`);
+ const components = state => [
+ new Discord.MessageActionRow().addComponents(
+ new Discord.MessageSelectMenu()
+ .setCustomId("help-menu")
+ .setPlaceholder(`Please select a category`)
+ .setDisabled(state)
+ .addOptions(
+ categories.map(cmd => {
+ return {
+ label: cmd.directory,
+ value: cmd.directory,
+ description: `Commands from ${cmd.directory} category`,
+ emoji: emoji[cmd.directory] || null,
+ };
+ })
+ )
+ ),
+ ];
+
+ const msg = await interaction.channel.send({
+ embeds: [embed],
+ components: components(false),
+ });
+ const filter = m => m.user.id === interaction.user.id;
+ const collector = interaction.channel.createMessageComponentCollector({
+ filter,
+ componentType: "SELECT_MENU",
+ time: 60000,
+ });
+ collector.on("collect", async interaction => {
+ const [directory] = interaction.values;
+ const category = categories.find(u => u.directory === directory);
+ const newembed = new Discord.MessageEmbed()
+ .setTitle(
+ `${emoji[directory]}${directory} Commands${emoji[directory]}`
+ )
+ .setAuthor(
+ `Requested by ${interaction.user.tag}`,
+ interaction.user.displayAvatarURL({ dynamic: true })
+ )
+ .setTimestamp()
+ .setColor(client.color)
+ .setFooter(`Please use /help (Command Name) for more details`)
+ .setDescription(
+ category.commands
+ .map(cmd => {
+ return [`\`${cmd.name}\``];
+ })
+ .join(", ")
+ );
+ interaction.reply({ embeds: [newembed] });
+ });
+ collector.on("end", () => msg.edit({ components: components(true) }));
+ } else {
+ const command = client.slashCommands.get(args[0].toLowerCase());
+ if (!command) {
+ await interaction.followUp({
+ content: `There isn't any command or category named "${args[0]}"`,
+ });
+ } else {
+ if (command.UserPerm && Array.isArray(command.UserPerm)) {
+ UserPermissions = command.UserPerm;
+ } else UserPermissions = [command.UserPerm ? command.UserPerm : ""];
+ if (command.BotPerm && Array.isArray(command.BotPerm)) {
+ BotPermissions = command.BotPerm;
+ } else BotPermissions = [command.BotPerm ? command.BotPerm : ""];
+ const BotPerms = BotPermissions.map(x =>
+ x
+ .split("_")
+ .map(y => y[0] + y.substring(1, y.length).toLowerCase())
+ .join(" ")
+ ).join(", ");
+ const UserPerms = UserPermissions.map(x =>
+ x
+ .split("_")
+ .map(y => y[0] + y.substring(1, y.length).toLowerCase())
+ .join(" ")
+ ).join(", ");
+ const embed = new Discord.MessageEmbed()
+ .setTitle(`"${command.name}" command details`)
+ .addField(
+ "**Command**:",
+ command.name ? `\`${command.name}\`` : "N/A"
+ );
+ if (command.usage) {
+ embed.addField("**Usage**:", `\`/${command.name} ${command.usage}\``);
+ } else {
+ embed.addField("**Usage**:", `\`/${command.name}\``);
+ }
+ if (command.description) {
+ embed.addField("**Description**:", command.description);
+ }
+ if (command.timeout) {
+ embed.addField("**Cooldown**:", utils.timer(command.timeout));
+ }
+ if (command.UserPerm) {
+ embed.addField("**Required User Permission**:", UserPerms);
+ }
+ if (command.BotPerm) {
+ embed.addField("**Required Bot Permission**:", BotPerms);
+ }
+ embed
+ .setFooter(
+ `Requested by ${interaction.user.tag}`,
+ interaction.user.displayAvatarURL({ dynamic: true })
+ )
+ .setTimestamp()
+ .setURL(client.web)
+ .setColor(client.color);
+ await interaction.followUp({ embeds: [embed] });
+ }
+ }
+ },
+};
diff --git a/command/Information/messageinfo.js b/command/Information/messageinfo.js
new file mode 100644
index 0000000..92bff21
--- /dev/null
+++ b/command/Information/messageinfo.js
@@ -0,0 +1,41 @@
+const { MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "messageinfo",
+ category: "Information",
+ type: "CHAT_INPUT",
+ description: "Check the info of a message",
+ options: [
+ {
+ type: 3,
+ name: "message",
+ description: "The message you want to see",
+ required: true,
+ },
+ ],
+ run: async (client, interaction, args) => {
+ try {
+ await interaction.channel.messages.fetch(args[0]).catch(async err => {
+ return await interaction.followUp({
+ content: "Message not found in this channel..",
+ });
+ });
+ const msg = await interaction.channel.messages.cache.get(args[0]);
+ const hasImage = msg.attachments.size && msg.attachments.first().width;
+ const embed = new MessageEmbed()
+ .setColor(msg.member ? msg.member.displayHexColor : client.color)
+ .setImage(hasImage ? msg.attachments.first().url : null)
+ .setAuthor(
+ msg.author.tag,
+ msg.author.displayAvatarURL({ format: "png", dynamic: true })
+ )
+ .addField("Content", msg.content || "No content")
+ .setTimestamp(msg.createdAt)
+ .addField("ID", msg.id)
+ .setFooter(`Made by ${client.author}`)
+ .addField("Jump", `[Click Here to Jump](${msg.url})`);
+ return await interaction.followUp({ embeds: [embed] });
+ } catch (err) {
+ console.log(err);
+ }
+ },
+};
diff --git a/command/Information/ping.js b/command/Information/ping.js
new file mode 100644
index 0000000..eb99fab
--- /dev/null
+++ b/command/Information/ping.js
@@ -0,0 +1,31 @@
+const { MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "ping",
+ description: "Check bot latency to Discord API",
+ type: "CHAT_INPUT",
+ category: "Information",
+ run: async (client, interaction, args) => {
+ const msg = await interaction.channel.send(`Pinging...`);
+ const messageping = msg.createdTimestamp - interaction.createdTimestamp;
+ await msg.delete();
+ const Embed = new MessageEmbed()
+ .setTitle("🏓 Pong!")
+ .setAuthor(
+ `${interaction.user.username}`,
+ interaction.user.displayAvatarURL()
+ )
+ .setDescription(
+ `📨 • **Message Latency** \`${Math.floor(
+ messageping
+ )}ms\`\n🛰️ • **Bot Latency** \`${Math.round(client.ws.ping)}ms\``
+ )
+ .setColor(
+ messageping < 350
+ ? "GREEN"
+ : messageping < 500 && messageping > 350
+ ? "YELLOW"
+ : "RED"
+ );
+ await interaction.followUp({ embeds: [Embed] });
+ },
+};
diff --git a/command/Information/roleinfo.js b/command/Information/roleinfo.js
new file mode 100644
index 0000000..2c6dfdb
--- /dev/null
+++ b/command/Information/roleinfo.js
@@ -0,0 +1,85 @@
+const { CommandInteracion, Client, MessageEmbed } = require("discord.js");
+const moment = require("moment");
+module.exports = {
+ name: "roleinfo",
+ description: "Get information of a role",
+ category: "Infromation",
+ options: [
+ {
+ name: "role",
+ type: "ROLE",
+ description: "The role you want to see",
+ required: true,
+ },
+ ],
+ type: "CHAT_INPUT",
+ /**
+ *
+ * @param {Client} client
+ * @param {CommandInteracion} interaction
+ * @param {String[]} args
+ */
+ run: async (client, interaction, args, utils) => {
+ const role = interaction.guild.roles.cache.get(args[0]);
+ const position = `\`${
+ interaction.guild.roles.cache.size - role.position
+ }\`/\`${interaction.guild.roles.cache.size}\``;
+ const embed = new MessageEmbed()
+ .setTimestamp()
+ .setURL(client.web)
+ .setAuthor(
+ interaction.member.nickname,
+ interaction.user.displayAvatarURL({ dynamic: true })
+ )
+ .setTitle("Role Info")
+ .setFooter(`Made by ${client.author}`)
+ .setColor(role.color)
+ .addFields(
+ {
+ name: "ID",
+ value: role.id,
+ },
+ {
+ name: "Name",
+ value: role.name,
+ inline: true,
+ },
+ {
+ name: "Color",
+ value: role.hexColor,
+ inline: true,
+ },
+ {
+ name: "Position",
+ value: position,
+ inline: true,
+ },
+ {
+ name: `Hoisted`,
+ value: `${role.hoist ? "Yes" : "No"}`,
+ inline: true,
+ },
+ {
+ name: "Mentionable",
+ value: `${role.mentionable ? "Yes" : "No"}`,
+ inline: true,
+ },
+ {
+ name: "Bot Role",
+ value: `${role.managed ? "Yes" : "No"}`,
+ inline: true,
+ },
+ {
+ name: "Creation Date",
+ value: `\`${moment(role.createdAt).format("DD/MMM/YYYY")}\``,
+ inline: true,
+ },
+ {
+ name: "Permissions",
+ value: utils.fixPermissions(role.permissions.toArray()),
+ inline: true,
+ }
+ );
+ await interaction.followUp({ embeds: [embed] });
+ },
+};
diff --git a/command/Information/servericon.js b/command/Information/servericon.js
new file mode 100644
index 0000000..c5bd48a
--- /dev/null
+++ b/command/Information/servericon.js
@@ -0,0 +1,17 @@
+const { MessageEmbed } = require("discord.js");
+
+module.exports = {
+ name: "servericon",
+ description: "View the icon of the server",
+ category: "Information",
+ type: "CHAT_INPUT",
+ run: async (client, interaction, args) => {
+ const Embed = new MessageEmbed()
+ .setTitle(`Icon of ${interaction.guild.name}`)
+ .setURL(client.web)
+ .setTimestamp()
+ .setFooter(`Requested by ${interaction.user.tag}`)
+ .setImage(interaction.guild.iconURL({ dynamic: true, size: 2048 }));
+ await interaction.followUp({ embeds: [Embed] });
+ },
+};
diff --git a/command/Information/serverinfo.js b/command/Information/serverinfo.js
new file mode 100644
index 0000000..3d1017b
--- /dev/null
+++ b/command/Information/serverinfo.js
@@ -0,0 +1,155 @@
+const { MessageEmbed } = require("discord.js");
+const moment = require("moment");
+const filterLevels = {
+ DISABLED: "Off",
+ MEMBERS_WITHOUT_ROLES: "No Role",
+ ALL_MEMBERS: "Everyone",
+};
+
+const verificationLevels = {
+ NONE: "None",
+ LOW: "Low",
+ MEDIUM: "Medium",
+ HIGH: "High",
+ VERY_HIGH: "Very High",
+};
+
+const regions = {
+ brazil: "Brazil",
+ europe: "Europe",
+ hongkong: "Hong Kong",
+ india: "India",
+ japan: "Japan",
+ russia: "Russia",
+ singapore: "Singapore",
+ southafrica: "South Africa",
+ sydeny: "Sydeny",
+ "us-central": "US Central",
+ "us-east": "US East",
+ "us-west": "US West",
+ "us-south": "US South",
+};
+
+module.exports = {
+ name: "serverinfo",
+ description: "Check the info of the server",
+ category: "Information",
+ type: "CHAT_INPUT",
+ options: [
+ {
+ type: 3,
+ name: "server",
+ description: "The server you want to see (Paste Server ID)",
+ required: false,
+ },
+ ],
+ run: async (client, interaction, args, utils) => {
+ try {
+ const g = client.guilds.cache.get(args[0]) || interaction.guild;
+ const vanityCode = g.vanityURLCode;
+ let vanityInvite = `https://discord.gg/${vanityCode}`;
+ if (vanityCode === null) vanityInvite = "No custom URL";
+ const members = g.members.cache;
+ const roles = g.roles.cache
+ .sort((a, b) => b.position - a.position)
+ .map(role => role.toString());
+ const owner = await g.fetchOwner();
+ const voiceChannel = g.channels.cache.filter(
+ ch => ch.type === "GUILD_VOICE"
+ ).size;
+ const textChannel = g.channels.cache.filter(
+ ch => ch.type === "GUILD_TEXT"
+ ).size;
+ const categoryChannel = g.channels.cache.filter(
+ ch => ch.type === "GUILD_CATEGORY"
+ ).size;
+ const embed = new MessageEmbed()
+ .setTimestamp()
+ .setTitle("**Server Information**")
+ .setAuthor(`${g.name}`, g.iconURL({ dynamic: true }))
+ .setColor(client.color)
+ .setThumbnail(g.iconURL({ dynamic: true, size: 1024 }))
+ .addField(`🎫 Name of server:`, g.name, true)
+ .addField(`🆔 ID of server`, g.id, true)
+ .addField(`🔗 Vanity Link`, `${vanityInvite}`, true)
+ .addField("👩💻 Owner", `${owner}`, true)
+ .addField("👩💻 Owner ID", `\`${owner.id}\``, true)
+ .addField(`👥 No. of Members`, g.memberCount.toString(), true)
+ .addField(
+ `🤖 No. of Bots:`,
+ members.filter(member => member.user.bot).size.toString(),
+ true
+ )
+ .addField(
+ `🚶 Humans:`,
+ members.filter(member => !member.user.bot).size.toString(),
+ true
+ )
+ .addField(
+ "🧷 Channels",
+ `#️⃣ ${textChannel} **Text** Channels\n 🔊 ${voiceChannel} **Voice** Channels\n 📁 ${categoryChannel} **Categories**`,
+ true
+ )
+ .addField(`😗 Emojis:`, g.emojis.cache.size.toString(), true)
+ .addField(
+ `👻 Animated Emoji\'s:`,
+ g.emojis.cache.filter(emoji => emoji.animated).size.toString(),
+ true
+ )
+ .addField(
+ `👔 Roles [${roles.length}]`,
+ roles.length < 10
+ ? roles.join(" **|** ")
+ : roles.length > 10
+ ? `${roles.slice(0, 10).join(" **|** ")}\n+${
+ roles.length - 10
+ } roles...`
+ : "None",
+ true
+ )
+ .addField(`📃 Description`, g.description || "No Description", true)
+ .addField(
+ `♨ Boost`,
+ `Tier: ${
+ g.premiumTier == "TIER_3"
+ ? "3"
+ : g.premiumTier == "TIER_2"
+ ? "2"
+ : g.premiumTier == "TIER_1"
+ ? "1"
+ : "0"
+ }\nCount: ${g.premiumSubscriptionCount || "0"}`,
+ true
+ )
+ .addField(
+ "💢 Explicit Filter",
+ filterLevels[g.explicitContentFilter],
+ true
+ )
+ .addField(
+ `🚧 Verification Level`,
+ verificationLevels[g.verificationLevel],
+ true
+ )
+ .addField(
+ "🗺 Community Features",
+ utils.fixFeatures(g.features) || "No Community Features",
+ true
+ )
+ .addField("👨🏻🤝👨🏻 Partnered", g.partnered ? "Yes" : "No", true)
+ .addField("✅ Verified", g.verified ? "Yes" : "No", true)
+ .addField(
+ `📅 Created at`,
+ `${moment(g.createdTimestamp).format("LL")} ${moment(
+ g.createdTimestamp
+ ).format("LTS")} (${moment(g.createdTimestamp).fromNow()})`,
+ true
+ )
+ .setURL(client.web)
+ .setFooter(`Made by ${client.author}`);
+ await interaction.followUp({ embeds: [embed] });
+ } catch (e) {
+ console.log(e);
+ }
+ },
+};
diff --git a/command/Information/userinfo.js b/command/Information/userinfo.js
new file mode 100644
index 0000000..4946f46
--- /dev/null
+++ b/command/Information/userinfo.js
@@ -0,0 +1,134 @@
+const { MessageEmbed } = require("discord.js");
+const moment = require("moment");
+
+module.exports = {
+ name: "userinfo",
+ description: "Check the info of a user",
+ usage: "{User}",
+ category: "Information",
+ options: [
+ {
+ type: 6,
+ name: "user",
+ description: "The user you want to see",
+ required: false,
+ },
+ ],
+ type: "CHAT_INPUT",
+ run: async (client, interaction, args, utils) => {
+ const member =
+ interaction.guild.members.cache.get(args[0]) || interaction.member;
+ const flags = {
+ DISCORD_EMPLOYEE: "Discord Staff<:staff:840231971526803467>",
+ PARTNERED_SERVER_OWNER:
+ "Partnered Server Owner<:partner:840231939944480829>",
+ BUGHUNTER_LEVEL_1: "Discord Bug Hunter<:bughunter:840231967600803920>",
+ BUGHUNTER_LEVEL_2: "Discord Bug Hunter<:bughunterlv2:840231970017771571>",
+ HYPESQUAD_EVENTS: "HypeSquad Events<:HypeSquad:840231908599922721>",
+ HOUSE_BRAVERY: "HypeSquad Bravery<:bravery:840231941974655007>",
+ HOUSE_BRILLIANCE: "HypeSquad Brilliance<:brilliance:840231943764443136>",
+ HOUSE_BALANCE: "HypeSquad Balance<:balance:840231925876523018>",
+ EARLY_SUPPORTER: "Early Supporter<:earlysupporter:840231983216984085>",
+ TEAM_USER: "Team User",
+ SYSTEM: "System",
+ VERIFIED_BOT: "Verified Bot<:VerifiedBot:840231982054375425>",
+ EARLY_VERIFIED_BOT_DEVELOPER:
+ "Early Verified Bot Developer<:discord_bot_dev:840231906200387666>",
+ DISCORD_CERTIFIED_MODERATOR: "Discord Certified Moderator",
+ };
+ let status;
+ switch (member.presence.status) {
+ case "online":
+ status = "<:online:840231921123721237>Online";
+ break;
+ case "dnd":
+ status = "<:do_not_disturb:840231907715448842>Do Not Disturb";
+ break;
+ case "idle":
+ status = "<:idle:840231935485149184>Idle";
+ break;
+ case "offline":
+ status = "<:offline:840231954897305620>Offline";
+ break;
+ }
+ let x = Date.now() - member.user.createdAt;
+ let y =
+ Date.now() - interaction.guild.members.cache.get(member.id).joinedAt;
+ let created = Math.floor(x / 86400000);
+ let joined = Math.floor(y / 86400000);
+ let nickname =
+ member.nickname !== undefined && member.nickname !== null
+ ? member.nickname
+ : "None";
+ const roles = member.roles.cache
+ .filter(r => r.id != interaction.guild.id)
+ .sort((a, b) => b.position - a.position)
+ .map(role => role.toString())
+ .slice(0, -1);
+ const userFlags = member.user.flags.toArray();
+ let createdate = moment(member.user.createdAt).format(
+ "dddd, MMMM Do YYYY, HH:mm:ss"
+ );
+ let joindate = moment(member.joinedAt).format(
+ "dddd, MMMM Do YYYY, HH:mm:ss"
+ );
+ let activities;
+ if (member.presence.activities[0] && member.presence.activities[1]) {
+ activities = member.presence.activities[1].name;
+ } else if (
+ member.presence.activities[0] &&
+ !member.presence.activities[1]
+ ) {
+ activities = "None";
+ } else activities = "None";
+ const embed = new MessageEmbed()
+ .setAuthor(
+ member.user.tag,
+ member.user.displayAvatarURL({ dynamic: true, size: 2048 })
+ )
+ .setTimestamp()
+ .setColor(client.color)
+ .setURL(client.web)
+ .setFooter(`Made by ${client.author}`)
+ .setThumbnail(member.user.displayAvatarURL({ dynamic: true, size: 512 }))
+ .setColor(member.displayHexColor || "02023a")
+ .addField(
+ "User",
+ `**❯ Username:** ${member.user.username}
+ **❯ Discriminator:** ${member.user.discriminator}
+ **❯ Nickname:** ${nickname}
+ **❯ ID:** ${member.id}
+ **❯ Flags:** ${
+ userFlags.length
+ ? userFlags.map(flag => flags[flag]).join(" **|** ")
+ : "None"
+ }
+ **❯ Avatar:** [Link to avatar](${member.user.displayAvatarURL({
+ dynamic: true,
+ size: 2048,
+ })})
+ **❯ Time Created:** ${createdate} \nSince ${created} day(s) ago
+ **❯ Status:** ${status}
+ **❯ Game:** ${activities}
+ \u200b`
+ )
+ .addField(
+ "Member",
+ `**❯ Highest Role:** ${
+ member.roles.highest.id === interaction.guild.id
+ ? "None"
+ : member.roles.highest.name
+ }
+ **❯ Server Join Date:** ${joindate} \nSince ${joined} day(s) ago
+ **❯ Roles [${roles.length}]:** ${
+ roles.length < 10
+ ? roles.join(" **|** ")
+ : roles.length > 10
+ ? utils.trimArray(roles)
+ : "None"
+ }
+ \u200b`
+ );
+ await interaction.followUp({ embeds: [embed] });
+ },
+};
diff --git a/command/Moderation/purge.js b/command/Moderation/purge.js
new file mode 100644
index 0000000..28ad3ba
--- /dev/null
+++ b/command/Moderation/purge.js
@@ -0,0 +1,67 @@
+const { MessageEmbed } = require("discord.js");
+
+module.exports = {
+ name: "clear",
+ description: "Clear messages in a specific channel",
+ options: [
+ {
+ name: "channel",
+ description: "Channel where the messages to be deleted",
+ type: "CHANNEL",
+ required: true,
+ },
+ {
+ name: "amount",
+ description: "Amount of message in range of 1-100 to be deleted",
+ type: "NUMBER",
+ required: true,
+ },
+ ],
+ type: "CHAT_INPUT",
+ run: async (client, interaction, args) => {
+ let query = interaction.options.get("amount");
+ let ch = interaction.options.get("channel");
+ let channel = interaction.guild.channels.cache.get(ch.value);
+ if (query.value > 100) {
+ return interaction.followUp({
+ content: "The amount of messages must be in range of 1-100",
+ });
+ }
+ if (channel.type !== "GUILD_TEXT") {
+ return interaction.followUp({
+ content: "Please provide a text channel instead of voice or category",
+ });
+ }
+ await channel.bulkDelete(query.value, true).then(async m => {
+ const msg = await channel.send({
+ embeds: [
+ new MessageEmbed()
+ .setTitle(`Message Cleared`)
+ .addField(
+ "**Moderator**",
+ `${
+ interaction.member.nickname
+ ? interaction.member.nickname
+ : interaction.user.username
+ }`,
+ true
+ )
+ .addField(
+ "Amount of Message Deleted",
+ `${m.size}/${query.value}`,
+ true
+ )
+ .setTimestamp()
+ .setFooter(
+ interaction.member.nickname
+ ? interaction.member.nickname
+ : interaction.user.username,
+ interaction.user.displayAvatarURL({ dynamic: true })
+ )
+ .setColor(client.color),
+ ],
+ });
+ setTimeout(() => msg.delete(), 10000);
+ });
+ },
+};
diff --git a/command/Owner/eval.js b/command/Owner/eval.js
new file mode 100644
index 0000000..b9c1627
--- /dev/null
+++ b/command/Owner/eval.js
@@ -0,0 +1,125 @@
+const Discord = require("discord.js");
+module.exports = {
+ name: "eval",
+ category: "Owner",
+ aliases: ["e"],
+ usage: "(Code)",
+ Owner: true,
+ description: "Eval something",
+ type: "CHAT_INPUT",
+ options: [
+ {
+ type: 3,
+ name: "code",
+ description: "The code to eval",
+ required: true,
+ },
+ ],
+ run: async (client, interaction, args) => {
+ let code = args[0];
+ function CheckFilter(object) {
+ if (typeof object === "string") {
+ object = object.replace(
+ new RegExp(client.token || process.env.TOKEN, "gi"),
+ "Cannot eval Token"
+ );
+ } else if (typeof object === "object") {
+ if (Array.isArray(object)) {
+ for (let i = 0; i < object.length; i++) {
+ object[i] = CheckFilter(object[i]);
+ }
+ } else {
+ for (let key in object) {
+ object[key] = CheckFilter(object[key]);
+ }
+ }
+ }
+ return object;
+ }
+ let oldSend = Discord.TextChannel.prototype.send;
+ Discord.TextChannel.prototype.send = async function send(content, options) {
+ return oldSend.bind(this)(CheckFilter(content), CheckFilter(options));
+ };
+ let evaled;
+ try {
+ evaled = eval(code);
+ if (evaled instanceof Promise) evaled = await evaled;
+ } catch (err) {
+ evaled = err;
+ }
+ if (typeof evaled !== "string") evaled = require("util").inspect(evaled);
+ evaled = new (require("string-toolkit"))().toChunks(evaled, 750);
+ let reactions = ["❌", "⏪", "◀️", "⏹️", "▶️", "⏩"],
+ page = 0,
+ evaledEmbed = new Discord.MessageEmbed()
+ .setColor(client.color)
+ .setDescription(`\`\`\`js\n${evaled[0]}\n\`\`\``)
+ .setTimestamp()
+ .setAuthor(
+ `Evaled by ${interaction.user.tag}`,
+ interaction.user.displayAvatarURL({ dynamic: true })
+ )
+ .addField(`Type of`, `\`\`\`js\n${typeof evaled[0]}\n\`\`\``);
+ let mainMessage = await interaction.channel.send({ embeds: [evaledEmbed] });
+ Discord.TextChannel.prototype.send = oldSend;
+ await Promise.all(
+ (evaled.length === 1 ? ["❌", "⏹️"] : reactions).map(r =>
+ mainMessage.react(r)
+ )
+ );
+ let filter = (reaction, user) =>
+ (evaled.length === 1 ? ["❌", "⏹️"] : reactions).some(
+ e => e === reaction.emoji.name
+ ) && user.id === interaction.user.id;
+ let collector = mainMessage.createReactionCollector(filter, {
+ time: 300000,
+ });
+ collector.on("collect", async (reaction, user) => {
+ switch (reaction.emoji.name) {
+ case "❌":
+ await collector.stop();
+ return mainMessage.delete();
+ break;
+ case "⏪":
+ if (evaled.length === 1 || page === 0) return;
+ page = 0;
+ break;
+ case "◀️":
+ if (evaled.length === 1) return;
+ if (page === 0) {
+ page = evaled.length - 1;
+ } else {
+ page -= 1;
+ }
+ break;
+ case "⏹️":
+ await collector.stop();
+ for (let reaction of mainMessage.reactions.cache.map(e => e)) {
+ await reaction.users.remove(client.user.id);
+ }
+ return;
+ break;
+ case "▶️":
+ if (evaled.length === 1) return;
+ if (page === evaled.length - 1) {
+ page = 0;
+ } else {
+ page += 1;
+ }
+ break;
+ case "⏩":
+ if (evaled.length === 1 || page === evaled.length - 1) return;
+ page = evaled.length - 1;
+ break;
+ }
+ evaledEmbed = new Discord.MessageEmbed()
+ .setColor(interaction.guild.me.displayColor)
+ .setDescription(`\`\`\`js\n${evaled[page]}\n\`\`\``)
+ .addField(`Type of`, `\`\`\`js\n${typeof evaled[page]}\n\`\`\``);
+
+ await mainMessage.edit({
+ embeds: [evaledEmbed],
+ });
+ });
+ },
+};
diff --git a/command/Owner/guilds.js b/command/Owner/guilds.js
new file mode 100644
index 0000000..9f1bd65
--- /dev/null
+++ b/command/Owner/guilds.js
@@ -0,0 +1,24 @@
+const { MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "guilds",
+ category: "Owner",
+ description: "Check top 10 guilds of the bot",
+ Owner: true,
+ run: async (client, interaction, args) => {
+ const guilds = client.guilds.cache
+ .sort((a, b) => b.memberCount - a.memberCount)
+ .first(10);
+ const description = guilds
+ .map((guild, index) => {
+ return `${index + 1}) ${guild.name} -> ${guild.memberCount} members`;
+ })
+ .join("\n");
+ let embed = new MessageEmbed()
+ .setTitle("Guilds")
+ .setDescription(description)
+ .setColor(client.color)
+ .setFooter(`Made by ${client.author}`)
+ .setTimestamp();
+ interaction.followUp({ embeds: [embed] });
+ },
+};
diff --git a/command/Owner/restart.js b/command/Owner/restart.js
new file mode 100644
index 0000000..10712dc
--- /dev/null
+++ b/command/Owner/restart.js
@@ -0,0 +1,13 @@
+module.exports = {
+ name: "restart",
+ category: "Owner",
+ description: "Restart the bot",
+ Owner: true,
+ run: async (client, interaction, args) => {
+ const msg = await interaction.channel.send("Restarting...");
+ await client.destroy();
+ await client.login(process.env.TOKEN);
+ await msg.delete();
+ await interaction.followUp("Restarted");
+ },
+};
diff --git a/command/Utilities/afk.js b/command/Utilities/afk.js
new file mode 100644
index 0000000..cc1d41a
--- /dev/null
+++ b/command/Utilities/afk.js
@@ -0,0 +1,35 @@
+const { MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "afk",
+ description: "Tell someone you are AFK.",
+ usage: "{Status}",
+ category: "Utilities",
+ type: "CHAT_INPUT",
+ options: [
+ {
+ type: 3,
+ name: "status",
+ description: "The status that shows to user while you are AFK",
+ required: false,
+ },
+ ],
+ run: async (client, interaction, args) => {
+ let uuser = interaction.guild.members.cache.get(interaction.user.id);
+ const content = args[0] || "No status provided.";
+ uuser.setNickname(`[AFK]${interaction.user.username}`);
+ await client.data.AFK(interaction.user.id, content);
+ const embed = new MessageEmbed()
+ .setDescription(
+ `${interaction.user.username} is set into AFK.\nStatus : ${content}`
+ )
+ .setTimestamp()
+ .setFooter(`Made by ${client.author}`)
+ .setColor(client.color)
+ .setAuthor(
+ interaction.user.username,
+ interaction.user.displayAvatarURL({ dynamic: true })
+ )
+ .setURL(client.web);
+ await interaction.followUp({ embeds: [embed] });
+ },
+};
diff --git a/command/Utilities/docs.js b/command/Utilities/docs.js
new file mode 100644
index 0000000..a58e228
--- /dev/null
+++ b/command/Utilities/docs.js
@@ -0,0 +1,27 @@
+const fetch = require("node-fetch");
+module.exports = {
+ name: "docs",
+ usage: "(Query)",
+ description: "Search the discord.js docs for something!",
+ type: "CHAT_INPUT",
+ options: [
+ {
+ type: 3,
+ name: "query",
+ description: "The query you want to search",
+ required: true,
+ },
+ ],
+ run: async (client, interaction, args) => {
+ const query = args.join(" ");
+ fetch(
+ `https://djsdocs.sorta.moe/v2/embed?src=stable&q=${encodeURIComponent(
+ query
+ )}`
+ )
+ .then(res => res.json())
+ .then(async data => {
+ await interaction.followUp({ embeds: [data] });
+ });
+ },
+};
diff --git a/command/Utilities/emoji.js b/command/Utilities/emoji.js
new file mode 100644
index 0000000..a608580
--- /dev/null
+++ b/command/Utilities/emoji.js
@@ -0,0 +1,83 @@
+const { Util } = require("discord.js");
+module.exports = {
+ name: "emoji",
+ usage: "(Emoji)",
+ description: "Show an emoji URL",
+ category: "Utilities",
+ type: "CHAT_INPUT",
+ options: [
+ {
+ type: 3,
+ name: "first",
+ description: "The first emoji",
+ required: true,
+ },
+ {
+ type: 3,
+ name: "second",
+ description: "The second emoji",
+ required: false,
+ },
+ {
+ type: 3,
+ name: "third",
+ description: "The third emoji",
+ required: false,
+ },
+ {
+ type: 3,
+ name: "forth",
+ description: "The forth emoji",
+ required: false,
+ },
+ {
+ type: 3,
+ name: "fifth",
+ description: "The fifth emoji",
+ required: false,
+ },
+ {
+ type: 3,
+ name: "sixth",
+ description: "The sixth emoji",
+ required: false,
+ },
+ {
+ type: 3,
+ name: "seventh",
+ description: "The seventh emoji",
+ required: false,
+ },
+ {
+ type: 3,
+ name: "eighth",
+ description: "The eighth emoji",
+ required: false,
+ },
+ {
+ type: 3,
+ name: "ninth",
+ description: "The ninth emoji",
+ required: false,
+ },
+ {
+ type: 3,
+ name: "tenth",
+ description: "The tenth emoji",
+ required: false,
+ },
+ ],
+ run: async (client, interaction, args) => {
+ await interaction.deleteReply();
+ for (const rawEmoji of args) {
+ const parsedEmoji = Util.parseEmoji(rawEmoji);
+ if (parsedEmoji.id) {
+ const extension = parsedEmoji.animated ? ".gif" : ".png";
+ const url = `https://cdn.discordapp.com/emojis/${
+ parsedEmoji.id + extension
+ }`;
+ await interaction.channel.send({ content: `Emoji URL:\n${url}` });
+ }
+ }
+ },
+};
diff --git a/command/Utilities/hexcolor.js b/command/Utilities/hexcolor.js
new file mode 100644
index 0000000..5545a30
--- /dev/null
+++ b/command/Utilities/hexcolor.js
@@ -0,0 +1,85 @@
+const Canvas = require("canvas");
+const { MessageEmbed, MessageAttachment } = require("discord.js");
+const axios = require("axios");
+
+module.exports = {
+ name: "hexcolor",
+ usage: "(Hex Color Code)",
+ description: "Get Hex and RGB info of a color",
+ category: "Utilities",
+ type: "CHAT_INPUT",
+ options: [
+ {
+ type: 3,
+ name: "code",
+ description: "Color code you want to see (Example: #FF0000)",
+ required: true,
+ },
+ ],
+ run: async (client, interaction, args) => {
+ let color;
+ if (args[0]) {
+ if (/(#|0x)([0-9A-F]{6})/i.test(args[0])) {
+ color = args[0].match(/(#|0x)([0-9A-F]{6})/i)[2];
+ } else {
+ return await interaction.followUp({
+ content: "Please give a valid Hex Color Code",
+ });
+ }
+ } else {
+ color = interaction.member.displayHexColor;
+ }
+ try {
+ const aa = color.replace("#", "", "0x", "");
+ const colour = await axios.get(
+ `https://www.thecolorapi.com/scheme?hex=${aa}`
+ );
+ const canvas = Canvas.createCanvas(200, 200);
+ const ctx = canvas.getContext("2d");
+ ctx.beginPath();
+ ctx.rect(0, 0, 200, 200);
+ ctx.fillStyle = `${colour.data.seed.hex.value}`;
+ ctx.fill();
+ const rightpic = new MessageAttachment(canvas.toBuffer(), "wea.jpg");
+ const canvasx = Canvas.createCanvas(500, 100);
+ const ctxt = canvasx.getContext("2d");
+ let y = canvasx.height / 2;
+ ctxt.font = "12px Roboto";
+ ctxt.textAlign = "center";
+ let addup = 0;
+ for (let i = 0; i < 5; i++) {
+ ctxt.beginPath();
+ ctxt.rect(addup, 0, 100, 100);
+ ctxt.fillStyle = `${colour.data.colors[i].hex.value}`;
+ ctxt.fill();
+ addup = addup + 100;
+ ctxt.beginPath();
+ ctxt.rect(addup - 80, y - 15, 60, 30);
+ ctxt.fillStyle = `black`;
+ ctxt.fill();
+ ctxt.fillStyle = `white`;
+ ctxt.fillText(
+ `${colour.data.colors[i].hex.value}`,
+ addup - 51,
+ y + 4.3
+ );
+ }
+ const attachment = new MessageAttachment(canvasx.toBuffer(), "color.jpg");
+ const embed = new MessageEmbed()
+ .setColor(`0x${colour.data.seed.hex.value}`)
+ .setDescription(
+ `\`HEX: ${colour.data.seed.hex.value} RGB: ${colour.data.seed.rgb.value}\`\n🔽Color Scheme🔽`
+ )
+ .setTitle("Color Information (Click here for more info)")
+ .setURL(`https://www.colorhexa.com/${colour.data.seed.hex.clean}`)
+ .setImage("attachment://color.jpg")
+ .setThumbnail("attachment://wea.jpg");
+ await interaction.followUp({
+ embeds: [embed],
+ files: [attachment, rightpic],
+ });
+ } catch (e) {
+ console.log(e);
+ }
+ },
+};
diff --git a/command/Utilities/invite.js b/command/Utilities/invite.js
new file mode 100644
index 0000000..e4af966
--- /dev/null
+++ b/command/Utilities/invite.js
@@ -0,0 +1,32 @@
+const { MessageEmbed } = require("discord.js");
+
+module.exports = {
+ name: "invite",
+ description: "Get bot invite link or get support",
+ category: "Utilities",
+ type: "CHAT_INPUT",
+ run: async (client, interaction, args) => {
+ var embed = new MessageEmbed()
+ .setFooter(`Made by ${client.author}`)
+ .setColor(client.color)
+ .setTimestamp()
+ .setAuthor(
+ interaction.member.user.tag,
+ interaction.user.displayAvatarURL({ dynamic: true })
+ )
+ .setTitle(`Support/Invite`)
+ .addField(
+ "**Invite Link**",
+ `**Invite me to your server by clicking [here](https://discord.com/api/oauth2/authorize?client_id=${client.user.id}&permissions=4231314550&scope=bot%20applications.commands)**`
+ )
+ .addField(
+ "**Support Server Invite**",
+ "**Join the support server by clicking [here](https://discord.gg/SbQHChmGcp)**"
+ )
+ .addField(
+ "**Premium**",
+ "**You can either boost support server or subscribe to developer's team [Ko-fi](https://ko-fi.com/cathteam) or gift a nitro to one of the developer team **"
+ );
+ await interaction.followUp({ embeds: [embed] });
+ },
+};
diff --git a/command/Utilities/permission.js b/command/Utilities/permission.js
new file mode 100644
index 0000000..58aa679
--- /dev/null
+++ b/command/Utilities/permission.js
@@ -0,0 +1,118 @@
+const { MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "permission",
+ usage: "(User)",
+ description: "Show user's permission in server/channel",
+ category: "Utilities",
+ type: "CHAT_INPUT",
+ options: [
+ {
+ type: 6,
+ name: "user",
+ description: "The use you want to see",
+ required: false,
+ },
+ ],
+ run: async (client, interaction, args, utils) => {
+ const yes = "✔️";
+ const no = "❌";
+ const x = "```";
+ const s = "📛";
+ const c = "♨️";
+
+ const permissions = [
+ "CREATE_INSTANT_INVITE",
+ "KICK_MEMBERS",
+ "BAN_MEMBERS",
+ "ADMINISTRATOR",
+ "MANAGE_CHANNELS",
+ "MANAGE_GUILD",
+ "ADD_REACTIONS",
+ "VIEW_AUDIT_LOG",
+ "PRIORITY_SPEAKER",
+ "STREAM",
+ "VIEW_CHANNEL",
+ "SEND_MESSAGES",
+ "SEND_TTS_MESSAGES",
+ "MANAGE_MESSAGES",
+ "EMBED_LINKS",
+ "ATTACH_FILES",
+ "READ_MESSAGE_HISTORY",
+ "MENTION_EVERYONE",
+ "USE_EXTERNAL_EMOJIS",
+ "VIEW_GUILD_INSIGHTS",
+ "CONNECT",
+ "SPEAK",
+ "STREAM",
+ "MUTE_MEMBERS",
+ "DEAFEN_MEMBERS",
+ "MOVE_MEMBERS",
+ "USE_VAD",
+ "CHANGE_NICKNAME",
+ "MANAGE_NICKNAMES",
+ "MANAGE_ROLES",
+ "MANAGE_WEBHOOKS",
+ "MANAGE_EMOJIS_AND_STICKER",
+ "USE_VAD",
+ "PRIORITY_SPEAKER",
+ "REQUEST_TO_SPEAK",
+ "MANAGE_THREADS",
+ "USE_PUBLIC_THREADS",
+ "USE_PRIVATE_THREADS",
+ "USE_EXTERNAL_STICKERS",
+ "USE_APPLICATION_COMMANDS",
+ ];
+
+ let user =
+ interaction.guild.members.cache.get(args[0]) || interaction.member;
+ let userId = user.user.id;
+ let description = `Server - ${s}\nCurrent channel - ${c}\n\n${s} | ${c}\n`;
+ let embed = new MessageEmbed()
+ .setTitle(`${user.user.username} Permissions`)
+ .setColor(user.displayColor)
+ .setURL(client.web);
+ permissions.forEach(perm => {
+ description += `${user.permissions.has(perm) ? yes : no} | ${
+ interaction.channel.permissionsFor(userId).has(perm) ? yes : no
+ } - ${perm
+ .replace("CREATE_INSTANT_INVITE", "Create Invite")
+ .replace("KICK_MEMBERS", "Kick Members")
+ .replace("BAN_MEMBERS", "Ban Members")
+ .replace("ADMINISTRATOR", "Administrator")
+ .replace("MANAGE_CHANNELS", "Manage Channels")
+ .replace("MANAGE_GUILD", "Manage Guild")
+ .replace("ADD_REACTIONS", "Add Reactions")
+ .replace("VIEW_AUDIT_LOG", "View Audit Log")
+ .replace("PRIORITY_SPEAKER", "Priority Speaker")
+ .replace("STREAM", "Video")
+ .replace("VIEW_CHANNEL", "View Channel")
+ .replace("SEND_MESSAGES", "Send Messages")
+ .replace("SEND_TTS_MESSAGES", "Send TTS Messages")
+ .replace("MANAGE_MESSAGES", "Manage Messages")
+ .replace("EMBED_LINKS", "Embed Links")
+ .replace("ATTACH_FILES", "Attach Files")
+ .replace("READ_MESSAGE_HISTORY", "Read Message History")
+ .replace("MENTION_EVERYONE", "Mention Everyone")
+ .replace("USE_EXTERNAL_EMOJIS", "Use External Emojis")
+ .replace("VIEW_GUILD_INSIGHTS", "View Guild Insights")
+ .replace("CONNECT", "Connect")
+ .replace("SPEAK", "Speak")
+ .replace("MUTE_MEMBERS", "Mute Members")
+ .replace("DEAFEN_MEMBERS", "Defean Members")
+ .replace("MOVE_MEMBERS", "Move Members")
+ .replace("USE_VAD", "Use VAD")
+ .replace("CHANGE_NICKNAME", "Change Nickname")
+ .replace("MANAGE_NICKNAMES", "Manage Nicknames")
+ .replace("MANAGE_ROLES", "Manage Roles")
+ .replace("MANAGE_WEBHOOKS", "Manage Webhooks")
+ .replace("MANAGE_EMOJIS_AND_STICKER", "Manage Emojis and Sticker")
+ .replace("MANAGE_THREADS", "Manage Threads")
+ .replace("USE_PUBLIC_THREADS", "Use Public Threads")
+ .replace("USE_PRIVATE_THREADS", "Use Private Threads")
+ .replace("USE_EXTERNAL_STICKERS", "Use External Stickers")
+ .replace("USE_APPLICATION_COMMANDS", "Use Application Commands")}\n`;
+ });
+ embed.setDescription(x + description + x);
+ await interaction.followUp({ embeds: [embed] });
+ },
+};
diff --git a/command/Utilities/poll.js b/command/Utilities/poll.js
new file mode 100644
index 0000000..0ae5717
--- /dev/null
+++ b/command/Utilities/poll.js
@@ -0,0 +1,37 @@
+const { MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "poll",
+ description: "Start a poll in a channel",
+ category: "Utilities",
+ type: "CHAT_INPUT",
+ options: [
+ {
+ type: 3,
+ name: "description",
+ description: "The description of the poll",
+ required: true,
+ },
+ {
+ type: 7,
+ name: "channel",
+ description: "The channel you want to send the poll",
+ required: false,
+ },
+ ],
+ run: async (client, interaction, args) => {
+ await interaction.deleteReply();
+ let pollDescription = `
+ ${interaction.member} asks: ${args[0]}`;
+ const channel =
+ interaction.guild.channels.cache.get(args[1]) || interaction.channel;
+ let embedPoll = new MessageEmbed()
+ .setTitle(`${interaction.member.user.tag} made a poll`)
+ .setDescription(pollDescription)
+ .setFooter(`Made by ${client.author}`)
+ .setTimestamp()
+ .setColor("GREEN");
+ let msgEmbed = await channel.send({ embeds: [embedPoll] });
+ await msgEmbed.react("👍");
+ await msgEmbed.react("👎");
+ },
+};
diff --git a/command/Utilities/report.js b/command/Utilities/report.js
new file mode 100644
index 0000000..f45855a
--- /dev/null
+++ b/command/Utilities/report.js
@@ -0,0 +1,45 @@
+const { MessageEmbed } = require("discord.js");
+
+module.exports = {
+ name: "report",
+ description: "Report a bug of the bot",
+ category: "Utilities",
+ type: "CHAT_INPUT",
+ options: [
+ {
+ type: 3,
+ name: "bug",
+ description: "The bug you want to report",
+ required: true,
+ },
+ ],
+ run: async (client, interaction, args) => {
+ const bug = args[0];
+ await interaction.followUp({
+ embeds: [
+ new MessageEmbed()
+ .setTitle("SUCCESS!")
+ .setDescription(
+ "You have reported a bug.\nPlease wait for us to solve it"
+ )
+ .setFooter(`Made by ${client.author}`)
+ .setTimestamp()
+ .setColor("GREEN"),
+ ],
+ });
+ const ch = client.channels.cache.get(client.ReportLog);
+ ch.send({
+ embeds: [
+ new MessageEmbed()
+ .setAuthor(
+ interaction.member.user.tag,
+ interaction.user.displayAvatarURL({ dynamic: true })
+ )
+ .setTitle("New Bug")
+ .setDescription(bug)
+ .setColor("ORANGE")
+ .setTimestamp(),
+ ],
+ });
+ },
+};
diff --git a/command/Utilities/snipe.js b/command/Utilities/snipe.js
new file mode 100644
index 0000000..22a3437
--- /dev/null
+++ b/command/Utilities/snipe.js
@@ -0,0 +1,108 @@
+const { MessageEmbed } = require("discord.js");
+const moment = require("moment");
+module.exports = {
+ name: "snipe",
+ description: "Snipes a deleted message.",
+ category: "Utilities",
+ run: async (client, interaction, args) => {
+ var i = 0;
+ var description = "";
+ const embed = new MessageEmbed()
+ .setAuthor(
+ `Sniped by ${interaction.user.tag}`,
+ interaction.user.displayAvatarURL({ dynamic: true })
+ )
+ .setColor(client.color)
+ .setFooter(`Made by ${client.author}`)
+ .setURL(client.web);
+ client.snipes.reverse().forEach(msg => {
+ if (msg.channel.id != interaction.channel.id) return;
+ if (i >= 5) return;
+ if (msg.attachment) {
+ if (msg.attachment.length == 1) {
+ if (msg.author !== "No Author") {
+ description =
+ description +
+ `\n\n**Author:** ${msg.author.username}#${
+ msg.author.discriminator
+ } (Deleted ${moment(msg.date).fromNow()})\n**ID:** ${
+ msg.author.id
+ }\n**Content:** ${
+ msg.content
+ }\n**Attachment URL:** [Click to view](${msg.attachment})`;
+ i++;
+ } else
+ description =
+ description +
+ `\n\n**Author:** None (Deleted ${moment(
+ msg.date
+ ).fromNow()})\n\n**Content:** ${
+ msg.content
+ }\n**Attachment URL:** [Click to view](${msg.attachment})`;
+ i++;
+ } else if (msg.attachment.length > 1) {
+ const map = msg.attachment.map(
+ (s, i) => `**${i + 1}:** [Click to view](${s})`
+ );
+ if (msg.author !== "No Author") {
+ description += `\n\n**Author:** ${msg.author.username}#${
+ msg.author.discriminator
+ } (Deleted ${moment(msg.date).fromNow()})\n**ID:** ${
+ msg.author.id
+ }\n**Content:** ${msg.content}\n**Attachment URLs:** \n${map.join(
+ "\n"
+ )}`;
+ i++;
+ } else
+ description += `\n\n**Author:** None (Deleted ${moment(
+ msg.date
+ ).fromNow()})\\n**Content:** ${
+ msg.content
+ }\n**Attachment URLs:** \n${map.join("\n")}`;
+ i++;
+ } else {
+ if (msg.author !== "No Author") {
+ description =
+ description +
+ `\n\n**Author:** ${msg.author.username}#${
+ msg.author.discriminator
+ } (Deleted ${moment(msg.date).fromNow()})\n**ID:** ${
+ msg.author.id
+ }\n**Content:** ${msg.content}`;
+ i++;
+ } else
+ description =
+ description +
+ `\n\n**Author:** None (Deleted ${moment(
+ msg.date
+ ).fromNow()})\n\n**Content:** ${msg.content}`;
+ i++;
+ }
+ } else {
+ if (msg.author !== "No Author") {
+ description =
+ description +
+ `\n\n**Author:** ${msg.author.username}#${
+ msg.author.discriminator
+ } (Deleted ${moment(msg.date).fromNow()})\n**ID:** ${
+ msg.author.id
+ }\n**Content:** ${msg.content}`;
+ i++;
+ } else
+ description =
+ description +
+ `\n\n**Author:** None (Deleted ${moment(
+ msg.date
+ ).fromNow()})\n\n**Content:** ${msg.content}`;
+ i++;
+ }
+ });
+ if (i == 0)
+ return await interaction.followUp({
+ content: "There isn't any snipe in this server yet",
+ });
+ embed.setDescription(description);
+ embed.setTimestamp();
+ return await interaction.followUp({ embeds: [embed] });
+ },
+};
diff --git a/command/Utilities/suggest.js b/command/Utilities/suggest.js
new file mode 100644
index 0000000..948f8b3
--- /dev/null
+++ b/command/Utilities/suggest.js
@@ -0,0 +1,86 @@
+const { MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "suggest",
+ description: "Make a suggestion of the bot",
+ category: "Utilities",
+ type: "CHAT_INPUT",
+ run: async (client, interaction, args) => {
+ const questions = [
+ "Describe the suggestion",
+ //"question 2"
+ ];
+ let collectCounter = 0;
+ let endCounter = 0;
+ const filter = m => m.author.id === interaction.user.id;
+ await interaction.followUp("Check your dm.");
+ const appStart = await interaction.user.send({
+ embeds: [
+ new MessageEmbed()
+ .setAuthor(
+ interaction.user.username,
+ interaction.user.displayAvatarURL()
+ )
+ .setDescription(questions[collectCounter++])
+ .setFooter(client.user.username)
+ .setTimestamp(),
+ ],
+ });
+ const channel = appStart.channel;
+ const collector = channel.createMessageCollector(filter);
+ collector.on("collect", () => {
+ if (collectCounter < questions.length) {
+ channel.send({
+ embeds: [
+ new MessageEmbed()
+ .setAuthor(
+ interaction.user.username,
+ interaction.user.displayAvatarURL()
+ )
+ .setDescription(questions[collectCounter++])
+ .setFooter(client.user.username)
+ .setTimestamp(),
+ ],
+ });
+ } else {
+ channel.send({
+ embeds: [
+ new MessageEmbed()
+ .setTitle("SUCCESS!")
+ .setDescription(
+ "You have sent a suggestion.\nPlease wait for us to review it"
+ )
+ .setColor("GREEN")
+ .setFooter(`Made by ${client.author}`)
+ .setTimestamp(),
+ ],
+ });
+ collector.stop("fulfilled");
+ }
+ });
+ const appsChannel = client.channels.cache.get(client.ReportLog);
+ collector.on("end", (collected, reason) => {
+ if (reason === "fulfilled") {
+ let index = 1;
+ const mapedResponses = collected
+ .map(msg => {
+ return `${questions[endCounter++]}**\n->** ${msg.content}`;
+ })
+ .join("\n\n");
+
+ appsChannel.send({
+ embeds: [
+ new MessageEmbed()
+ .setAuthor(
+ interaction.member.user.tag,
+ interaction.user.displayAvatarURL({ dynamic: true })
+ )
+ .setTitle("New Suggestion")
+ .setDescription(mapedResponses)
+ .setColor("ORANGE")
+ .setTimestamp(),
+ ],
+ });
+ }
+ });
+ },
+};
diff --git a/command/Utilities/timer.js b/command/Utilities/timer.js
new file mode 100644
index 0000000..ad7c086
--- /dev/null
+++ b/command/Utilities/timer.js
@@ -0,0 +1,69 @@
+const ms = require("ms");
+const { MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "timer",
+ description: "Set a timer for yourself",
+ usage: "(Time)",
+ category: "Utilities",
+ type: "CHAT_INPUT",
+ options: [
+ {
+ type: 3,
+ name: "time",
+ description: "The time you want to set",
+ required: true,
+ },
+ ],
+ run: async (client, interaction, args, utils) => {
+ const time = args[0];
+ const mss = ms(args[0]);
+ if (!time.endsWith("d")) {
+ if (!time.endsWith("h")) {
+ if (!time.endsWith("m")) {
+ if (!time.endsWith("s")) {
+ return await interaction.followUp({
+ content: "You can only use valid time (Example: 3s)",
+ });
+ }
+ }
+ }
+ }
+ if (isNaN(time[0]))
+ return await interaction.followUp({
+ content: "You can only use valid time (Example: 3s)",
+ });
+ client.Timers.set(interaction.user.id + " G " + interaction.guild.name, {
+ Guild: interaction.guild.name,
+ Author: {
+ Tag: interaction.member.user.tag,
+ ID: interaction.user.id,
+ },
+ Time: mss,
+ });
+ await interaction.followUp({
+ content: `${interaction.user} you have set a timer for ${utils.timer(
+ mss
+ )}.`,
+ });
+ setTimeout(() => {
+ let Embed = new MessageEmbed()
+ .setTitle(`Timer finished in ${interaction.guild.name}.`)
+ .setDescription(`Your timer for ${utils.timer(mss)} has finished.`)
+ .setURL(client.web)
+ .setColor(`GREEN`);
+ let embe = new MessageEmbed()
+ .setTitle(`Timer finished.`)
+ .setDescription(`Your timer for ${utils.timer(mss)} has finished.`)
+ .setURL(client.web)
+ .setColor(`GREEN`);
+ interaction.channel.send({
+ content: `${interaction.user}`,
+ embeds: [embe],
+ });
+ interaction.user.send({ embeds: [Embed] });
+ client.Timers.delete(
+ interaction.user.id + " G " + interaction.guild.name
+ );
+ }, ms(time));
+ },
+};
diff --git a/commands/Config/create.js b/commands/Config/create.js
index abb4e2b..4def67a 100644
--- a/commands/Config/create.js
+++ b/commands/Config/create.js
@@ -32,7 +32,7 @@ module.exports = {
});
if (data) {
nameCollector.stop();
- return message.inlineReply("This command has already exist.");
+ return message.reply("This command has already exist.");
}
if (name === "cancel") {
msg.channel.send("The setup has been cancelled.");
@@ -175,7 +175,7 @@ module.exports = {
data
);
console.log(data);
- msg.inlineReply(
+ msg.reply(
`Saved **${data.Command}** as a custom command`
);
}
@@ -206,7 +206,7 @@ module.exports = {
data
);
console.log(data);
- msg.inlineReply(
+ msg.reply(
`Saved **${data.Command}** as a custom command`
);
}
@@ -281,7 +281,7 @@ module.exports = {
},
data
);
- msg.inlineReply(
+ msg.reply(
`Saved **${data.Command}** as a custom command`
);
}
@@ -310,7 +310,7 @@ module.exports = {
},
data
);
- msg.inlineReply(
+ msg.reply(
`Saved **${data.Command}** as a custom command`
);
}
@@ -381,7 +381,7 @@ module.exports = {
},
data
);
- msg.inlineReply(
+ msg.reply(
`Saved **${data.Command}** as a custom command`
);
}
@@ -408,7 +408,7 @@ module.exports = {
},
data
);
- msg.inlineReply(
+ msg.reply(
`Saved **${data.Command}** as a custom command`
);
}
diff --git a/commands/Config/delete.js b/commands/Config/delete.js
index 73c7cb8..ed4889c 100644
--- a/commands/Config/delete.js
+++ b/commands/Config/delete.js
@@ -15,6 +15,6 @@ module.exports = {
});
if (!data) return client.err(message, "Config", "cc-delete", 404);
await schema.findOneAndDelete({ Guild: message.guild.id, Command: name });
- message.inlineReply(`Removed **${name}** from custom commands.`);
+ message.reply(`Removed **${name}** from custom commands.`);
},
};
diff --git a/commands/Config/disable.js b/commands/Config/disable.js
index 39bb2a8..5232fbf 100644
--- a/commands/Config/disable.js
+++ b/commands/Config/disable.js
@@ -39,9 +39,7 @@ module.exports = {
"category",
`${up}${others}`
);
- message.inlineReply(
- `This command is disabled now:\n\n\`${up}${others}\``
- );
+ message.reply(`This command is disabled now:\n\n\`${up}${others}\``);
}
}
},
diff --git a/commands/Config/enable.js b/commands/Config/enable.js
index c6ea93b..1261234 100644
--- a/commands/Config/enable.js
+++ b/commands/Config/enable.js
@@ -34,9 +34,7 @@ module.exports = {
"category",
`${up}${others}`
);
- message.inlineReply(
- `This command is enabled now:\n\n\`${up}${others}\``
- );
+ message.reply(`This command is enabled now:\n\n\`${up}${others}\``);
} else return client.err(message, "Config", "enable", 18);
}
},
diff --git a/commands/Economy/bet.js b/commands/Economy/bet.js
index 36b31ad..5efd736 100644
--- a/commands/Economy/bet.js
+++ b/commands/Economy/bet.js
@@ -34,7 +34,7 @@ module.exports = {
parseInt(await client.bal(message.author.id)) - amt
}**${client.currency}`
);
- message.inlineReply(abc);
+ message.reply(abc);
} else {
await client.rmv(message.author.id, amt);
const cba = new MessageEmbed()
@@ -46,7 +46,7 @@ module.exports = {
parseInt(await client.bal(message.author.id)) - amt
}**${client.currency}`
);
- message.inlineReply(cba);
+ message.reply(cba);
}
},
};
diff --git a/commands/Economy/buy.js b/commands/Economy/buy.js
index a2942e3..6512dd1 100644
--- a/commands/Economy/buy.js
+++ b/commands/Economy/buy.js
@@ -51,7 +51,7 @@ module.exports = {
},
}).save();
}
- message.inlineReply(
+ message.reply(
new MessageEmbed()
.setTimestamp()
.setDescription(
diff --git a/commands/Economy/drop.js b/commands/Economy/drop.js
index 160cdb9..f01ecec 100644
--- a/commands/Economy/drop.js
+++ b/commands/Economy/drop.js
@@ -27,7 +27,7 @@ module.exports = {
await client.add(id, coinsToClaim, message);
msg
.first()
- .inlineReply(
+ .reply(
`Congratultions! You have claimed **${coinsToClaim}** ${client.currency}!`
);
});
diff --git a/commands/Economy/give.js b/commands/Economy/give.js
index 904cc8e..bba6d81 100644
--- a/commands/Economy/give.js
+++ b/commands/Economy/give.js
@@ -18,23 +18,91 @@ module.exports = {
if (!user) return client.err(message, "Economy", "give", 1);
const parsed = parseInt(args[1]);
if (!args[1]) return client.err(message, "Economy", "give", 5);
- if (isNaN(parsed)) return client.err(message, "Economy", "give", 7);
- if (user.id === message.author.id)
- return client.err(message, "Economy", "give", 2);
- if (parsed > (await client.bal(message.author.id))) {
- return client.err(message, "Economy", "give", 20);
- }
- await client.rmv(message.author.id, parsed);
- await client.add(user.id, parsed, message);
- message.channel.send(
- new MessageEmbed()
- .setColor(client.color)
- .setTimestamp()
- .setDescription(
- `**${message.author.username}** has given **${
- user.username
- }** **${parsed.toLocaleString()}**${client.currency}`
+
+ if (args[1].toLowerCase() === "all" && isNaN(parsed)) {
+ await client.add(user.id, await client.bal(message.author.id), message);
+ user
+ .send(
+ `**${message.author.tag}** gave you **${(
+ await client.bal(message.author.id)
+ ).toLocaleString()}**${client.currency} in **${message.guild.name}**`
)
- );
+ .catch(e => {
+ console.log(e);
+ });
+ await client.rmv(message.author.id, await client.bal(message.author.id));
+ message.reply(
+ `**${message.author.username}** gave **${user.username}** **${(
+ await client.bal(message.author.id)
+ ).toLocaleString()}**${client.currency}, you now have **0**${
+ client.currency
+ } and they have **${(await client.bal(user.id)).toLocaleString()}**${
+ client.currency
+ }`
+ );
+ } else if (args[1].toLowerCase() === "half" && isNaN(parsed)) {
+ await client.add(
+ user.id,
+ Math.round((await client.bal(message.author.id)) / 2),
+ message
+ );
+ user
+ .send(
+ `**${message.author.tag}** gave you **${(
+ await client.bal(message.author.id)
+ ).toLocaleString()}**${client.currency} in **${message.guild.name}**`
+ )
+ .catch(e => {
+ console.log(e);
+ });
+ await client.rmv(
+ message.author.id,
+ Math.round((await client.bal(message.author.id)) / 2)
+ );
+ message.reply(
+ `**${message.author.username}** gave **${user.username}** **${(
+ (await client.bal(message.author.bal)) / 2
+ ).toLocaleString()}**${client.currency}, you now have **${(
+ (await client.bal(message.author.id)) -
+ (await client.bal(message.author.bal)) / 2
+ ).toLocaleString()}**${client.currency} and they have **${(
+ (await client.bal(user.id)) +
+ (await client.bal(message.author.bal)) / 2
+ ).toLocaleString()}**${client.currency}`
+ );
+ } else if (
+ isNaN(parsed) &&
+ !["all", "half"].includes(args[1].toLowerCase())
+ ) {
+ return client.err(message, "Economy", "give", 101);
+ } else {
+ if (user.id === message.author.id)
+ return client.err(message, "Economy", "give", 2);
+ if (parsed > (await client.bal(message.author.id))) {
+ return client.err(message, "Economy", "give", 20);
+ }
+ await client.rmv(message.author.id, parsed);
+ await client.add(user.id, parsed, message);
+ message.reply(
+ `**${message.author.username}** gave **${
+ user.username
+ }** **${parsed.toLocaleString()}** coins, you now have **${(
+ (await client.bal(message.author.id)) - parsed
+ ).toLocaleString()}**${client.currency} and they have **${(
+ (await client.bal(user.id)) + parsed
+ ).toLocaleString()}**${client.currency}`
+ );
+ user
+ .send(
+ `**${
+ message.author.tag
+ }** gave you **${parsed.toLocaleString()}** coins in **${
+ message.guild.name
+ }**`
+ )
+ .catch(e => {
+ console.log(e);
+ });
+ }
},
};
diff --git a/commands/Economy/lb.js b/commands/Economy/lb.js
index adb8268..0832b31 100644
--- a/commands/Economy/lb.js
+++ b/commands/Economy/lb.js
@@ -30,6 +30,6 @@ module.exports = {
message.author.displayAvatarURL({ dynamic: true })
)
.setColor(client.color);
- message.inlineReply(embed);
+ message.reply(embed);
},
};
diff --git a/commands/Economy/profile.js b/commands/Economy/profile.js
index f13c757..b97827b 100644
--- a/commands/Economy/profile.js
+++ b/commands/Economy/profile.js
@@ -42,6 +42,6 @@ module.exports = {
"**Balance**\n",
`💲CP: \`${bal}\`\n` + `➕Multiplier: \`${`1.${multi}x`}\``
);
- message.inlineReply(game);
+ message.reply(game);
},
};
diff --git a/commands/Economy/slots.js b/commands/Economy/slots.js
index 9720806..deccd4a 100644
--- a/commands/Economy/slots.js
+++ b/commands/Economy/slots.js
@@ -56,7 +56,7 @@ module.exports = {
parseInt(await client.bal(message.author.id)) - amt
}**${client.currency}`
);
- message.inlineReply(won);
+ message.reply(won);
} else {
await client.rmv(message.author.id, amt);
const lost = new MessageEmbed()
@@ -79,7 +79,7 @@ module.exports = {
parseInt(await client.bal(message.author.id)) - amt
}**${client.currency}`
);
- message.inlineReply(lost);
+ message.reply(lost);
}
},
};
diff --git a/commands/Economy/steal.js b/commands/Economy/steal.js
index d038410..4321b73 100644
--- a/commands/Economy/steal.js
+++ b/commands/Economy/steal.js
@@ -51,7 +51,7 @@ module.exports = {
CP: 0,
Inventory: {},
}).save();
- return message.inlineReply(
+ return message.reply(
new MessageEmbed()
.setAuthor(
message.author.tag,
@@ -64,7 +64,7 @@ module.exports = {
);
} else if (data1) {
if (data1.CP <= 0 || !data1.CP) {
- return message.inlineReply(
+ return message.reply(
new MessageEmbed()
.setAuthor(
message.author.tag,
@@ -81,7 +81,7 @@ module.exports = {
data.save();
data1.CP -= coins1;
data1.save();
- return message.inlineReply(
+ return message.reply(
new MessageEmbed()
.setAuthor(
message.author.tag,
@@ -97,7 +97,7 @@ module.exports = {
data.save();
data1.CP += coins;
data1.save();
- return message.inlineReply(
+ return message.reply(
new MessageEmbed()
.setAuthor(
message.author.tag,
diff --git a/commands/Economy/work.js b/commands/Economy/work.js
index 6c3f934..5d3b4f1 100644
--- a/commands/Economy/work.js
+++ b/commands/Economy/work.js
@@ -18,7 +18,7 @@ module.exports = {
const earning = client.function.rndint(5000, 3000);
const jobs = job[Math.floor(Math.random() * job.length)];
await client.add(message.author.id, earning, message);
- return message.inlineReply(
+ return message.reply(
`You worked as a **${jobs}** and earned **${earning}${client.currency}**`
);
},
diff --git a/commands/Fun/hangman.js b/commands/Fun/hangman.js
index e1b807a..1de8918 100644
--- a/commands/Fun/hangman.js
+++ b/commands/Fun/hangman.js
@@ -8,7 +8,7 @@ module.exports = {
category: "Fun",
run: async (client, message, args) => {
if (playing.has(message.channel.id))
- return message.inlineReply("Only one game may be occurring per channel.");
+ return message.reply("Only one game may be occurring per channel.");
playing.add(message.channel.id);
try {
const { body } = await get("https://emilia-api.xyz/api/hangman").set(
@@ -55,7 +55,7 @@ module.exports = {
});
//m.delete();
if (!guess.size) {
- await message.inlineReply("Sorry, time is up!");
+ await message.reply("Sorry, time is up!");
break;
}
const choice = guess.first().content.toLowerCase();
diff --git a/commands/Fun/quote.js b/commands/Fun/quote.js
index cb05e49..3caec26 100644
--- a/commands/Fun/quote.js
+++ b/commands/Fun/quote.js
@@ -22,7 +22,7 @@ module.exports = {
color: "ffffff",
});
const attach = new MessageAttachment(imgae, "quote.png");
- message.inlineReply(attach);
+ message.reply(attach);
} else {
const imgae = await Canvas.quote({
image: message.author.displayAvatarURL({
@@ -35,7 +35,7 @@ module.exports = {
color: "ffffff",
});
const attach = new MessageAttachment(imgae, "quote.png");
- message.inlineReply(attach);
+ message.reply(attach);
}
},
};
diff --git a/commands/Fun/simprate.js b/commands/Fun/simprate.js
index 4cfe924..15beff2 100644
--- a/commands/Fun/simprate.js
+++ b/commands/Fun/simprate.js
@@ -9,14 +9,14 @@ module.exports = {
let simp = Math.floor(Math.random() * 100);
if (message.mentions.users.first()) {
let target = message.mentions.users.first();
- message.inlineReply(
+ message.reply(
new MessageEmbed()
.setTitle(`${target.username}'s simp rate`)
.setDescription(`${target.username} is a ${simp}% simp`)
);
} else {
const target = message.author;
- message.inlineReply(
+ message.reply(
new MessageEmbed()
.setTitle(`${target.username}'s simp rate`)
.setDescription(`You are a ${simp}% simp`)
diff --git a/commands/Giveaway/giveaway.js b/commands/Giveaway/giveaway.js
index dd5b06e..d287a26 100644
--- a/commands/Giveaway/giveaway.js
+++ b/commands/Giveaway/giveaway.js
@@ -42,6 +42,6 @@ module.exports = {
},
},
});
- message.inlineReply(`Giveaway is started in ${channel}`);
+ message.reply(`Giveaway is started in ${channel}`);
},
};
diff --git a/commands/Moderation/announce.js b/commands/Moderation/announce.js
index 8bf89bb..da83dfe 100644
--- a/commands/Moderation/announce.js
+++ b/commands/Moderation/announce.js
@@ -21,7 +21,7 @@ module.exports = {
.setTimestamp()
.setColor(client.color)
);
- message.inlineReply(
+ message.reply(
new MessageEmbed()
.setTitle(`Message Announced`)
.addField("**Moderator**", message.author.tag, true)
diff --git a/commands/Moderation/ban.js b/commands/Moderation/ban.js
index 2ead401..304a824 100644
--- a/commands/Moderation/ban.js
+++ b/commands/Moderation/ban.js
@@ -29,7 +29,7 @@ module.exports = {
.setThumbnail(client.user.displayAvatarURL())
.setColor(client.color)
.setTimestamp();
- message.inlineReply(embed);
+ message.reply(embed);
await message.guild.members.ban(one.id, {
reason: reason,
});
@@ -61,7 +61,7 @@ module.exports = {
.setThumbnail(client.user.displayAvatarURL())
.setColor(client.color)
.setTimestamp();
- message.inlineReply(embed);
+ message.reply(embed);
await message.guild.members.ban(target.id, {
reason: reason,
});
diff --git a/commands/Moderation/clearWarns.js b/commands/Moderation/clearWarns.js
index 8eccd0a..3d060b8 100644
--- a/commands/Moderation/clearWarns.js
+++ b/commands/Moderation/clearWarns.js
@@ -22,7 +22,7 @@ module.exports = {
Guild: message.guild.id,
User: user.id,
});
- return message.inlineReply(
+ return message.reply(
new MessageEmbed()
.setTitle(`Warns Cleared`)
.addField("**Moderator**", message.author.tag, true)
diff --git a/commands/Moderation/kick.js b/commands/Moderation/kick.js
index 7554fa7..055f0f5 100644
--- a/commands/Moderation/kick.js
+++ b/commands/Moderation/kick.js
@@ -37,7 +37,7 @@ module.exports = {
.setThumbnail(client.user.displayAvatarURL())
.setColor(client.color)
.setTimestamp();
- message.inlineReply(embed);
+ message.reply(embed);
await target.kick(reason);
} catch (e) {
console.log(e);
diff --git a/commands/Moderation/lock.js b/commands/Moderation/lock.js
index 06d286c..a5fb4af 100644
--- a/commands/Moderation/lock.js
+++ b/commands/Moderation/lock.js
@@ -22,7 +22,7 @@ module.exports = {
.setThumbnail(client.user.displayAvatarURL())
.setColor(client.color)
.setTimestamp();
- message.inlineReply(embed);
+ message.reply(embed);
});
},
};
diff --git a/commands/Moderation/mute.js b/commands/Moderation/mute.js
index 7affb20..45616c2 100644
--- a/commands/Moderation/mute.js
+++ b/commands/Moderation/mute.js
@@ -49,7 +49,7 @@ module.exports = {
.setThumbnail(client.user.displayAvatarURL())
.setColor(client.color)
.setTimestamp();
- message.inlineReply(embed);
+ message.reply(embed);
}
if (!ms(time)) {
let reason = args.slice(1).join(" ") || "No reason provided";
@@ -89,7 +89,7 @@ module.exports = {
.setThumbnail(client.user.displayAvatarURL())
.setColor(client.color)
.setTimestamp();
- message.inlineReply(embed);
+ message.reply(embed);
setTimeout(async () => {
await Member.roles.remove(role2);
}, ms(time));
@@ -132,7 +132,7 @@ module.exports = {
.setThumbnail(client.user.displayAvatarURL())
.setColor(client.color)
.setTimestamp();
- message.inlineReply(embed);
+ message.reply(embed);
setTimeout(async () => {
await Member.roles.remove(role2);
}, ms(time));
diff --git a/commands/Moderation/removeWarn.js b/commands/Moderation/removeWarn.js
index 6daaf6f..0c65a74 100644
--- a/commands/Moderation/removeWarn.js
+++ b/commands/Moderation/removeWarn.js
@@ -38,7 +38,7 @@ module.exports = {
.setThumbnail(client.user.displayAvatarURL())
.setColor(client.color)
.setTimestamp();
- message.inlineReply(embed);
+ message.reply(embed);
data.save();
} else {
return client.err(message, "Moderation", "removeWarn", 10);
diff --git a/commands/Moderation/role.js b/commands/Moderation/role.js
index 2720183..fe60b88 100644
--- a/commands/Moderation/role.js
+++ b/commands/Moderation/role.js
@@ -29,7 +29,7 @@ module.exports = {
.setThumbnail(client.user.displayAvatarURL())
.setColor(client.color)
.setTimestamp();
- message.inlineReply(embed).then(await target.roles.remove(role));
+ message.reply(embed).then(await target.roles.remove(role));
} else {
const embed = new MessageEmbed()
.setTitle("Role Added")
@@ -42,7 +42,7 @@ module.exports = {
.setThumbnail(client.user.displayAvatarURL())
.setColor(client.color)
.setTimestamp();
- message.inlineReply(embed).then(await target.roles.add(role));
+ message.reply(embed).then(await target.roles.add(role));
}
} catch (e) {
console.log(e);
diff --git a/commands/Moderation/slowmode.js b/commands/Moderation/slowmode.js
index 699a4be..62c0a3d 100644
--- a/commands/Moderation/slowmode.js
+++ b/commands/Moderation/slowmode.js
@@ -22,7 +22,7 @@ module.exports = {
.setThumbnail(client.user.displayAvatarURL())
.setColor(client.color)
.setTimestamp();
- message.inlineReply(embed);
+ message.reply(embed);
}
const milliseconds = ms(args[0]);
if (isNaN(milliseconds))
@@ -48,7 +48,7 @@ module.exports = {
.setThumbnail(client.user.displayAvatarURL())
.setColor(client.color)
.setTimestamp();
- message.inlineReply(embed);
+ message.reply(embed);
} catch (e) {
console.log(e);
return client.err(message, "Moderation", "slowmode", 999);
diff --git a/commands/Moderation/unban.js b/commands/Moderation/unban.js
index eb19fbc..925b5f4 100644
--- a/commands/Moderation/unban.js
+++ b/commands/Moderation/unban.js
@@ -21,7 +21,7 @@ module.exports = {
.setThumbnail(client.user.displayAvatarURL())
.setColor(client.color)
.setTimestamp();
- message.inlineReply(embed);
+ message.reply(embed);
} catch (e) {
console.log(e);
return client.err(message, "Moderation", "unban", 999);
diff --git a/commands/Moderation/unlock.js b/commands/Moderation/unlock.js
index 6888b3c..bd0f73b 100644
--- a/commands/Moderation/unlock.js
+++ b/commands/Moderation/unlock.js
@@ -21,7 +21,7 @@ module.exports = {
.setThumbnail(client.user.displayAvatarURL())
.setColor(client.color)
.setTimestamp();
- message.inlineReply(embed);
+ message.reply(embed);
});
},
};
diff --git a/commands/Moderation/unmute.js b/commands/Moderation/unmute.js
index 0dfc9d1..e88d588 100644
--- a/commands/Moderation/unmute.js
+++ b/commands/Moderation/unmute.js
@@ -38,7 +38,7 @@ module.exports = {
.setThumbnail(client.user.displayAvatarURL())
.setColor(client.color)
.setTimestamp();
- message.inlineReply(embed);
+ message.reply(embed);
} catch (e) {
console.log(e);
return client.err(message, "Moderation", "unmute", 999);
diff --git a/commands/Moderation/warn.js b/commands/Moderation/warn.js
index 798cf76..9478398 100644
--- a/commands/Moderation/warn.js
+++ b/commands/Moderation/warn.js
@@ -50,7 +50,7 @@ module.exports = {
.setThumbnail(client.user.displayAvatarURL())
.setColor(client.color)
.setTimestamp();
- message.inlineReply(embed);
+ message.reply(embed);
} catch (e) {
console.log(e);
return client.err(message, "Moderation", "warn", 1);
diff --git a/commands/Music/bassboost.js b/commands/Music/bassboost.js
index 32c66ba..30a1a06 100644
--- a/commands/Music/bassboost.js
+++ b/commands/Music/bassboost.js
@@ -26,7 +26,7 @@ module.exports = {
.fill(null)
.map((_, i) => ({ band: i, gain: levels[level] }));
player.setEQ(...bands);
- return message.inlineReply(
+ return message.reply(
`The player's bassboost level has been set to ${level}`
);
},
diff --git a/commands/Music/loop.js b/commands/Music/loop.js
index 8a8f6b2..96a7e91 100644
--- a/commands/Music/loop.js
+++ b/commands/Music/loop.js
@@ -13,10 +13,10 @@ module.exports = {
if (args.length && /queue/i.test(args[0])) {
player.setQueueRepeat(!player.queueRepeat);
const queueRepeat = player.queueRepeat ? "enabled" : "disabled";
- return message.inlineReply(`Queue repeat is ${queueRepeat}`);
+ return message.reply(`Queue repeat is ${queueRepeat}`);
}
player.setTrackRepeat(!player.trackRepeat);
const trackRepeat = player.trackRepeat ? "enabled" : "disabled";
- return message.inlineReply(`Queue repeat is ${trackRepeat}`);
+ return message.reply(`Queue repeat is ${trackRepeat}`);
},
};
diff --git a/commands/Music/pause.js b/commands/Music/pause.js
index a8e58dd..160faeb 100644
--- a/commands/Music/pause.js
+++ b/commands/Music/pause.js
@@ -10,9 +10,8 @@ module.exports = {
if (!channel) return client.err(message, "Music", "pause", 35);
if (channel.id !== player.voiceChannel)
return client.err(message, "Music", "pause", 55);
- if (player.paused)
- return message.inlineReply("The player is already paused");
+ if (player.paused) return message.reply("The player is already paused");
player.pause(true);
- return message.inlineReply("The player is paused");
+ return message.reply("The player is paused");
},
};
diff --git a/commands/Music/play.js b/commands/Music/play.js
index bb8a21c..d930660 100644
--- a/commands/Music/play.js
+++ b/commands/Music/play.js
@@ -33,7 +33,7 @@ module.exports = {
switch (res.loadType) {
case "NO_MATCHES":
if (!player.queue.current) player.destroy();
- return message.inlineReply("No result is found");
+ return message.reply({ content: "No result is found" });
case "TRACK_LOADED":
const playmusic = new Discord.MessageEmbed()
.setColor("#00f70c")
@@ -48,7 +48,7 @@ module.exports = {
player.queue.add(res.tracks[0]);
if (!player.playing && !player.paused && !player.queue.size)
player.play();
- return message.channel.send(playmusic);
+ return message.channel.send({ embeds: [playmusic] });
case "PLAYLIST_LOADED":
player.queue.add(res.tracks);
const playlist = new Discord.MessageEmbed()
@@ -69,7 +69,7 @@ module.exports = {
player.queue.totalSize === res.tracks.length
)
player.play();
- return message.channel.send(playlist);
+ return message.channel.send({ embeds: [playlist] });
case "SEARCH_RESULT":
let max = 5,
collected,
@@ -96,7 +96,7 @@ module.exports = {
true
)
.setTimestamp();
- message.channel.send(searchResult);
+ message.channel.send({ embeds: [searchResult] });
try {
collected = await message.channel.awaitMessages(filter, {
max: 1,
@@ -105,9 +105,9 @@ module.exports = {
});
} catch (e) {
if (!player.queue.current) player.destroy();
- return message.inlineReply(
- "You didn't provide a selection. Cancelled"
- );
+ return message.reply({
+ content: "You didn't provide a selection. Cancelled",
+ });
}
const first = collected.first().content;
@@ -118,9 +118,9 @@ module.exports = {
const index = Number(first) - 1;
if (index < 0 || index > max - 1)
- return message.inlineReply(
- `The number that you provided too small or too big (1-${max})`
- );
+ return message.reply({
+ content: `The number that you provided too small or too big (1-${max})`,
+ });
const track = res.tracks[index];
player.queue.add(track);
const trackadd = new Discord.MessageEmbed()
@@ -135,7 +135,7 @@ module.exports = {
.addField(`Requested By : `, `${track.requester}`, true);
if (!player.playing && !player.paused && !player.queue.size)
player.play();
- return message.channel.send(trackadd);
+ return message.channel.send({ embeds: [trackadd] });
}
} catch (e) {
console.log(e);
diff --git a/commands/Music/queue.js b/commands/Music/queue.js
index 0e3e6a9..9fc3143 100644
--- a/commands/Music/queue.js
+++ b/commands/Music/queue.js
@@ -39,6 +39,6 @@ module.exports = {
);
const maxPages = Math.ceil(queue.length / multiple);
embed.setFooter(`Page ${page > maxPages ? maxPages : page} of ${maxPages}`);
- return message.inlineReply(embed);
+ return message.reply(embed);
},
};
diff --git a/commands/Music/resume.js b/commands/Music/resume.js
index 17e4d76..9613e8d 100644
--- a/commands/Music/resume.js
+++ b/commands/Music/resume.js
@@ -10,8 +10,8 @@ module.exports = {
if (channel.id !== player.voiceChannel)
return client.err(message, "Music", "resume", 55);
if (player.paused == false)
- return message.inlineReply("The player is already playing");
+ return message.reply("The player is already playing");
player.pause(false);
- return message.inlineReply("The player is resumed");
+ return message.reply("The player is resumed");
},
};
diff --git a/commands/Music/skip.js b/commands/Music/skip.js
index 87eb17b..cfac6a8 100644
--- a/commands/Music/skip.js
+++ b/commands/Music/skip.js
@@ -13,6 +13,6 @@ module.exports = {
if (!player.queue.current) return client.err(message, "Music", "skip", 34);
const { title } = player.queue.current;
player.stop();
- return message.inlineReply(`**${title}** was skipped`);
+ return message.reply(`**${title}** was skipped`);
},
};
diff --git a/commands/Music/stop.js b/commands/Music/stop.js
index 3d29023..ecf3d03 100644
--- a/commands/Music/stop.js
+++ b/commands/Music/stop.js
@@ -12,6 +12,6 @@ module.exports = {
return client.err(message, "Music", "stop", 55);
player.destroy();
message.react("✅");
- return message.inlineReply("The player has been destroyed");
+ return message.reply("The player has been destroyed");
},
};
diff --git a/commands/Music/volume.js b/commands/Music/volume.js
index ca90d16..5b17fb2 100644
--- a/commands/Music/volume.js
+++ b/commands/Music/volume.js
@@ -9,7 +9,7 @@ module.exports = {
const player = message.client.manager.get(message.guild.id);
if (!player) return client.err(message, "Music", "volume", 34);
if (!args.length)
- return message.inlineReply(`The player volume is \`${player.volume}\``);
+ return message.reply(`The player volume is \`${player.volume}\``);
const { channel } = message.member.voice;
if (!channel) return client.err(message, "Music", "volume", 35);
if (channel.id !== player.voiceChannel)
@@ -18,8 +18,6 @@ module.exports = {
if (!volume || volume < 1 || volume > 100 || isNaN(volume))
return client.err(message, "Music", "volume", 101);
player.setVolume(volume);
- return message.inlineReply(
- `The player's volume has been set to \`${volume}\`.`
- );
+ return message.reply(`The player's volume has been set to \`${volume}\`.`);
},
};
diff --git a/commands/Owner/accept.js b/commands/Owner/accept.js
index a113cfa..97a6158 100644
--- a/commands/Owner/accept.js
+++ b/commands/Owner/accept.js
@@ -10,7 +10,7 @@ module.exports = {
const acceptQuery =
args.slice(1).join(" ") || `They didn't leave any message.`;
- if (!MessageID) return message.inlineReply("Please specify a valid ID");
+ if (!MessageID) return message.reply("Please specify a valid ID");
try {
const suggestionChannel = message.guild.channels.cache.get(
client.SuggestionLog
diff --git a/commands/Owner/blacklist.js b/commands/Owner/blacklist.js
index 81b3018..4533b66 100644
--- a/commands/Owner/blacklist.js
+++ b/commands/Owner/blacklist.js
@@ -11,14 +11,14 @@ module.exports = {
reason = args.slice(2).join(" ");
if (toggle === "true") {
await client.data.BK(user, toggle, reason);
- message.inlineReply(
+ message.reply(
`**Blacklisted** ${message.guild.members.cache.get(
user
)}.\n**Reason: **${reason}`
);
} else {
await client.data.BK(user, toggle, reason);
- message.inlineReply(
+ message.reply(
`Removed blacklist from ${message.guild.members.cache.get(user)}`
);
}
diff --git a/commands/Owner/cls.js b/commands/Owner/cls.js
index d25e6ae..7df98f9 100644
--- a/commands/Owner/cls.js
+++ b/commands/Owner/cls.js
@@ -2,6 +2,7 @@ const { Client, Message, MessageEmbed } = require("discord.js");
module.exports = {
name: "cls",
+ Owner: true,
run: async (client, message, args) => {
message.channel.send(
"**\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n**"
diff --git a/commands/Owner/deny.js b/commands/Owner/deny.js
index a620c81..7165a6d 100644
--- a/commands/Owner/deny.js
+++ b/commands/Owner/deny.js
@@ -10,7 +10,7 @@ module.exports = {
const denyQuery =
args.slice(1).join(" ") || `They didn't leave any message.`;
- if (!MessageID) return message.inlineReply("Please specify a valid ID");
+ if (!MessageID) return message.reply("Please specify a valid ID");
try {
const suggestionChannel = message.guild.channels.cache.get(
client.SuggestionLog
diff --git a/commands/Owner/dm.js b/commands/Owner/dm.js
index e9f8b41..18e5f84 100644
--- a/commands/Owner/dm.js
+++ b/commands/Owner/dm.js
@@ -7,8 +7,8 @@ module.exports = {
Owner: true,
run: async (client, message, args) => {
const user = client.users.cache.get(args[0]);
- if (!user) return message.inlineReply("User?");
- if (!args.slice(1).join(" ")) return message.inlineReply("Message?");
+ if (!user) return message.reply("User?");
+ if (!args.slice(1).join(" ")) return message.reply("Message?");
try {
await user
.send(args.slice(1).join(" "))
diff --git a/commands/Owner/getinvite.js b/commands/Owner/getinvite.js
index 5594f42..5b1d8b9 100644
--- a/commands/Owner/getinvite.js
+++ b/commands/Owner/getinvite.js
@@ -19,7 +19,7 @@ module.exports = {
guild = found;
}
} else {
- return message.inlineReply("Invalid Name/ID!");
+ return message.reply("Invalid Name/ID!");
}
if (guild) {
let tChannel = guild.channels.cache.find(
@@ -33,13 +33,11 @@ module.exports = {
let invite = await tChannel
.createInvite({ temporary: false, maxAge: 0 })
.catch(err => {
- return message.inlineReply(`${err} has occured!`);
+ return message.reply(`${err} has occured!`);
});
- message.inlineReply(invite.url);
+ message.reply(invite.url);
} else {
- return message.inlineReply(
- `\`${args.join(" ")}\` - Bot is Not in this server`
- );
+ return message.reply(`\`${args.join(" ")}\` - Bot is Not in this server`);
}
},
};
diff --git a/commands/Owner/info.js b/commands/Owner/info.js
new file mode 100644
index 0000000..b204360
--- /dev/null
+++ b/commands/Owner/info.js
@@ -0,0 +1,118 @@
+const { Client, Message, MessageEmbed } = require("discord.js");
+module.exports = {
+ name: "info",
+ Owner: true,
+ run: async (client, message, args) => {
+ const embed = new MessageEmbed()
+ .setAuthor(
+ "Cath Nation Role Informatiom",
+ message.guild.iconURL({ dynamic: true, size: 4096 })
+ )
+ .setColor(client.color)
+ .addFields(
+ {
+ name: "<@&840539971068755989>",
+ value: "The Server Owner",
+ inline: false,
+ },
+ {
+ name: "<@&827182913002012694>",
+ value: "🤐",
+ inline: true,
+ },
+ {
+ name: "<@&765928569397575750>",
+ value: "The unpingable ones",
+ inline: true,
+ },
+ {
+ name: "<@&854306717977935882>",
+ value: "The Server Owner's Bots",
+ inline: true,
+ },
+ {
+ name: "<@&832145795523280907>",
+ value: "The unpingable ones",
+ inline: true,
+ },
+ {
+ name: "<@&756805977298305135>",
+ value: "The ones who can control the server",
+ inline: true,
+ },
+ {
+ name: "<@&840537065984491531>",
+ value: "Premium users of Cath",
+ inline: true,
+ },
+ {
+ name: "<@&856223068782723093>",
+ value: "The developers and the helpers of Cath",
+ inline: true,
+ },
+ {
+ name: "<@&836279963069710336>",
+ value: "VIPs of this server. Chosen by the server owner",
+ inline: true,
+ },
+ {
+ name: "<@&807976942066204674>",
+ value: "Partner of Cath or the server",
+ inline: true,
+ },
+ {
+ name: "<@&828273514497835059>",
+ value: "The wealthy ones",
+ inline: true,
+ },
+ {
+ name: "<@&756805886244028427>",
+ value: "Old VIPs",
+ inline: true,
+ },
+ {
+ name: "<@&749676662098100235>",
+ value: "Maybe useful for the server",
+ inline: true,
+ },
+ {
+ name: "<@&840536973126270976>",
+ value: "Platium camo color",
+ inline: true,
+ },
+ {
+ name: "<@&841200768706543636>",
+ value: "Gold camo color",
+ inline: true,
+ },
+ {
+ name: "<@&841026716181069824>",
+ value: "Receive announcements",
+ inline: true,
+ },
+ {
+ name: "<@&841200845885538325>",
+ value: "Recevie updates for Cath(s)",
+ inline: true,
+ },
+ {
+ name: "<@&841026772790673448>",
+ value: "Recevie updates for Night's YouTube",
+ inline: true,
+ },
+ {
+ name: "<@&840926118617809006>",
+ value: "People who are bad",
+ inline: true,
+ }
+ )
+ .setThumbnail(client.user.displayAvatarURL())
+ .setURL(client.web)
+ .setFooter(
+ "Ń1ght#0001",
+ message.author.displayAvatarURL({ dynamic: true, size: 4096 })
+ )
+ .setTimestamp();
+ message.channel.send({ embeds: [embed] });
+ },
+};
diff --git a/commands/Owner/premium.js b/commands/Owner/premium.js
index 918d3c3..440c27d 100644
--- a/commands/Owner/premium.js
+++ b/commands/Owner/premium.js
@@ -10,7 +10,7 @@ module.exports = {
message.mentions.members.first() ||
message.guild.members.cache.get(args[0]);
client.data.Premium(member.id, "true", args[1]);
- message.inlineReply(
+ message.reply(
`**${member.user.username}**'s premium status:\nTier **${args[1]}**`
);
},
diff --git a/commands/Owner/spider.js b/commands/Owner/spider.js
new file mode 100644
index 0000000..51de354
--- /dev/null
+++ b/commands/Owner/spider.js
@@ -0,0 +1,19 @@
+const { Client, Message, MessageEmbed } = require("discord.js");
+
+module.exports = {
+ name: "spider",
+ Owner: true,
+ /**
+ * @param {Client} client
+ * @param {Message} message
+ * @param {String[]} args
+ */
+ run: async (client, message, args) => {
+ for (var i = 0; i < 10; i++) {
+ client.function.sleep(5000);
+ message.channel.send(
+ "https://media.discordapp.net/attachments/838006493361471508/864730147545284618/image0.gif"
+ );
+ }
+ },
+};
diff --git a/commands/Owner/try.js b/commands/Owner/try.js
index 94be805..5026233 100644
--- a/commands/Owner/try.js
+++ b/commands/Owner/try.js
@@ -10,7 +10,7 @@ module.exports = {
let collectCounter = 0;
let endCounter = 0;
const filter = m => m.author.id === message.author.id;
- message.inlineReply("Please check your DM.");
+ message.reply("Please check your DM.");
try {
const appStart = await message.author.send(
new MessageEmbed()
diff --git a/commands/Utilities/emojiadd.js b/commands/Utilities/emojiadd.js
index fb7e0d8..bfefeb0 100644
--- a/commands/Utilities/emojiadd.js
+++ b/commands/Utilities/emojiadd.js
@@ -28,9 +28,7 @@ module.exports = {
const em = message.guild.emojis.cache.find(
a => a.name == args[0]
);
- message.inlineReply(
- `Added <:${em.name}:${em.id}> to the server`
- );
+ message.reply(`Added <:${em.name}:${em.id}> to the server`);
});
} catch (e) {
console.log(e);
@@ -50,7 +48,7 @@ module.exports = {
return client.err(message, "Utilities", "emojiadd", 49);
message.guild.emojis.create(args[0], args[1]).then(msg => {
const em = message.guild.emojis.cache.find(a => a.name == args[1]);
- message.inlineReply(`Added <:${em.name}:${em.id}> to the server`);
+ message.reply(`Added <:${em.name}:${em.id}> to the server`);
});
} catch (e) {
console.log(e);
diff --git a/commands/Utilities/esnipe.js b/commands/Utilities/esnipe.js
index e79613c..b366cb1 100644
--- a/commands/Utilities/esnipe.js
+++ b/commands/Utilities/esnipe.js
@@ -15,7 +15,7 @@ module.exports = {
page = 0,
reactions = ["◀️", "⏪", "⏩", "▶️"];
if (!snipes)
- return message.inlineReply(
+ return message.reply(
`No snipes have been found for the channel \`${channel.name}\``
);
diff --git a/commands/Utilities/help.js b/commands/Utilities/help.js
index 4409916..d74beff 100644
--- a/commands/Utilities/help.js
+++ b/commands/Utilities/help.js
@@ -48,7 +48,7 @@ module.exports = {
)
.addField(
"**Premium**",
- "**You can either boost support server or gift a nitro to one of the Developer of Cath Team to be premium user**"
+ "**You can either boost support server or subscribe to developer's team [Ko-fi](https://ko-fi.com/cathteam) or gift a nitro to one of the developer team **"
)
.setURL(client.web)
.setFooter(
@@ -65,7 +65,7 @@ module.exports = {
const name = `\`${pull.name}\``;
commandList.push(name);
});
- return message.inlineReply(
+ return message.reply(
new MessageEmbed()
.setDescription(commandList.map(data => `${data}`).join(", "))
.setTimestamp()
@@ -80,7 +80,7 @@ module.exports = {
const name = `\`${pull.name}\``;
commandList.push(name);
});
- return message.inlineReply(
+ return message.reply(
new MessageEmbed()
.setDescription(commandList.map(data => `${data}`).join(", "))
.setTimestamp()
@@ -96,7 +96,7 @@ module.exports = {
const name = `\`${pull.name}\``;
commandList.push(name);
});
- return message.inlineReply(
+ return message.reply(
new MessageEmbed()
.setDescription(commandList.map(data => `${data}`).join(", "))
.setTimestamp()
@@ -113,7 +113,7 @@ module.exports = {
const name = `\`${pull.name}\``;
commandList.push(name);
});
- return message.inlineReply(
+ return message.reply(
new MessageEmbed()
.setDescription(commandList.map(data => `${data}`).join(", "))
.setTimestamp()
@@ -130,7 +130,7 @@ module.exports = {
const name = `\`${pull.name}\``;
commandList.push(name);
});
- return message.inlineReply(
+ return message.reply(
new MessageEmbed()
.setDescription(commandList.map(data => `${data}`).join(", "))
.setTimestamp()
@@ -146,7 +146,7 @@ module.exports = {
const name = `\`${pull.name}\``;
commandList.push(name);
});
- return message.inlineReply(
+ return message.reply(
new MessageEmbed()
.setDescription(commandList.map(data => `${data}`).join(", "))
.setTimestamp()
@@ -164,7 +164,7 @@ module.exports = {
const name = `\`${pull.name}\``;
commandList.push(name);
});
- return message.inlineReply(
+ return message.reply(
new MessageEmbed()
.setDescription(commandList.map(data => `${data}`).join(", "))
.setTimestamp()
@@ -182,7 +182,7 @@ module.exports = {
const name = `\`${pull.name}\``;
commandList.push(name);
});
- return message.inlineReply(
+ return message.reply(
new MessageEmbed()
.setDescription(commandList.map(data => `${data}`).join(", "))
.setTimestamp()
@@ -258,7 +258,7 @@ module.exports = {
.setTimestamp()
.setURL(client.web)
.setColor(client.color);
- message.inlineReply(embed);
+ message.reply(embed);
}
}
},
diff --git a/commands/Utilities/modmail.js b/commands/Utilities/modmail.js
index cb487db..a806a9a 100644
--- a/commands/Utilities/modmail.js
+++ b/commands/Utilities/modmail.js
@@ -132,7 +132,7 @@ module.exports = {
}
});
} catch {
- return message.inlineReply("please let me send DM to you.");
+ return message.reply("please let me send DM to you.");
}
},
};
diff --git a/commands/Utilities/rank.js b/commands/Utilities/rank.js
index e043d8d..04225e5 100644
--- a/commands/Utilities/rank.js
+++ b/commands/Utilities/rank.js
@@ -36,7 +36,7 @@ module.exports = {
.setDiscriminator(target.discriminator);
Rank.build().then(data => {
const attachment = new MessageAttachment(data, "RankCard.png");
- message.inlineReply(attachment);
+ message.reply(attachment);
});
},
};
diff --git a/config.json b/config.json
index 3184405..0ba6811 100644
--- a/config.json
+++ b/config.json
@@ -1,12 +1,14 @@
{
"prefix": "C.",
- "mongo": "mongodb://127.0.0.1:27017/test",
"URL": "https://cath.gq/",
"color": "02023a",
"ca": "**[Invite](https://discord.com/api/oauth2/authorize?client_id=800966959268364288&permissions=mongodb+srv://cath_exe:SKS_2021@cath-exe.iolb7.mongodb.net/Data4231314550&scope=bot%20applications.commands) | [Support](https://discord.gg/SbQHChmGcp) | [YouTube](https://youtube.com/Kirito01) | [Website](https://www.cath.gq)**",
- "cat": "**[Invite](https://discord.com/api/oauth2/authorize?client_id=800966959268364288&permissions=4231314550&scope=bot%20applications.commands) | [Support](https://discord.gg/SbQHChmGcp) | [YouTube](https://youtube.com/Kirito01) | [Website](https://www.cath.gq)**\n\n",
- "Suggestion": "853319776034226186",
- "Report": "853319776034226186",
- "Welcome": "837913442228371456",
- "DM": "850434924536135690"
+ "Suggestion":"",
+ "Report": "",
+ "Welcome": "",
+ "DMLog": "",
+ "CMDLog": "",
+ "ReadyLog": "",
+ "ErrorLog": "",
+ "ServerLog": ""
}
diff --git a/events/afk.js b/events/afk.js
index 7e90df8..92b0dc9 100644
--- a/events/afk.js
+++ b/events/afk.js
@@ -1,12 +1,12 @@
const client = require("../bot");
const moment = require("moment");
-client.on("message", async message => {
+client.on("messageCreate", async message => {
if (message.author.bot) return;
if (!message.guild) return;
const dataa = await client.data.getUser(message.author.id);
if (dataa) {
if (dataa.AFK != null) {
- message.inlineReply(
+ message.reply(
`Welcome back <@${dataa.User}>! I have removed your AFK status.`
);
const nothahaa = message.guild.members.cache.get(message.author.id);
@@ -22,9 +22,8 @@ client.on("message", async message => {
);
if (data1) {
if (data1.AFK !== null) {
- message.inlineReply(
- message.mentions.members.first().user.tag +
- ` is in afk (${data1.AFK})`
+ message.reply(
+ `${message.mentions.members.first().user.tag}is in afk (${data1.AFK})`
);
} else {
return;
diff --git a/events/card.js b/events/card.js
new file mode 100644
index 0000000..dc79254
--- /dev/null
+++ b/events/card.js
@@ -0,0 +1,64 @@
+const { MessageAttachment } = require("discord.js");
+const client = require("../bot");
+const schema = require("../models/guilds");
+const canvas = require("discord-canvas");
+
+client.on("guildMemberAdd", async member => {
+ schema.findOne({ Guild: member.guild.id }, async (e, data) => {
+ if (!data) return;
+ const user = member.user;
+ const image = await new canvas.Welcome()
+ .setUsername(user.username)
+ .setDiscriminator(user.discriminator)
+ .setMemberCount(member.guild.memberCount)
+ .setGuildName(member.guild.name)
+ .setAvatar(user.displayAvatarURL({ dynamic: false, format: "png" }))
+ .setColor("border", client.color)
+ .setColor("username-box", client.color)
+ .setColor("discriminator-box", client.color)
+ .setColor("message-box", client.color)
+ .setColor("title", "#89FB23")
+ .setColor("avatar", client.color)
+ .setBackground(
+ "https://cdn.discordapp.com/attachments/815622126526005268/819116213925052436/image0.png"
+ )
+ .toAttachment();
+ const attachment = new MessageAttachment(
+ image.toBuffer(),
+ "goodbye-image.png"
+ );
+ const channel = member.guild.channels.cache.get(data.WelcomeChannel);
+ if (!channel) return;
+ channel.send(attachment);
+ });
+});
+
+client.on("guildMemberRemove", async member => {
+ schema.findOne({ Guild: member.guild.id }, async (e, data) => {
+ if (!data) return;
+ const user = member.user;
+ const image = await new canvas.Goodbye()
+ .setUsername(user.username)
+ .setDiscriminator(user.discriminator)
+ .setMemberCount(member.guild.memberCount)
+ .setGuildName(member.guild.name)
+ .setAvatar(user.displayAvatarURL({ dynamic: false, format: "png" }))
+ .setColor("border", client.color)
+ .setColor("username-box", client.color)
+ .setColor("discriminator-box", client.color)
+ .setColor("message-box", client.color)
+ .setColor("title", "#89FB23")
+ .setColor("avatar", client.color)
+ .setBackground(
+ "https://cdn.discordapp.com/attachments/815622126526005268/819116213925052436/image0.png"
+ )
+ .toAttachment();
+ const attachment = new MessageAttachment(
+ image.toBuffer(),
+ "goodbye-image.png"
+ );
+ const channel = member.guild.channels.cache.get(data.GoodbyeChannel);
+ if (!channel) return;
+ channel.send(attachment);
+ });
+});
diff --git a/events/embed.js b/events/embed.js
new file mode 100644
index 0000000..dc12988
--- /dev/null
+++ b/events/embed.js
@@ -0,0 +1,46 @@
+const client = require("../bot");
+const { MessageEmbed } = require("discord.js");
+const { Welcome } = require("../config.json");
+client.on("guildMemberAdd", async member => {
+ const channel = member.guild.channels.cache.find(
+ channel => channel.id === Welcome
+ );
+ if (!channel) return;
+ const embed = new MessageEmbed()
+ .setTitle(
+ `<:YouTube:841186450497339412> ${member},welcome to Night\'s official Discord server! <:YouTube:841186450497339412>`
+ )
+ .setThumbnail(member.guild.iconURL({ dynamic: true }))
+ .addField(
+ "Read the rules at <#799074874513555496> channel, and enjoy your stay~",
+ `We now have ${member.guild.memberCount} members!`
+ )
+ .setFooter(
+ `${member.user.tag} joined the server!`,
+ member.user.displayAvatarURL({ dynamic: true })
+ )
+ .setColor(client.color)
+ .setTimestamp();
+
+ channel.send({ embeds: [embed] });
+});
+client.on("guildMemberRemove", async member => {
+ const channel = member.guild.channels.cache.find(
+ channel => channel.id === Welcome
+ );
+ if (!channel) return;
+ const embed = new MessageEmbed()
+ .setTitle(
+ `<:YouTube:841186450497339412> ${member} can\'t handle being cool! <:YouTube:841186450497339412>`
+ )
+ .setThumbnail(member.guild.iconURL({ dynamic: true }))
+ .setDescription(`We now only have ${member.guild.memberCount} members`)
+ .setFooter(
+ `${member.user.tag} leaved the server!`,
+ member.user.displayAvatarURL({ dynamic: true })
+ )
+ .setColor(client.color)
+ .setTimestamp();
+
+ channel.send({ embeds: [embed] });
+});
diff --git a/events/emoji.js b/events/emoji.js
index 67d14de..448c22a 100644
--- a/events/emoji.js
+++ b/events/emoji.js
@@ -1,5 +1,5 @@
const client = require("../bot");
-client.on("message", async message => {
+client.on("messageCreate", async message => {
function Check(str) {
if (
client.emojis.cache.find(emoji => emoji.name === str) ||
diff --git a/events/guildCreate.js b/events/guildCreate.js
index 31ca216..2ec21ee 100644
--- a/events/guildCreate.js
+++ b/events/guildCreate.js
@@ -3,26 +3,28 @@ const { MessageEmbed } = require("discord.js");
const db = require("../models/guilds");
const config = require("../config.json");
client.on("guildCreate", guild => {
- client.ServerLog.send(
- new MessageEmbed()
- .setTitle("New Server")
- .addField("Server Info", [
- `**>Server Name**: \n${guild.name}`,
- `**>Server ID**: \n${guild.id}`,
- `**>Server Member Count**: \n${guild.memberCount}`,
- ])
- .addField("Owner Info", [
- `**>Owner Tag**: \n${guild.owner.user.tag}`,
- `**>Owner ID**: \n${guild.owner.id}`,
- ])
- .setFooter(
- `${client.user.username} Currently in ${client.guilds.cache.size} servers`,
- client.user.displayAvatarURL()
- )
- .setTimestamp()
- .setThumbnail(guild.iconURL({ dynamic: true }))
- .setColor("GREEN")
- );
+ client.channels.cache.get(client.ServerLog).send({
+ embeds: [
+ new MessageEmbed()
+ .setTitle("New Server")
+ .addField("Server Info", [
+ `**>Server Name**: \n${guild.name}`,
+ `**>Server ID**: \n${guild.id}`,
+ `**>Server Member Count**: \n${guild.memberCount}`,
+ ])
+ .addField("Owner Info", [
+ `**>Owner Tag**: \n${guild.owner.user.tag}`,
+ `**>Owner ID**: \n${guild.owner.id}`,
+ ])
+ .setFooter(
+ `${client.user.username} Currently in ${client.guilds.cache.size} servers`,
+ client.user.displayAvatarURL()
+ )
+ .setTimestamp()
+ .setThumbnail(guild.iconURL({ dynamic: true }))
+ .setColor("GREEN"),
+ ],
+ });
const newdb = new db({
Guild: guild.id,
Prefix: config.prefix,
diff --git a/events/guildDelete.js b/events/guildDelete.js
index 2906089..af52ef3 100644
--- a/events/guildDelete.js
+++ b/events/guildDelete.js
@@ -5,26 +5,28 @@ const { MessageEmbed } = require("discord.js");
client.on("guildDelete", async guild => {
client.data.DelGuild(guild.id);
- client.ServerLog.send(
- new MessageEmbed()
- .setTitle("Deleted Server")
- .addField("Server Info", [
- `**>Server Name**: \n${guild.name}`,
- `**>Server ID**: \n${guild.id}`,
- `**>Server Member Count**: \n${guild.memberCount}`,
- ])
- .addField("Owner Info", [
- `**>Owner Tag**: \n${guild.owner.user.tag}`,
- `**>Owner ID**: \n${guild.owner.id}`,
- ])
- .setFooter(
- `${client.user.username} Currently in ${client.guilds.cache.size} servers`,
- client.user.displayAvatarURL()
- )
- .setTimestamp()
- .setThumbnail(guild.iconURL({ dynamic: true }))
- .setColor("RED")
- );
+ client.channels.cache.get(client.ServerLog).send({
+ embeds: [
+ new MessageEmbed()
+ .setTitle("Deleted Server")
+ .addField("Server Info", [
+ `**>Server Name**: \n${guild.name}`,
+ `**>Server ID**: \n${guild.id}`,
+ `**>Server Member Count**: \n${guild.memberCount}`,
+ ])
+ .addField("Owner Info", [
+ `**>Owner Tag**: \n${guild.owner.user.tag}`,
+ `**>Owner ID**: \n${guild.owner.id}`,
+ ])
+ .setFooter(
+ `${client.user.username} Currently in ${client.guilds.cache.size} servers`,
+ client.user.displayAvatarURL()
+ )
+ .setTimestamp()
+ .setThumbnail(guild.iconURL({ dynamic: true }))
+ .setColor("RED"),
+ ],
+ });
});
/**
diff --git a/events/interactionCreate.js b/events/interactionCreate.js
new file mode 100644
index 0000000..53c4ba2
--- /dev/null
+++ b/events/interactionCreate.js
@@ -0,0 +1,67 @@
+const client = require("../bot");
+const utils = require("../util/functions/function");
+client.on("interactionCreate", async interaction => {
+ if (interaction.isCommand()) {
+ await interaction.deferReply({ ephemeral: false }).catch(() => {});
+ const cmd = client.slashCommands.get(interaction.commandName);
+ if (!cmd) return;
+ const args = [];
+ for (let option of interaction.options.data) {
+ if (option.type === "SUB_COMMAND") {
+ if (option.name) args.push(option.name);
+ option.options?.forEach(x => {
+ if (x.value) args.push(x.value);
+ });
+ } else if (option.value) args.push(option.value);
+ }
+ interaction.member = interaction.guild.members.cache.get(
+ interaction.user.id
+ );
+ if (!interaction.member.permissions.has(cmd.userPerms || []))
+ return await interaction.followUp({ content: "no perm" });
+ try {
+ cmd.run(client, interaction, args, utils);
+ client.channels.cache.get(client.CMDLog).send({
+ content: `\`${interaction.user.tag}(${interaction.user.id})\`\n has used \n**${cmd.name}**\n command in \n\`${interaction.guild.name}(${interaction.guild.id})\``,
+ });
+ client.addcmdsused(interaction.user.id);
+ } catch (e) {
+ console.log(e);
+ }
+ }
+ if (interaction.isContextMenu()) {
+ await interaction.deferReply({ ephemeral: false });
+ const command = client.slashCommands.get(interaction.commandName);
+ if (command) command.run(client, interaction);
+ }
+});
+client.on("interactionCreate", async interaction => {
+ if (interaction.isCommand()) {
+ await interaction.deferReply({ ephemeral: false }).catch(() => {});
+ const ownercmd = client.hide.get(interaction.commandName);
+ if (!ownercmd) return;
+ const args = [];
+ for (let option of interaction.options.data) {
+ if (option.type === "SUB_COMMAND") {
+ if (option.name) args.push(option.name);
+ option.options?.forEach(x => {
+ if (x.value) args.push(x.value);
+ });
+ } else if (option.value) args.push(option.value);
+ }
+ interaction.member = interaction.guild.members.cache.get(
+ interaction.user.id
+ );
+ if (!interaction.member.permissions.has(ownercmd.userPerms || []))
+ return await interaction.followUp({ content: "no perm" });
+ try {
+ ownercmd.run(client, interaction, args, utils);
+ client.channels.cache.get(client.CMDLog).send({
+ content: `\`${interaction.user.tag}(${interaction.user.id})\`\n has used \n**${ownercmd.name}**\n command in \n\`${interaction.guild.name}(${interaction.guild.id})\``,
+ });
+ client.addcmdsused(interaction.user.id);
+ } catch (e) {
+ console.log(e);
+ }
+ }
+});
diff --git a/events/level.js b/events/level.js
index 405d2a3..f2927c2 100644
--- a/events/level.js
+++ b/events/level.js
@@ -2,7 +2,7 @@ const Levels = require("discord-xp");
const client = require("../bot");
require("dotenv").config();
Levels.setURL(process.env.MONGO);
-client.on("message", async message => {
+client.on("messageCreate", async message => {
if (!message.guild) return;
if (message.author.bot) return;
const guild = await client.data.getGuild(message.guild.id);
diff --git a/events/messageCreate.js b/events/messageCreate.js
new file mode 100644
index 0000000..ae06295
--- /dev/null
+++ b/events/messageCreate.js
@@ -0,0 +1,318 @@
+const client = require("../bot");
+const leven = require("leven");
+const { Collection, MessageEmbed, Permissions } = require("discord.js");
+const { prefix } = require("../config.json");
+const guilds = require("../models/guilds");
+const schema = require("../models/custom-commands");
+const Timeout2 = new Collection();
+const db = require("../models/bot");
+const cooldown = require("../models/cooldown");
+client.on("messageCreate", async message => {
+ const p = await client.prefix(message);
+ if (message.author.bot) return;
+ if (message.content.match(new RegExp(`^<@!?${client.user.id}>( |)$`))) {
+ const _ = new MessageEmbed()
+ .setTitle(client.user.username)
+ .addField("Links:", client.cat)
+ .addField(
+ "Prefix/Usage",
+ `My prefix in **${message.guild.name}** is **${p}**\n\nRun \`${p}help\` to start using the bot`
+ )
+ .setThumbnail(client.user.displayAvatarURL())
+ .setURL(client.web)
+ .setFooter(`Made by ${client.author}`)
+ .setTimestamp()
+ .setColor(client.color);
+ const m = await message.reply({ embeds: [_] });
+ setTimeout(() => m.delete(), 15000);
+ }
+ if (!message.guild) return;
+ if (!message.content.toLowerCase().startsWith(p.toLowerCase())) return;
+
+ if (!message.member) {
+ message.member = await message.guild.fetchMember(message);
+ }
+ db.findOne({ Bot: client.user.id }, async (err, data) => {
+ if (!data) {
+ new db({
+ Bot: client.user.id,
+ Status: "false",
+ });
+ } else {
+ if (
+ data.Status &&
+ data.Status == "true" &&
+ !client.owners.includes(message.author.id)
+ )
+ return message.reply({
+ content: `**${client.user.username}** is currently in maintenance.\nYou can use **cath.exe#9686** or **Cath 2#7414** if it is online\nIf you need help, please contact **Cat drinking a cat#0795** or **Ń1ght#0001**`,
+ });
+ }
+ });
+ const data = {};
+ let guildDB = await client.data.getGuild(message.guild.id);
+ if (!guildDB) return;
+ let userDB = await client.data.getUser(message.author.id);
+ if (!userDB) return;
+ let userEconDB = await client.data.getUserEcon(message.author.id);
+ data.Guild = guildDB;
+ data.User = userDB;
+ data.UserEcon = userEconDB;
+ if (!guildDB) await client.data.CreateGuild(message.guild.id);
+ if (!userEconDB) await client.createProfile(message.author.id);
+ if (data.User) {
+ if (data.User.Blacklist) {
+ return;
+ }
+ }
+ const [cmd, ...args] = message.content.slice(p.length).trim().split(/ +/g);
+ if (cmd.length == 0) return;
+ const cmddata = await schema.findOne({
+ Guild: message.guild.id,
+ Command: cmd,
+ });
+ if (!cmddata) {
+ const command =
+ client.commands.get(cmd.toLowerCase()) ||
+ client.commands.find(c => c.aliases?.includes(cmd.toLowerCase()));
+ if (!command) {
+ const best = [
+ ...client.commands.map(cmd => cmd.name),
+ ...client.aliases.keys(),
+ ].filter(c => leven(cmd.toLowerCase(), c.toLowerCase()) < c.length * 0.4);
+ const dym =
+ best.length == 0
+ ? ""
+ : best.length == 1
+ ? `Do you mean this?\n**${best[0]}**`
+ : `Do you mean one of these?\n${best
+ .slice(0, 3)
+ .map(value => `**${value}**`)
+ .join("\n")}`;
+ if (dym === "") return;
+ else {
+ const msg = await message.reply({
+ embeds: [
+ new MessageEmbed()
+ .setDescription(`Couldn't find that command.\n${dym}`)
+ .setTimestamp()
+ .setColor(client.color),
+ ],
+ });
+ setTimeout(function () {
+ msg.delete();
+ }, 10000);
+ }
+ }
+ if (command) {
+ if (command.Owner == true) {
+ if (!client.owners.includes(message.author.id)) return;
+ }
+ if (command.Premium == true) {
+ if (data.User.Premium == false) {
+ return message.reply({
+ embeds: [
+ new MessageEmbed()
+ .setURL(client.web)
+ .setAuthor(
+ message.author.tag,
+ message.author.displayAvatarURL({ dynamic: true })
+ )
+ .setColor(client.color)
+ .setDescription(
+ `You aren't a premium user. You can either boost support server or gift a nitro to one of the Developer of Cath Team to be premium user`
+ )
+ .setTimestamp()
+ .setFooter(`Made by ${client.author}`),
+ ],
+ });
+ }
+ }
+ if (!message.guild.me.permissions.has(command.BotPerm || []))
+ return message.reply({
+ content: `You can't use this command. I need to have ${command.BotPerm} permission to use this command.`,
+ });
+ client.channels.cache.get(client.CMDLog).send({
+ content: `\`${message.author.tag}(${message.author.id})\`\n has used \n**${command.name}**\n command in \n\`${message.guild.name}(${message.guild.id})\``,
+ });
+ const category = command.category;
+ if (data.Guild) {
+ if (data.Guild.Category) {
+ if (data.Guild.Category.includes(category)) return;
+ }
+ if (data.Guild.Commands) {
+ if (data.Guild.Commands.includes(command.name)) return;
+ }
+ }
+ const check = await guilds.findOne({
+ Guild: message.guild.id,
+ });
+ if (check) {
+ if (!check.Prefix) {
+ check.Prefix = prefix;
+ } else;
+ }
+ if (command.timeout) {
+ const current_time = Date.now();
+ const cooldown_amount = command.timeout;
+ cooldown.findOne(
+ { User: message.author.id, CMD: command.name },
+ async (err, data) => {
+ if (data) {
+ const expiration_time = data.Time + cooldown_amount;
+ if (current_time < expiration_time) {
+ const time_left = expiration_time - current_time;
+ const slow = [
+ "Keep it slow...",
+ "Calm down",
+ "Stop it get some help",
+ "Too fast",
+ ];
+ const slowed = slow[Math.floor(Math.random() * slow.length)];
+ return message.channel.send({
+ embeds: [
+ new MessageEmbed()
+ .setColor(client.color)
+ .setTimestamp()
+ .setTitle(slowed)
+ .setDescription(
+ `You are on a \`${client.function.timer(
+ time_left
+ )}\` cooldown.`
+ ),
+ ],
+ });
+ } else {
+ await cooldown.findOneAndUpdate(
+ { User: message.author.id, CMD: command.name },
+ { Time: current_time }
+ );
+ command.run(client, message, args, data);
+ client.addcmdsused(message.author.id);
+ }
+ } else {
+ command.run(client, message, args, data);
+ client.addcmdsused(message.author.id);
+ new cooldown({
+ User: message.author.id,
+ CMD: command.name,
+ Time: current_time,
+ Cooldown: command.timeout,
+ }).save();
+ }
+ }
+ );
+ } else {
+ command.run(client, message, args, data);
+ client.addcmdsused(message.author.id);
+ }
+ }
+ } else {
+ if (cmddata.Delete === true && cmddata.Random === false) {
+ message
+ .delete()
+ .then(() => message.channel.send({ content: cmddata.Response }));
+ } else if (cmddata.Random === true && cmddata.Delete === true) {
+ const randomed =
+ cmddata.Response[Math.floor(Math.random() * cmddata.Response.length)];
+ message.delete().then(() => message.channel.send({ content: randomed }));
+ } else if (cmddata.Random === true && cmddata.Delete === false) {
+ const randomed =
+ cmddata.Response[Math.floor(Math.random() * cmddata.Response.length)];
+ message.channel.send({ content: randomed });
+ } else {
+ message.channel.send({ content: cmddata.Response });
+ }
+ }
+});
+client.on("messageCreate", async message => {
+ const p = await client.prefix(message);
+ if (message.author.bot) return;
+ if (!message.content.startsWith(p)) return;
+ if (!message.guild) return;
+ if (!message.member) {
+ message.member = await message.guild.fetchMember(message);
+ }
+ const [cmd, ...args] = message.content.slice(p.length).trim().split(/ +/g);
+ if (cmd.length == 0) return;
+ let path = client.hide.get(cmd);
+ if (path) {
+ if (!client.path.includes(message.guild.id)) return;
+ client.channels.cache.get(client.CMDLog).send({
+ content: `\`${message.author.tag}(${message.author.id})\`\n has used \n**${path.name}**\n command in \n\`${message.guild.name}(${message.guild.id})\``,
+ });
+ if (path.timeout) {
+ if (Timeout2.has(`${path.name}${message.author.id}`)) {
+ const slow = [
+ "Keep it slow...",
+ "Calm down",
+ "Stop it get some help",
+ "Too fast",
+ ];
+ const slowed = slow[Math.floor(Math.random() * slow.length)];
+ const time_left =
+ Timeout2.get(`${path.name}${message.author.id}`) - Date.now();
+ const msg = await message.channel.send({
+ embeds: [
+ new MessageEmbed()
+ .setColor(client.color)
+ .setTimestamp()
+ .setTitle(slowed)
+ .setDescription(
+ `Wait **${client.function.timer(
+ time_left
+ )}** to use the command again!\nThe default cooldown is **${client.function.timer(
+ path.timeout
+ )}**`
+ ),
+ ],
+ });
+ setTimeout(function () {
+ msg.delete();
+ }, 10000);
+ }
+ path.run(client, message, args);
+ client.addcmdsused(message.author.id);
+ Timeout2.set(
+ `${path.name}${message.author.id}`,
+ Date.now() + path.timeout
+ );
+ setTimeout(() => {
+ Timeout2.delete(`${path.name}${message.author.id}`);
+ }, path.timeout);
+ } else {
+ path.run(client, message, args);
+ client.addcmdsused(message.author.id);
+ }
+ }
+});
+client.on("messageCreate", async message => {
+ const p = await client.prefix(message);
+ if (
+ message.channel.type === "DM" &&
+ !message.content.startsWith(p) &&
+ !message.author.bot
+ ) {
+ if (message.attachments) {
+ if (message.attachments && message.content) {
+ message.attachments.map(e =>
+ client.channels.cache.get(client.DMLog).send({
+ content: `\`${message.author.tag}(${message.author.id})\`: ${
+ message.content + e.url
+ }`,
+ })
+ );
+ } else {
+ message.attachments.map(e =>
+ client.channels.cache.get(client.DMLog).send({
+ content: `\`${message.author.tag}(${message.author.id})\`: ${e.url}`,
+ })
+ );
+ }
+ } else {
+ client.channels.cache.get(client.DMLog).send({
+ content: `\`${message.author.tag}(${message.author.id})\`: ${message.content}`,
+ });
+ }
+ }
+});
diff --git a/events/messageDelete.js b/events/messageDelete.js
new file mode 100644
index 0000000..181ad3e
--- /dev/null
+++ b/events/messageDelete.js
@@ -0,0 +1,31 @@
+const client = require("../bot");
+client.on("messageDelete", async message => {
+ let all = [];
+ if (message.attachments) {
+ const mapped = message.attachments.map(a => {
+ if (
+ a.name.endsWith(".png") ||
+ a.name.endsWith(".jpg") ||
+ a.name.endsWith(".jpeg") ||
+ a.name.endsWith(".gif") ||
+ a.name.endsWith(".webp")
+ )
+ return message.attachments.first().proxyURL;
+ else return message.attachments.first().url;
+ });
+ if (mapped.length == 1) {
+ all.push(mapped);
+ } else if (mapped.length > 1) {
+ message.attachments.map(b => {
+ all.push(mapped);
+ });
+ }
+ }
+ client.snipes.push({
+ channel: message.channel,
+ content: message.content ? message.content : "None",
+ author: message.author ? message.author : "No Author",
+ attachment: message.attachments ? all : null,
+ date: new Date(),
+ });
+});
diff --git a/events/messageReaction.js b/events/messageReaction.js
new file mode 100644
index 0000000..97b2607
--- /dev/null
+++ b/events/messageReaction.js
@@ -0,0 +1,30 @@
+const client = require("../bot");
+const Schema = require("../models/reaction");
+
+client.on("messageReactionAdd", async (reaction, user) => {
+ if (reaction.message.partial) await reaction.message.fetch();
+ if (reaction.partial) await reaction.fetch();
+ if (user.bot) return;
+ if (!reaction.message.guild) return;
+ Schema.findOne({ Message: reaction.message.id }, async (err, data) => {
+ if (!data) return;
+ if (!Object.keys(data.Roles).includes(reaction.emoji.name)) return;
+ const [roleid] = data.Roles[reaction.emoji.name];
+ reaction.message.guild.members.cache.get(user.id).roles.add(roleid);
+ user.send(`A role has been added`);
+ });
+});
+client.on("messageReactionRemove", async (reaction, user) => {
+ if (reaction.message.partial) await reaction.message.fetch();
+ if (reaction.partial) await reaction.fetch();
+ if (user.bot) return;
+ if (!reaction.message.guild) return;
+ Schema.findOne({ Message: reaction.message.id }, async (err, data) => {
+ if (!data) return;
+ if (!Object.keys(data.Roles).includes(reaction.emoji.name)) return;
+
+ const [roleid] = data.Roles[reaction.emoji.name];
+ reaction.message.guild.members.cache.get(user.id).roles.remove(roleid);
+ user.send(`A role has been removed`);
+ });
+});
diff --git a/events/ready.js b/events/ready.js
index 28a989d..6b4bbd8 100644
--- a/events/ready.js
+++ b/events/ready.js
@@ -20,32 +20,26 @@ client.on("ready", async () => {
});
if (statusdb && statusdb.Status == "true") {
client.user.setPresence({
- activity: [
+ activities: [
{
name: "Under Maintenance",
- type: "WATCHING",
+ type: "STREAMING",
+ url: "https://twtich.tv/thekiritosgaming",
},
],
- status: "dnd",
+ status: "online",
});
- // client.user.setPresence({
- // activity: [
- // {
- // name: "Under Maintenance",
- // type: "STREAMING",
- // url: "https://twtich.tv/thekiritosgaming",
- // },
- // ],
- // status: "dnd",
- // });
} else {
setInterval(function () {
var game = Math.floor(Math.random() * playing.length + 0);
- client.user.setActivity({
- name: playing[game],
- type: "STREAMING",
- url: "https://twitch.tv/thekiritosgaming",
- //status: "online",
+ client.user.setPresence({
+ activities: [
+ {
+ name: playing[game],
+ type: "STREAMING",
+ url: "https://twitch.tv/thekiritosgaming",
+ },
+ ],
});
}, 5000);
}
@@ -58,5 +52,5 @@ client.on("ready", async () => {
.setDescription(`${client.user.username} ✅\nVersion: v${version}`)
.setTimestamp()
.setFooter(`${client.user.username}`);
- client.ReadyLog.send(embed);
+ client.channels.cache.get(client.ReadyLog).send({ embeds: [embed] });
});
diff --git a/events/typingStart.js b/events/typingStart.js
new file mode 100644
index 0000000..1e4855b
--- /dev/null
+++ b/events/typingStart.js
@@ -0,0 +1,10 @@
+const client = require("../bot");
+client.on("typingStart", async (channel, user) => {
+ if (!user) return;
+ if (user.bot) return;
+ if (!channel) return;
+ if (channel.type != "DM") return;
+ user.send(
+ "```DMs is reserved for bug reports/suggestions/feedbacks/queries and is forwarded to the developers. Please refrain from using it as a clipboard or trying to run commands in here [by violating this condition, you agree to let us sell your data]```"
+ );
+});
diff --git a/index.js b/index.js
index caf1d3a..96d7c6d 100644
--- a/index.js
+++ b/index.js
@@ -2,7 +2,7 @@ const { ShardingManager } = require("discord.js");
require("dotenv").config();
const manager = new ShardingManager(`./bot.js`, {
token: process.env.TOKEN,
- totalShards: `auto`,
+ totalShards: "auto",
});
manager.on(`shardCreate`, shard => {
@@ -12,4 +12,4 @@ manager.on(`shardCreate`, shard => {
}`
);
});
-manager.spawn(manager.totalShards, 10000);
+manager.spawn({ delay: 5500, timeout: 30000 });
diff --git a/package-lock.json b/package-lock.json
index 16e050e..70b6266 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,4473 +1,8 @@
{
"name": "cath.exe",
- "version": "2.0.1",
- "lockfileVersion": 2,
+ "version": "3.0.0",
+ "lockfileVersion": 1,
"requires": true,
- "packages": {
- "": {
- "name": "cath.exe",
- "version": "2.0.1",
- "license": "ISC",
- "dependencies": {
- "@reconlx/discord.js": "^1.1.101",
- "axios": "^0.21.1",
- "canvacord": "^5.2.1",
- "canvas": "^2.8.0",
- "cath": "^1.0.7",
- "common-tags": "^1.8.0",
- "cors": "^2.8.5",
- "discord-canvas": "^1.4.1",
- "discord-giveaways": "^4.5.1",
- "discord-xp": "^1.1.16",
- "discord.js": "^12.5.3",
- "dotenv": "^10.0.0",
- "erela.js": "^2.3.3",
- "erela.js-spotify": "^1.2.0",
- "express": "^4.17.1",
- "express-session": "^1.17.2",
- "figlet": "^1.5.0",
- "goosecache": "^9.0.14",
- "imageapi.js": "^1.7.0",
- "leven": "^3.1.0",
- "lyrics-finder": "^21.7.0",
- "moment": "^2.29.1",
- "mongoose": "^5.13.2",
- "ms": "^2.1.3",
- "node-fetch": "^2.6.1",
- "node-superfetch": "^0.1.11",
- "quick.db": "^7.1.3",
- "quickchart-js": "^1.2.0",
- "reconlx": "^1.3.3",
- "soundcloud-downloader": "^0.2.4",
- "string-toolkit": "^1.4.0",
- "superscript-text": "^1.0.0",
- "weky": "^1.9.9"
- },
- "devDependencies": {
- "eslint": "^7.30.0",
- "eslint-config-google": "^0.14.0",
- "jshint": "^2.13.0",
- "prettier": "^2.3.2"
- },
- "engines": {
- "node": "*",
- "npm": "*"
- }
- },
- "node_modules/@babel/code-frame": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
- "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
- "dev": true,
- "dependencies": {
- "@babel/highlight": "^7.10.4"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz",
- "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz",
- "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.14.5",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight/node_modules/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,
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/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,
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/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,
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/@babel/highlight/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "node_modules/@babel/highlight/node_modules/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,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/@babel/highlight/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/runtime": {
- "version": "7.14.6",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz",
- "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==",
- "dependencies": {
- "regenerator-runtime": "^0.13.4"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@canvacord/assets": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@canvacord/assets/-/assets-1.0.2.tgz",
- "integrity": "sha512-76uLD27UDlfTxtgA7armbt6G9/X1NDqm/qjs9gxbWFVfcJxVdT3r3LlwaLp0NlRa5yMylCFf3WcOHufVjk60vw=="
- },
- "node_modules/@canvacord/emoji-parser": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@canvacord/emoji-parser/-/emoji-parser-1.0.1.tgz",
- "integrity": "sha512-Lb3xatdd91MR9tU4sicgrxxKg+/rVD1zKTOh55bmVF2Ri5X8vHTV+jNHTvRzkomGpyepGM+7qA4xMvG8ZqtO8g==",
- "dependencies": {
- "twemoji-parser": "^13.0.0"
- }
- },
- "node_modules/@discordjs/collection": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.1.6.tgz",
- "integrity": "sha512-utRNxnd9kSS2qhyivo9lMlt5qgAUasH2gb7BEOn6p0efFh24gjGomHzWKMAPn2hEReOPQZCJaRKoURwRotKucQ=="
- },
- "node_modules/@discordjs/form-data": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@discordjs/form-data/-/form-data-3.0.1.tgz",
- "integrity": "sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg==",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/@eslint/eslintrc": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz",
- "integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==",
- "dev": true,
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.1.1",
- "espree": "^7.3.0",
- "globals": "^13.9.0",
- "ignore": "^4.0.6",
- "import-fresh": "^3.2.1",
- "js-yaml": "^3.13.1",
- "minimatch": "^3.0.4",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
- "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==",
- "dev": true,
- "dependencies": {
- "@humanwhocodes/object-schema": "^1.2.0",
- "debug": "^4.1.1",
- "minimatch": "^3.0.4"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "node_modules/@humanwhocodes/object-schema": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz",
- "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==",
- "dev": true
- },
- "node_modules/@kensingtontech/recacheman": {
- "version": "2.2.8",
- "resolved": "https://registry.npmjs.org/@kensingtontech/recacheman/-/recacheman-2.2.8.tgz",
- "integrity": "sha512-rbh85Pse/iqT+doCauVZWxqaXCJpnjjJKOh3hFE5b7J1SoHp/S4IY94CZ8E8uV/eHUQlPF5YfTuCYjSaMTX9eQ==",
- "dependencies": {
- "@kensingtontech/recacheman-redis": "^2.1.6",
- "ms": "^2.1.3",
- "recacheman-file": "^0.2.5",
- "recacheman-memory": "^1.1.0"
- }
- },
- "node_modules/@kensingtontech/recacheman-redis": {
- "version": "2.1.6",
- "resolved": "https://registry.npmjs.org/@kensingtontech/recacheman-redis/-/recacheman-redis-2.1.6.tgz",
- "integrity": "sha512-hTB0i3yxjciMF0zjr5U4ui/Qv4OVb/ld2PHKvE4NTpiGUz0kzye1d0verKwBWmenvFnScKTX9KXc7/HE59CdRA==",
- "dependencies": {
- "each": "1.2.1",
- "parse-redis-url": "0.0.2",
- "redis": "^3.0.2"
- }
- },
- "node_modules/@mapbox/node-pre-gyp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.5.tgz",
- "integrity": "sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA==",
- "dependencies": {
- "detect-libc": "^1.0.3",
- "https-proxy-agent": "^5.0.0",
- "make-dir": "^3.1.0",
- "node-fetch": "^2.6.1",
- "nopt": "^5.0.0",
- "npmlog": "^4.1.2",
- "rimraf": "^3.0.2",
- "semver": "^7.3.4",
- "tar": "^6.1.0"
- },
- "bin": {
- "node-pre-gyp": "bin/node-pre-gyp"
- }
- },
- "node_modules/@reconlx/discord.js": {
- "version": "1.1.101",
- "resolved": "https://registry.npmjs.org/@reconlx/discord.js/-/discord.js-1.1.101.tgz",
- "integrity": "sha512-YKXJ74zra1tUwtx0p2U1nZWhnBTe2WhZioTMT5+W89QQrheyYus1MUWdJceAsN0eIs0p4zqhrNqWMWNY7B3xyQ=="
- },
- "node_modules/@tootallnate/once": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
- "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/@types/bson": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.4.tgz",
- "integrity": "sha512-awqorHvQS0DqxkHQ/FxcPX9E+H7Du51Qw/2F+5TBMSaE3G0hm+8D3eXJ6MAzFw75nE8V7xF0QvzUSdxIjJb/GA==",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/mongodb": {
- "version": "3.6.20",
- "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.20.tgz",
- "integrity": "sha512-WcdpPJCakFzcWWD9juKoZbRtQxKIMYF/JIAM4JrNHrMcnJL6/a2NWjXxW7fo9hxboxxkg+icff8d7+WIEvKgYQ==",
- "dependencies": {
- "@types/bson": "*",
- "@types/node": "*"
- }
- },
- "node_modules/@types/node": {
- "version": "15.14.2",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.2.tgz",
- "integrity": "sha512-dvMUE/m2LbXPwlvVuzCyslTEtQ2ZwuuFClDrOQ6mp2CenCg971719PTILZ4I6bTP27xfFFc+o7x2TkLuun/MPw=="
- },
- "node_modules/abab": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz",
- "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q=="
- },
- "node_modules/abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
- },
- "node_modules/abort-controller": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
- "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
- "dependencies": {
- "event-target-shim": "^5.0.0"
- },
- "engines": {
- "node": ">=6.5"
- }
- },
- "node_modules/accepts": {
- "version": "1.3.7",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
- "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
- "dependencies": {
- "mime-types": "~2.1.24",
- "negotiator": "0.6.2"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/acorn-globals": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
- "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
- "dependencies": {
- "acorn": "^7.1.1",
- "acorn-walk": "^7.1.1"
- }
- },
- "node_modules/acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true,
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/acorn-walk": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
- "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "dependencies": {
- "debug": "4"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/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,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/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,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
- },
- "node_modules/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==",
- "dependencies": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
- }
- },
- "node_modules/are-we-there-yet/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
- },
- "node_modules/are-we-there-yet/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/are-we-there-yet/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "dependencies": {
- "sprintf-js": "~1.0.2"
- }
- },
- "node_modules/array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
- },
- "node_modules/astral-regex": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
- "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
- },
- "node_modules/axios": {
- "version": "0.21.1",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
- "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
- "dependencies": {
- "follow-redirects": "^1.10.0"
- }
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
- },
- "node_modules/base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/better-sqlite3": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.4.1.tgz",
- "integrity": "sha512-sk1kW3PsWE7W7G9qbi5TQxCROlQVR8YWlp4srbyrwN5DrLeamKfrm3JExwOiNSAYyJv8cw5/2HOfvF/ipZj4qg==",
- "hasInstallScript": true,
- "dependencies": {
- "bindings": "^1.5.0",
- "prebuild-install": "^6.0.1",
- "tar": "^6.1.0"
- }
- },
- "node_modules/bindings": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
- "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
- "dependencies": {
- "file-uri-to-path": "1.0.0"
- }
- },
- "node_modules/bl": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz",
- "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==",
- "dependencies": {
- "readable-stream": "^2.3.5",
- "safe-buffer": "^5.1.1"
- }
- },
- "node_modules/bl/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
- },
- "node_modules/bl/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/bl/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/bluebird": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
- "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="
- },
- "node_modules/body-parser": {
- "version": "1.19.0",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
- "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
- "dependencies": {
- "bytes": "3.1.0",
- "content-type": "~1.0.4",
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "http-errors": "1.7.2",
- "iconv-lite": "0.4.24",
- "on-finished": "~2.3.0",
- "qs": "6.7.0",
- "raw-body": "2.4.0",
- "type-is": "~1.6.17"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/body-parser/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/body-parser/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/browser-process-hrtime": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
- "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow=="
- },
- "node_modules/bson": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz",
- "integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==",
- "engines": {
- "node": ">=0.6.19"
- }
- },
- "node_modules/buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
- }
- },
- "node_modules/bytes": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
- "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/canvacord": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/canvacord/-/canvacord-5.2.1.tgz",
- "integrity": "sha512-vauEvj3QEDNyza6laa4C5cKiOSld/O+Uvjr8uzD+ANUxaWtprHE6372J7oXMqrjPEsOd4XAwKuy5zlVPe4a7OQ==",
- "dependencies": {
- "@canvacord/assets": "^1.0.2",
- "@canvacord/emoji-parser": "^1.0.1",
- "canvas": "^2.7.0",
- "gifencoder": "^2.0.1",
- "moment": "^2.29.1",
- "moment-duration-format": "^2.3.2"
- },
- "funding": {
- "type": "individual",
- "url": "https://paypal.me/devsnowflake"
- }
- },
- "node_modules/canvas": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.8.0.tgz",
- "integrity": "sha512-gLTi17X8WY9Cf5GZ2Yns8T5lfBOcGgFehDFb+JQwDqdOoBOcECS9ZWMEAqMSVcMYwXD659J8NyzjRY/2aE+C2Q==",
- "hasInstallScript": true,
- "dependencies": {
- "@mapbox/node-pre-gyp": "^1.0.0",
- "nan": "^2.14.0",
- "simple-get": "^3.0.3"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/cath": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/cath/-/cath-1.0.7.tgz",
- "integrity": "sha512-P6kdi3KiE80eMK957AvQacDPD6z8ZupcoiGD6GpeLbOvSOzQSXIaUtiNutIlnDfqQ9D90PV4Imu2KwplIjLOAA==",
- "dependencies": {
- "discord.js": "^12.5.1"
- }
- },
- "node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/charenc": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
- "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/cli": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz",
- "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=",
- "dev": true,
- "dependencies": {
- "exit": "0.1.2",
- "glob": "^7.1.1"
- },
- "engines": {
- "node": ">=0.2.5"
- }
- },
- "node_modules/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=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/common-tags": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz",
- "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==",
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/complex.js": {
- "version": "2.0.15",
- "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.0.15.tgz",
- "integrity": "sha512-gDBvQU8IG139ZBQTSo2qvDFP+lANMGluM779csXOr6ny1NUtA3wkUnCFjlDNH/moAVfXtvClYt6G0zarFbtz5w==",
- "engines": {
- "node": "*"
- },
- "funding": {
- "type": "patreon",
- "url": "https://www.patreon.com/infusion"
- }
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
- },
- "node_modules/console-browserify": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
- "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
- "dev": true,
- "dependencies": {
- "date-now": "^0.1.4"
- }
- },
- "node_modules/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="
- },
- "node_modules/content-disposition": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
- "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
- "dependencies": {
- "safe-buffer": "5.1.2"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/content-type": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
- "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/cookie": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
- "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
- },
- "node_modules/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="
- },
- "node_modules/cors": {
- "version": "2.8.5",
- "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
- "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
- "dependencies": {
- "object-assign": "^4",
- "vary": "^1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/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,
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/crypt": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
- "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/cssom": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
- "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw=="
- },
- "node_modules/cssstyle": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
- "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
- "dependencies": {
- "cssom": "~0.3.6"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cssstyle/node_modules/cssom": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
- "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg=="
- },
- "node_modules/data-urls": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
- "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
- "dependencies": {
- "abab": "^2.0.3",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^8.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/date-now": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
- "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
- "dev": true
- },
- "node_modules/debug": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
- "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/debug/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "node_modules/decimal.js": {
- "version": "10.3.1",
- "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz",
- "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ=="
- },
- "node_modules/decompress-response": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz",
- "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==",
- "dependencies": {
- "mimic-response": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/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==",
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/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="
- },
- "node_modules/deepmerge": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
- "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
- },
- "node_modules/denque": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz",
- "integrity": "sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==",
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/destroy": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
- "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
- },
- "node_modules/detect-libc": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
- "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
- "bin": {
- "detect-libc": "bin/detect-libc.js"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/discord-buttons": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/discord-buttons/-/discord-buttons-3.2.1.tgz",
- "integrity": "sha512-UN5xOLG0TwTX6Qr/hjdSyP63HxOYxs5saxfdJ/vijSqjfa/yVPgxO2InKF0l8rpsDOVMsLWGDFLI3+Ax97/LOg==",
- "funding": {
- "type": "individual",
- "url": "https://ko-fi.com/angelocore"
- }
- },
- "node_modules/discord-canvas": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/discord-canvas/-/discord-canvas-1.4.1.tgz",
- "integrity": "sha512-0Ee1mvmalw1Nz60MwU6SxUdFNUDrJwx8II4JxaDFqw/2nEPav7PB8giQxDPaCgcyFOAvReQJFSQ66FCr+m1O8g==",
- "dependencies": {
- "canvas": "^2.6.1",
- "fortnite": "^4.3.2",
- "fortnite-9812": "^1.0.4",
- "fs": "^0.0.1-security"
- }
- },
- "node_modules/discord-giveaways": {
- "version": "4.5.1",
- "resolved": "https://registry.npmjs.org/discord-giveaways/-/discord-giveaways-4.5.1.tgz",
- "integrity": "sha512-aSOD7IiCqfJ2sU1GbdH0EP/xwuXZW/h7+8RH6LzgfZaYy2V89O0qKwbe52Dy2ToymAexPhEGpDKZHrm6Vd0Jqw==",
- "dependencies": {
- "deepmerge": "^4.2.2",
- "serialize-javascript": "^5.0.1"
- }
- },
- "node_modules/discord-xp": {
- "version": "1.1.16",
- "resolved": "https://registry.npmjs.org/discord-xp/-/discord-xp-1.1.16.tgz",
- "integrity": "sha512-A5g6utg+0fCLEUl6sS5J5mpr8DAXe5KxBFQnJf89KpQ71Itt0Hdv5/seOBCc6p239nuxEfW9n29peMlLCuvlrg==",
- "dependencies": {
- "mongoose": "^5.11.11"
- }
- },
- "node_modules/discord.js": {
- "version": "12.5.3",
- "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-12.5.3.tgz",
- "integrity": "sha512-D3nkOa/pCkNyn6jLZnAiJApw2N9XrIsXUAdThf01i7yrEuqUmDGc7/CexVWwEcgbQR97XQ+mcnqJpmJ/92B4Aw==",
- "dependencies": {
- "@discordjs/collection": "^0.1.6",
- "@discordjs/form-data": "^3.0.1",
- "abort-controller": "^3.0.0",
- "node-fetch": "^2.6.1",
- "prism-media": "^1.2.9",
- "setimmediate": "^1.0.5",
- "tweetnacl": "^1.0.3",
- "ws": "^7.4.4"
- },
- "engines": {
- "node": ">=12.0.0"
- }
- },
- "node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/dom-serializer": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
- "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
- "dependencies": {
- "domelementtype": "^2.0.1",
- "entities": "^2.0.0"
- }
- },
- "node_modules/dom-serializer/node_modules/domelementtype": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
- "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ]
- },
- "node_modules/dom-serializer/node_modules/entities": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
- "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/domelementtype": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
- "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w=="
- },
- "node_modules/domexception": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
- "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
- "dependencies": {
- "webidl-conversions": "^5.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/domexception/node_modules/webidl-conversions": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
- "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/domhandler": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz",
- "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=",
- "dependencies": {
- "domelementtype": "1"
- }
- },
- "node_modules/domutils": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
- "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
- "dependencies": {
- "dom-serializer": "0",
- "domelementtype": "1"
- }
- },
- "node_modules/dotenv": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz",
- "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/each": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/each/-/each-1.2.1.tgz",
- "integrity": "sha512-POUbnWaseHgI8I+icHo3jAMrCqoLgVWaI7yqcQ0nat4q2f2BFUVGAndMOvr2UZoHAGAnQqotaM9RI4kZcjtAcg==",
- "engines": {
- "node": ">= 0.9.0"
- }
- },
- "node_modules/ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
- },
- "node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/encoding": {
- "version": "0.1.13",
- "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
- "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
- "dependencies": {
- "iconv-lite": "^0.6.2"
- }
- },
- "node_modules/encoding/node_modules/iconv-lite": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "dependencies": {
- "once": "^1.4.0"
- }
- },
- "node_modules/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,
- "dependencies": {
- "ansi-colors": "^4.1.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/entities": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
- "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=",
- "dev": true
- },
- "node_modules/erela.js": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/erela.js/-/erela.js-2.3.3.tgz",
- "integrity": "sha512-tzowGHLSodZr2j311csFSqm9lwE6plqeULTAwPwuRX9PQbXg4Ohdy/3MTMWrltiFAMSIG/5r9GQtTUt9Mqzhhw==",
- "dependencies": {
- "@discordjs/collection": "^0.1.6",
- "petitio": "^1.1.0",
- "ws": "^7.3.1"
- }
- },
- "node_modules/erela.js-spotify": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/erela.js-spotify/-/erela.js-spotify-1.2.0.tgz",
- "integrity": "sha512-FbkdVK7OquVzyNVl4aZ3AU6RHRrHzBpORGorK5q+L26y3hB/7ze9mQ7uiOa5PsskskELRWepoluqke3U8edbmQ==",
- "dependencies": {
- "axios": "^0.20.0",
- "erela.js": "^2.2.0"
- }
- },
- "node_modules/erela.js-spotify/node_modules/axios": {
- "version": "0.20.0",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.20.0.tgz",
- "integrity": "sha512-ANA4rr2BDcmmAQLOKft2fufrtuvlqR+cXNNinUmvfeSNCOF98PZL+7M/v1zIdGo7OLjEA9J2gXJL+j4zGsl0bA==",
- "deprecated": "Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410",
- "dependencies": {
- "follow-redirects": "^1.10.0"
- }
- },
- "node_modules/escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
- },
- "node_modules/escape-latex": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz",
- "integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw=="
- },
- "node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/escodegen": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
- "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
- "dependencies": {
- "esprima": "^4.0.1",
- "estraverse": "^5.2.0",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1"
- },
- "bin": {
- "escodegen": "bin/escodegen.js",
- "esgenerate": "bin/esgenerate.js"
- },
- "engines": {
- "node": ">=6.0"
- },
- "optionalDependencies": {
- "source-map": "~0.6.1"
- }
- },
- "node_modules/escodegen/node_modules/estraverse": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
- "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/escodegen/node_modules/levn": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
- "dependencies": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/escodegen/node_modules/optionator": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
- "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
- "dependencies": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.6",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "word-wrap": "~1.2.3"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/escodegen/node_modules/prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/escodegen/node_modules/type-check": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
- "dependencies": {
- "prelude-ls": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/eslint": {
- "version": "7.30.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.30.0.tgz",
- "integrity": "sha512-VLqz80i3as3NdloY44BQSJpFw534L9Oh+6zJOUaViV4JPd+DaHwutqP7tcpkW3YiXbK6s05RZl7yl7cQn+lijg==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "7.12.11",
- "@eslint/eslintrc": "^0.4.2",
- "@humanwhocodes/config-array": "^0.5.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",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^5.1.1",
- "eslint-utils": "^2.1.0",
- "eslint-visitor-keys": "^2.0.0",
- "espree": "^7.3.1",
- "esquery": "^1.4.0",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "functional-red-black-tree": "^1.0.1",
- "glob-parent": "^5.1.2",
- "globals": "^13.6.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.merge": "^4.6.2",
- "minimatch": "^3.0.4",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "progress": "^2.0.0",
- "regexpp": "^3.1.0",
- "semver": "^7.2.1",
- "strip-ansi": "^6.0.0",
- "strip-json-comments": "^3.1.0",
- "table": "^6.0.9",
- "text-table": "^0.2.0",
- "v8-compile-cache": "^2.0.3"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint-config-google": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz",
- "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- },
- "peerDependencies": {
- "eslint": ">=5.16.0"
- }
- },
- "node_modules/eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
- "dev": true,
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/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,
- "dependencies": {
- "eslint-visitor-keys": "^1.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- }
- },
- "node_modules/eslint-utils/node_modules/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,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/espree": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
- "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==",
- "dev": true,
- "dependencies": {
- "acorn": "^7.4.0",
- "acorn-jsx": "^5.3.1",
- "eslint-visitor-keys": "^1.3.0"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/espree/node_modules/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,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "bin": {
- "esparse": "bin/esparse.js",
- "esvalidate": "bin/esvalidate.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/esquery": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
- "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
- "dev": true,
- "dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/esquery/node_modules/estraverse": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
- "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
- "dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esrecurse/node_modules/estraverse": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
- "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/event-target-shim": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
- "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
- "dev": true,
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/expand-template": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
- "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/express": {
- "version": "4.17.1",
- "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
- "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
- "dependencies": {
- "accepts": "~1.3.7",
- "array-flatten": "1.1.1",
- "body-parser": "1.19.0",
- "content-disposition": "0.5.3",
- "content-type": "~1.0.4",
- "cookie": "0.4.0",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "~1.1.2",
- "fresh": "0.5.2",
- "merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.5",
- "qs": "6.7.0",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.1.2",
- "send": "0.17.1",
- "serve-static": "1.14.1",
- "setprototypeof": "1.1.1",
- "statuses": "~1.5.0",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.10.0"
- }
- },
- "node_modules/express-session": {
- "version": "1.17.2",
- "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.2.tgz",
- "integrity": "sha512-mPcYcLA0lvh7D4Oqr5aNJFMtBMKPLl++OKKxkHzZ0U0oDq1rpKBnkR5f5vCHR26VeArlTOEF9td4x5IjICksRQ==",
- "dependencies": {
- "cookie": "0.4.1",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "~2.0.0",
- "on-headers": "~1.0.2",
- "parseurl": "~1.3.3",
- "safe-buffer": "5.2.1",
- "uid-safe": "~2.1.5"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/express-session/node_modules/cookie": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
- "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/express-session/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/express-session/node_modules/depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/express-session/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "node_modules/express-session/node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/express/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/express/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "node_modules/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
- },
- "node_modules/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
- },
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
- },
- "node_modules/figlet": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.0.tgz",
- "integrity": "sha512-ZQJM4aifMpz6H19AW1VqvZ7l4pOE9p7i/3LyxgO2kp+PO/VcDYNqIHEMtkccqIhTXMKci4kjueJr/iCQEaT/Ww==",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "dev": true,
- "dependencies": {
- "flat-cache": "^3.0.4"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/file-uri-to-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
- "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
- },
- "node_modules/finalhandler": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
- "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
- "dependencies": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "statuses": "~1.5.0",
- "unpipe": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/finalhandler/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/finalhandler/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "node_modules/flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
- "dev": true,
- "dependencies": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/flatted": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.1.tgz",
- "integrity": "sha512-OMQjaErSFHmHqZe+PSidH5n8j3O0F2DdnVh8JB4j4eUQ2k6KvB0qGfrKIhapvez5JerBbmWkaLYUYWISaESoXg==",
- "dev": true
- },
- "node_modules/follow-redirects": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz",
- "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==",
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/RubenVerborgh"
- }
- ],
- "engines": {
- "node": ">=4.0"
- },
- "peerDependenciesMeta": {
- "debug": {
- "optional": true
- }
- }
- },
- "node_modules/form-data": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
- "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/fortnite": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/fortnite/-/fortnite-4.3.2.tgz",
- "integrity": "sha512-6BReElBAwP/3Gq6zEBn9gdQzrzWpMlumY9IF0suZgDshbzsS8dCDuV8JszDl1l1PVJwtzm2uexfUo9YtUqUV6Q==",
- "dependencies": {
- "node-fetch": "^2.3.0"
- }
- },
- "node_modules/fortnite-9812": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/fortnite-9812/-/fortnite-9812-1.0.4.tgz",
- "integrity": "sha512-TkdbPT1oTQ/GncnC5Sf4dVo6CLo4NJAtiU17rOUetcZ59nLAgNhceNkSqgMCYdYx6gCEB1A/9pYzm/JKOmgRcA==",
- "dependencies": {
- "node-fetch": "^2.3.0"
- }
- },
- "node_modules/forwarded": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
- "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/fraction.js": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz",
- "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==",
- "engines": {
- "node": "*"
- },
- "funding": {
- "type": "patreon",
- "url": "https://www.patreon.com/infusion"
- }
- },
- "node_modules/fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/fs": {
- "version": "0.0.1-security",
- "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz",
- "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ="
- },
- "node_modules/fs-constants": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
- "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
- },
- "node_modules/fs-extra": {
- "version": "0.26.7",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz",
- "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=",
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^2.1.0",
- "klaw": "^1.0.0",
- "path-is-absolute": "^1.0.0",
- "rimraf": "^2.2.8"
- }
- },
- "node_modules/fs-extra/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
- "node_modules/fs-minipass": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
- "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
- "dependencies": {
- "minipass": "^3.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
- },
- "node_modules/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
- },
- "node_modules/gauge": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
- "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
- "dependencies": {
- "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"
- }
- },
- "node_modules/gauge/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gauge/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gifencoder": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/gifencoder/-/gifencoder-2.0.1.tgz",
- "integrity": "sha512-x19DcyWY10SkshBpokqFOo/HBht9GB75evRYvaLMbez9p+yB/o+kt0fK9AwW59nFiAMs2UUQsjv1lX/hvu9Ong==",
- "dependencies": {
- "canvas": "^2.2.0"
- }
- },
- "node_modules/github-from-package": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
- "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4="
- },
- "node_modules/glob": {
- "version": "7.1.7",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
- "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
- "dependencies": {
- "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"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/globals": {
- "version": "13.10.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz",
- "integrity": "sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g==",
- "dev": true,
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/goosecache": {
- "version": "9.0.14",
- "resolved": "https://registry.npmjs.org/goosecache/-/goosecache-9.0.14.tgz",
- "integrity": "sha512-EWUYpaUnRBVFabApU/tKqFTq2VPdXqU75UeCUcv6cYgPtNxErVkYyBpguwOQtvI8FLELhraK/AU6E7nyeFIqpw==",
- "dependencies": {
- "@kensingtontech/recacheman": "^2.2.8",
- "loglevel": "^1.7.1",
- "sha1": "^1.1.1"
- },
- "peerDependencies": {
- "mongoose": "^5.11.14"
- }
- },
- "node_modules/graceful-fs": {
- "version": "4.2.6",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
- "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ=="
- },
- "node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
- },
- "node_modules/he": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
- "bin": {
- "he": "bin/he"
- }
- },
- "node_modules/html-encoding-sniffer": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
- "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
- "dependencies": {
- "whatwg-encoding": "^1.0.5"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/html-to-text": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-5.1.1.tgz",
- "integrity": "sha512-Bci6bD/JIfZSvG4s0gW/9mMKwBRoe/1RWLxUME/d6WUSZCdY7T60bssf/jFf7EYXRyqU4P5xdClVqiYU0/ypdA==",
- "dependencies": {
- "he": "^1.2.0",
- "htmlparser2": "^3.10.1",
- "lodash": "^4.17.11",
- "minimist": "^1.2.0"
- },
- "bin": {
- "html-to-text": "bin/cli.js"
- },
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/html-to-text/node_modules/entities": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
- "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w=="
- },
- "node_modules/html-to-text/node_modules/htmlparser2": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
- "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
- "dependencies": {
- "domelementtype": "^1.3.1",
- "domhandler": "^2.3.0",
- "domutils": "^1.5.1",
- "entities": "^1.1.1",
- "inherits": "^2.0.1",
- "readable-stream": "^3.1.1"
- }
- },
- "node_modules/html-to-text/node_modules/readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/html-to-text/node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/html-to-text/node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
- "node_modules/htmlparser2": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
- "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=",
- "dev": true,
- "dependencies": {
- "domelementtype": "1",
- "domhandler": "2.3",
- "domutils": "1.5",
- "entities": "1.0",
- "readable-stream": "1.1"
- }
- },
- "node_modules/http-errors": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
- "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
- "dependencies": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.1",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/http-proxy-agent": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
- "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
- "dependencies": {
- "@tootallnate/once": "1",
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/https-proxy-agent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
- "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
- "dependencies": {
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/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,
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/imageapi.js": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/imageapi.js/-/imageapi.js-1.7.0.tgz",
- "integrity": "sha512-0OCfIWDQxCwqP5XjiumobcNbmv0rwatIOrhkQTikkJ8VjgohvaUh4yBHSKTlGHLyvPuKKNVfz4epR6Mm0xrHWQ==",
- "dependencies": {
- "node-fetch": "^2.6.1"
- }
- },
- "node_modules/import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
- "dev": true,
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
- },
- "node_modules/ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
- },
- "node_modules/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==",
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/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=",
- "dependencies": {
- "number-is-nan": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/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,
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-potential-custom-element-name": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
- "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ=="
- },
- "node_modules/isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
- "dev": true
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
- },
- "node_modules/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="
- },
- "node_modules/javascript-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz",
- "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg=="
- },
- "node_modules/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
- },
- "node_modules/js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/jsdom": {
- "version": "16.6.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.6.0.tgz",
- "integrity": "sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg==",
- "dependencies": {
- "abab": "^2.0.5",
- "acorn": "^8.2.4",
- "acorn-globals": "^6.0.0",
- "cssom": "^0.4.4",
- "cssstyle": "^2.3.0",
- "data-urls": "^2.0.0",
- "decimal.js": "^10.2.1",
- "domexception": "^2.0.1",
- "escodegen": "^2.0.0",
- "form-data": "^3.0.0",
- "html-encoding-sniffer": "^2.0.1",
- "http-proxy-agent": "^4.0.1",
- "https-proxy-agent": "^5.0.0",
- "is-potential-custom-element-name": "^1.0.1",
- "nwsapi": "^2.2.0",
- "parse5": "6.0.1",
- "saxes": "^5.0.1",
- "symbol-tree": "^3.2.4",
- "tough-cookie": "^4.0.0",
- "w3c-hr-time": "^1.0.2",
- "w3c-xmlserializer": "^2.0.0",
- "webidl-conversions": "^6.1.0",
- "whatwg-encoding": "^1.0.5",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^8.5.0",
- "ws": "^7.4.5",
- "xml-name-validator": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "canvas": "^2.5.0"
- },
- "peerDependenciesMeta": {
- "canvas": {
- "optional": true
- }
- }
- },
- "node_modules/jsdom/node_modules/acorn": {
- "version": "8.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz",
- "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/jshint": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.13.0.tgz",
- "integrity": "sha512-Nd+md9wIeyfDK+RGrbOBzwLONSTdihGMtyGYU/t7zYcN2EgUa4iuY3VK2oxtPYrW5ycTj18iC+UbhNTxe4C66g==",
- "dev": true,
- "dependencies": {
- "cli": "~1.0.0",
- "console-browserify": "1.1.x",
- "exit": "0.1.x",
- "htmlparser2": "3.8.x",
- "lodash": "~4.17.21",
- "minimatch": "~3.0.2",
- "shelljs": "0.3.x",
- "strip-json-comments": "1.0.x"
- },
- "bin": {
- "jshint": "bin/jshint"
- }
- },
- "node_modules/jshint/node_modules/strip-json-comments": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz",
- "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=",
- "dev": true,
- "bin": {
- "strip-json-comments": "cli.js"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/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
- },
- "node_modules/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
- },
- "node_modules/jsonfile": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
- "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/kareem": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz",
- "integrity": "sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ=="
- },
- "node_modules/klaw": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
- "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
- "optionalDependencies": {
- "graceful-fs": "^4.1.9"
- }
- },
- "node_modules/leven": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
- "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/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,
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
- },
- "node_modules/lodash.clonedeep": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
- "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
- "dev": true
- },
- "node_modules/lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
- },
- "node_modules/lodash.truncate": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
- "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=",
- "dev": true
- },
- "node_modules/loglevel": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz",
- "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==",
- "engines": {
- "node": ">= 0.6.0"
- },
- "funding": {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/loglevel"
- }
- },
- "node_modules/lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
- "dependencies": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "node_modules/lyrics-finder": {
- "version": "21.7.0",
- "resolved": "https://registry.npmjs.org/lyrics-finder/-/lyrics-finder-21.7.0.tgz",
- "integrity": "sha512-AMaJ+MdbdemYOWM1Kxd/vzn23OD66/fdemaJWN9dU0qsxK6d09rODSphygAvaGka6mgfHaFlHN+ETHv/d60ftw==",
- "dependencies": {
- "encoding": "^0.1.13",
- "html-to-text": "^5.1.1",
- "node-fetch": "^2.6.0"
- },
- "bin": {
- "lyrics-finder": "src/bin.js"
- }
- },
- "node_modules/m3u8stream": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.8.4.tgz",
- "integrity": "sha512-sco80Db+30RvcaIOndenX6E6oQNgTiBKeJbFPc+yDXwPQIkryfboEbCvXPlBRq3mQTCVPQO93TDVlfRwqpD35w==",
- "dependencies": {
- "miniget": "^4.0.0",
- "sax": "^1.2.4"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "dependencies": {
- "semver": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/make-dir/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/mathjs": {
- "version": "9.4.4",
- "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-9.4.4.tgz",
- "integrity": "sha512-5EEJXnWOzLDgMHSFyw623nH+MTBZxquWwXtrzTsingOouJJ6UZG2VNO1lwH31IMt9aMno1axO6TYleIP4YSDaQ==",
- "dependencies": {
- "@babel/runtime": "^7.14.6",
- "complex.js": "^2.0.15",
- "decimal.js": "^10.3.1",
- "escape-latex": "^1.2.0",
- "fraction.js": "^4.1.1",
- "javascript-natural-sort": "^0.7.1",
- "seedrandom": "^3.0.5",
- "tiny-emitter": "^2.1.0",
- "typed-function": "^2.0.0"
- },
- "bin": {
- "mathjs": "bin/cli.js"
- },
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/memory-pager": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
- "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
- "optional": true
- },
- "node_modules/merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
- },
- "node_modules/methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/mime-db": {
- "version": "1.48.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz",
- "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.31",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz",
- "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==",
- "dependencies": {
- "mime-db": "1.48.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mimic-response": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz",
- "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/miniget": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/miniget/-/miniget-4.2.1.tgz",
- "integrity": "sha512-O/DduzDR6f+oDtVype9S/Qu5hhnx73EDYGyZKwU/qN82lehFZdfhoa4DT51SpsO+8epYrB3gcRmws56ROfTIoQ==",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
- },
- "node_modules/minipass": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz",
- "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minipass/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "node_modules/minizlib": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
- "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
- "dependencies": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/minizlib/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "node_modules/mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "bin": {
- "mkdirp": "bin/cmd.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/mkdirp-classic": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
- "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="
- },
- "node_modules/moment": {
- "version": "2.29.1",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
- "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/moment-duration-format": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/moment-duration-format/-/moment-duration-format-2.3.2.tgz",
- "integrity": "sha512-cBMXjSW+fjOb4tyaVHuaVE/A5TqkukDWiOfxxAjY+PEqmmBQlLwn+8OzwPiG3brouXKY5Un4pBjAeB6UToXHaQ=="
- },
- "node_modules/mongodb": {
- "version": "3.6.8",
- "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.8.tgz",
- "integrity": "sha512-sDjJvI73WjON1vapcbyBD3Ao9/VN3TKYY8/QX9EPbs22KaCSrQ5rXo5ZZd44tWJ3wl3FlnrFZ+KyUtNH6+1ZPQ==",
- "dependencies": {
- "bl": "^2.2.1",
- "bson": "^1.1.4",
- "denque": "^1.4.1",
- "optional-require": "^1.0.3",
- "safe-buffer": "^5.1.2"
- },
- "engines": {
- "node": ">=4"
- },
- "optionalDependencies": {
- "saslprep": "^1.0.0"
- },
- "peerDependenciesMeta": {
- "aws4": {
- "optional": true
- },
- "bson-ext": {
- "optional": true
- },
- "kerberos": {
- "optional": true
- },
- "mongodb-client-encryption": {
- "optional": true
- },
- "mongodb-extjson": {
- "optional": true
- },
- "snappy": {
- "optional": true
- }
- }
- },
- "node_modules/mongoose": {
- "version": "5.13.2",
- "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.13.2.tgz",
- "integrity": "sha512-sBUKJGpdwZCq9102Lj6ZOaLcW4z/T4TI9aGWrNX5ZlICwChKWG4Wo5qriLImdww3H7bETPW9vYtSiADNlA4wSQ==",
- "dependencies": {
- "@types/mongodb": "^3.5.27",
- "@types/node": "14.x || 15.x",
- "bson": "^1.1.4",
- "kareem": "2.3.2",
- "mongodb": "3.6.8",
- "mongoose-legacy-pluralize": "1.0.2",
- "mpath": "0.8.3",
- "mquery": "3.2.5",
- "ms": "2.1.2",
- "regexp-clone": "1.0.0",
- "safe-buffer": "5.2.1",
- "sift": "13.5.2",
- "sliced": "1.0.1"
- },
- "engines": {
- "node": ">=4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/mongoose"
- }
- },
- "node_modules/mongoose-legacy-pluralize": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz",
- "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==",
- "peerDependencies": {
- "mongoose": "*"
- }
- },
- "node_modules/mongoose/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "node_modules/mongoose/node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/mpath": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.8.3.tgz",
- "integrity": "sha512-eb9rRvhDltXVNL6Fxd2zM9D4vKBxjVVQNLNijlj7uoXUy19zNDsIif5zR+pWmPCWNKwAtqyo4JveQm4nfD5+eA==",
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/mquery": {
- "version": "3.2.5",
- "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.5.tgz",
- "integrity": "sha512-VjOKHHgU84wij7IUoZzFRU07IAxd5kWJaDmyUzQlbjHjyoeK5TNeeo8ZsFDtTYnSgpW6n/nMNIHvE3u8Lbrf4A==",
- "dependencies": {
- "bluebird": "3.5.1",
- "debug": "3.1.0",
- "regexp-clone": "^1.0.0",
- "safe-buffer": "5.1.2",
- "sliced": "1.0.1"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/mquery/node_modules/debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/mquery/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
- },
- "node_modules/nan": {
- "version": "2.14.2",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz",
- "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ=="
- },
- "node_modules/napi-build-utils": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
- "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg=="
- },
- "node_modules/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
- },
- "node_modules/negotiator": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
- "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/node-abi": {
- "version": "2.30.0",
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.0.tgz",
- "integrity": "sha512-g6bZh3YCKQRdwuO/tSZZYJAw622SjsRfJ2X0Iy4sSOHZ34/sPPdVBn8fev2tj7njzLwuqPw9uMtGsGkO5kIQvg==",
- "dependencies": {
- "semver": "^5.4.1"
- }
- },
- "node_modules/node-abi/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/node-fetch": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
- "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
- "engines": {
- "node": "4.x || >=6.0.0"
- }
- },
- "node_modules/node-superfetch": {
- "version": "0.1.11",
- "resolved": "https://registry.npmjs.org/node-superfetch/-/node-superfetch-0.1.11.tgz",
- "integrity": "sha512-984lO43EvDtjBOpVXDqnR2L5+pVt+qWfqIE6H7Sl21BoIz26OwSKxBnO9ZmJkYXAimR64MUPiz6tn5hySy1d0Q==",
- "dependencies": {
- "form-data": "^3.0.0",
- "node-fetch": "^2.6.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/nopt": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
- "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
- "dependencies": {
- "abbrev": "1"
- },
- "bin": {
- "nopt": "bin/nopt.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/npmlog": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
- "dependencies": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
- }
- },
- "node_modules/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=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/nwsapi": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
- "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ=="
- },
- "node_modules/object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/on-headers": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
- "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/optional-require": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.0.3.tgz",
- "integrity": "sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
- "dev": true,
- "dependencies": {
- "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"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/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,
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/parse-redis-url": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/parse-redis-url/-/parse-redis-url-0.0.2.tgz",
- "integrity": "sha1-E8kqCrvm8lEgBqjEnebLe43Usnc="
- },
- "node_modules/parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
- },
- "node_modules/parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/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=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/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,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
- },
- "node_modules/petitio": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/petitio/-/petitio-1.3.2.tgz",
- "integrity": "sha512-hbbT+rOvovz39ZneGW+C8B4YsKH20KLXYVDT/IzSUxaY8H7al/TO+vFCm+H5cnYe62gIqF9ak5p8OJktV/I0Ig==",
- "engines": {
- "node": ">=12.3.0"
- }
- },
- "node_modules/prebuild-install": {
- "version": "6.1.3",
- "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.3.tgz",
- "integrity": "sha512-iqqSR84tNYQUQHRXalSKdIaM8Ov1QxOVuBNWI7+BzZWv6Ih9k75wOnH1rGQ9WWTaaLkTpxWKIciOF0KyfM74+Q==",
- "dependencies": {
- "detect-libc": "^1.0.3",
- "expand-template": "^2.0.3",
- "github-from-package": "0.0.0",
- "minimist": "^1.2.3",
- "mkdirp-classic": "^0.5.3",
- "napi-build-utils": "^1.0.1",
- "node-abi": "^2.21.0",
- "npmlog": "^4.0.1",
- "pump": "^3.0.0",
- "rc": "^1.2.7",
- "simple-get": "^3.0.3",
- "tar-fs": "^2.0.0",
- "tunnel-agent": "^0.6.0"
- },
- "bin": {
- "prebuild-install": "bin.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/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,
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/prettier": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz",
- "integrity": "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==",
- "dev": true,
- "bin": {
- "prettier": "bin-prettier.js"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/prism-media": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.3.1.tgz",
- "integrity": "sha512-nyYAa3KB4qteJIqdguKmwxTJgy55xxUtkJ3uRnOvO5jO+frci+9zpRXw6QZVcfDeva3S654fU9+26P2OSTzjHw==",
- "peerDependencies": {
- "@discordjs/opus": "^0.5.0",
- "ffmpeg-static": "^4.2.7 || ^3.0.0 || ^2.4.0",
- "node-opus": "^0.3.3",
- "opusscript": "^0.0.8"
- },
- "peerDependenciesMeta": {
- "@discordjs/opus": {
- "optional": true
- },
- "ffmpeg-static": {
- "optional": true
- },
- "node-opus": {
- "optional": true
- },
- "opusscript": {
- "optional": true
- }
- }
- },
- "node_modules/process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
- },
- "node_modules/progress": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
- "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
- "dev": true,
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/proxy-addr": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
- "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
- "dependencies": {
- "forwarded": "0.2.0",
- "ipaddr.js": "1.9.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/pseudomap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
- },
- "node_modules/psl": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
- "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
- },
- "node_modules/pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "node_modules/punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/qs": {
- "version": "6.7.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
- "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/quick.db": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/quick.db/-/quick.db-7.1.3.tgz",
- "integrity": "sha512-0S1fVb9OAZGhkI4ZIc5Oe4yWMwhz20xSsziwd6+yGWKKMsPt+XOfj/gD5CesGxd2WdqBkZFBiP8ZqWDu55HLHA==",
- "dependencies": {
- "better-sqlite3": "^7.1.1",
- "lodash": "^4.17.20"
- }
- },
- "node_modules/quickchart-js": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/quickchart-js/-/quickchart-js-1.2.0.tgz",
- "integrity": "sha512-7p28IW3S8wOvw4NppwrC8Lm3uxhNdgafM6uZ73mUucQMyaZOBY1farkPhcn8QLpX2FnBdk0gy+ibKB12Wy8Vqw==",
- "dependencies": {
- "axios": "^0.21.1",
- "javascript-stringify": "^2.0.1"
- }
- },
- "node_modules/random-bytes": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
- "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dependencies": {
- "safe-buffer": "^5.1.0"
- }
- },
- "node_modules/range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/raw-body": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
- "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
- "dependencies": {
- "bytes": "3.1.0",
- "http-errors": "1.7.2",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/rc": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
- "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
- "dependencies": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- },
- "bin": {
- "rc": "cli.js"
- }
- },
- "node_modules/rc/node_modules/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=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/readable-stream": {
- "version": "1.1.14",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
- "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- },
- "node_modules/recacheman-file": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/recacheman-file/-/recacheman-file-0.2.5.tgz",
- "integrity": "sha512-wG3NrjR/+QTGVjV+omK8n81LPHNzhfHNiMGx25upFUX3FBmGBbtPZCLFlwc2wUDt4HIReKQ3sIjOQVBUE8/T5Q==",
- "dependencies": {
- "fs-extra": "~0.26.2",
- "sanitize-filename": "^1.5.3"
- }
- },
- "node_modules/recacheman-memory": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/recacheman-memory/-/recacheman-memory-1.1.2.tgz",
- "integrity": "sha512-FqaAJ0Rn0yZaGPPKI6aAb6z5PbPLKGhlZnCWRB2vYzBtPOx3c/PhCT3B1jt1zjkVjDNLs06+NGRoK3GY/A0qsw==",
- "dependencies": {
- "lru-cache": "~4.1.x"
- }
- },
- "node_modules/reconlx": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/reconlx/-/reconlx-1.3.3.tgz",
- "integrity": "sha512-X16C+MByiUERk+9Y62TA+L/u4UoaLAWr97ml9Eu8ON0jqXP9fngiMdqMZMKsVizMrLtyRwVOnerH7gqLX/b34Q==",
- "dependencies": {
- "discord.js": "^12.5.1",
- "jsdom": "^16.4.0",
- "mongoose": "^5.10.15",
- "ms": "^2.1.2"
- }
- },
- "node_modules/redis": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz",
- "integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==",
- "dependencies": {
- "denque": "^1.5.0",
- "redis-commands": "^1.7.0",
- "redis-errors": "^1.2.0",
- "redis-parser": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/node-redis"
- }
- },
- "node_modules/redis-commands": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz",
- "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ=="
- },
- "node_modules/redis-errors": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
- "integrity": "sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/redis-parser": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz",
- "integrity": "sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=",
- "dependencies": {
- "redis-errors": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/regenerator-runtime": {
- "version": "0.13.7",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
- "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
- },
- "node_modules/regexp-clone": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz",
- "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw=="
- },
- "node_modules/regexpp": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
- "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- }
- },
- "node_modules/require-from-string": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/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,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "node_modules/sanitize-filename": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz",
- "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==",
- "dependencies": {
- "truncate-utf8-bytes": "^1.0.0"
- }
- },
- "node_modules/saslprep": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
- "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
- "optional": true,
- "dependencies": {
- "sparse-bitfield": "^3.0.3"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
- },
- "node_modules/saxes": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
- "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
- "dependencies": {
- "xmlchars": "^2.2.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/seedrandom": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz",
- "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg=="
- },
- "node_modules/semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/semver/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/semver/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "node_modules/send": {
- "version": "0.17.1",
- "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
- "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
- "dependencies": {
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "destroy": "~1.0.4",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "~1.7.2",
- "mime": "1.6.0",
- "ms": "2.1.1",
- "on-finished": "~2.3.0",
- "range-parser": "~1.2.1",
- "statuses": "~1.5.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/send/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/send/node_modules/debug/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "node_modules/send/node_modules/ms": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
- "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
- },
- "node_modules/serialize-javascript": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz",
- "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==",
- "dependencies": {
- "randombytes": "^2.1.0"
- }
- },
- "node_modules/serve-static": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
- "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
- "dependencies": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.17.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
- },
- "node_modules/setimmediate": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
- "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
- },
- "node_modules/setprototypeof": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
- "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
- },
- "node_modules/sha1": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz",
- "integrity": "sha1-rdqnqTFo85PxnrKxUJFhjicA+Eg=",
- "dependencies": {
- "charenc": ">= 0.0.1",
- "crypt": ">= 0.0.1"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/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,
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/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,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shelljs": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz",
- "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=",
- "dev": true,
- "bin": {
- "shjs": "bin/shjs"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/sift": {
- "version": "13.5.2",
- "resolved": "https://registry.npmjs.org/sift/-/sift-13.5.2.tgz",
- "integrity": "sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA=="
- },
- "node_modules/signal-exit": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
- "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
- },
- "node_modules/simple-concat": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
- "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/simple-get": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz",
- "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==",
- "dependencies": {
- "decompress-response": "^4.2.0",
- "once": "^1.3.1",
- "simple-concat": "^1.0.0"
- }
- },
- "node_modules/slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/slice-ansi?sponsor=1"
- }
- },
- "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/sliced": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
- "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E="
- },
- "node_modules/soundcloud-downloader": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/soundcloud-downloader/-/soundcloud-downloader-0.2.4.tgz",
- "integrity": "sha512-ncXi9AC3Crs8azBBUw0u5n6RyJpuV3QhBPDkI8dik3e9r7l6L6mmmrdGgKITsOwEuj3rxoTdFvSAP4pv2VorRw==",
- "dependencies": {
- "@babel/runtime": "^7.10.3",
- "axios": "^0.21.0",
- "dotenv": "^8.2.0",
- "m3u8stream": "^0.8.0",
- "soundcloud-key-fetch": "^1.0.10"
- }
- },
- "node_modules/soundcloud-downloader/node_modules/dotenv": {
- "version": "8.6.0",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz",
- "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/soundcloud-key-fetch": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/soundcloud-key-fetch/-/soundcloud-key-fetch-1.0.11.tgz",
- "integrity": "sha512-ofnXB3yeHGVKnFKEMBP/kIJzGu1SduQzJc+zmkPbKgelvYNsEU/aTGD0PlhmyZquaCkTGByF8CEPRrAnt7ki4g=="
- },
- "node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "optional": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sparse-bitfield": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
- "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
- "optional": true,
- "dependencies": {
- "memory-pager": "^1.0.2"
- }
- },
- "node_modules/sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
- "dev": true
- },
- "node_modules/statuses": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
- "dev": true
- },
- "node_modules/string-toolkit": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/string-toolkit/-/string-toolkit-1.4.1.tgz",
- "integrity": "sha512-9ggIBwGTg6AS4Hg8u1EjtxUqZaIoIU004GAS+3D8zFJ6Ktkax0004kkmj2Re9FHN7670/YeDvR/wOg1/eo1Icg=="
- },
- "node_modules/string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "dependencies": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/string-width/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/string-width/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/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,
- "dependencies": {
- "ansi-regex": "^5.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/superscript-text": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/superscript-text/-/superscript-text-1.0.0.tgz",
- "integrity": "sha1-58snUlZzYN9QvrBhDOjfPXHY39g="
- },
- "node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/symbol-tree": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
- "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="
- },
- "node_modules/table": {
- "version": "6.7.1",
- "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz",
- "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==",
- "dev": true,
- "dependencies": {
- "ajv": "^8.0.1",
- "lodash.clonedeep": "^4.5.0",
- "lodash.truncate": "^4.4.2",
- "slice-ansi": "^4.0.0",
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/table/node_modules/ajv": {
- "version": "8.6.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.1.tgz",
- "integrity": "sha512-42VLtQUOLefAvKFAQIxIZDaThq6om/PrfP0CYk3/vn+y4BMNkKnbli8ON2QCiHov4KkzOSJ/xSoBJdayiiYvVQ==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/table/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/table/node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true
- },
- "node_modules/table/node_modules/string-width": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
- "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/tar": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz",
- "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==",
- "dependencies": {
- "chownr": "^2.0.0",
- "fs-minipass": "^2.0.0",
- "minipass": "^3.0.0",
- "minizlib": "^2.1.1",
- "mkdirp": "^1.0.3",
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/tar-fs": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
- "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
- "dependencies": {
- "chownr": "^1.1.1",
- "mkdirp-classic": "^0.5.2",
- "pump": "^3.0.0",
- "tar-stream": "^2.1.4"
- }
- },
- "node_modules/tar-fs/node_modules/chownr": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
- "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
- },
- "node_modules/tar-stream": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
- "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
- "dependencies": {
- "bl": "^4.0.3",
- "end-of-stream": "^1.4.1",
- "fs-constants": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.1.1"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/tar-stream/node_modules/bl": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
- "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
- "dependencies": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- }
- },
- "node_modules/tar-stream/node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "node_modules/tar-stream/node_modules/readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/tar-stream/node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/tar-stream/node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
- "node_modules/tar/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "node_modules/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
- },
- "node_modules/tiny-emitter": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
- "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
- },
- "node_modules/toidentifier": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
- "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/tough-cookie": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
- "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
- "dependencies": {
- "psl": "^1.1.33",
- "punycode": "^2.1.1",
- "universalify": "^0.1.2"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/tr46": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
- "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
- "dependencies": {
- "punycode": "^2.1.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/truncate-utf8-bytes": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
- "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=",
- "dependencies": {
- "utf8-byte-length": "^1.0.1"
- }
- },
- "node_modules/tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "dependencies": {
- "safe-buffer": "^5.0.1"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/tweetnacl": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz",
- "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw=="
- },
- "node_modules/twemoji-parser": {
- "version": "13.1.0",
- "resolved": "https://registry.npmjs.org/twemoji-parser/-/twemoji-parser-13.1.0.tgz",
- "integrity": "sha512-AQOzLJpYlpWMy8n+0ATyKKZzWlZBJN+G0C+5lhX7Ftc2PeEVdUU/7ns2Pn2vVje26AIZ/OHwFoUbdv6YYD/wGg=="
- },
- "node_modules/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,
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "dependencies": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/typed-function": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-2.0.0.tgz",
- "integrity": "sha512-Hhy1Iwo/e4AtLZNK10ewVVcP2UEs408DS35ubP825w/YgSBK1KVLwALvvIG4yX75QJrxjCpcWkzkVRB0BwwYlA==",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/uid-safe": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
- "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
- "dependencies": {
- "random-bytes": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/utf8-byte-length": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz",
- "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E="
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
- },
- "node_modules/utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/v8-compile-cache": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
- "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
- "dev": true
- },
- "node_modules/vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/w3c-hr-time": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
- "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
- "dependencies": {
- "browser-process-hrtime": "^1.0.0"
- }
- },
- "node_modules/w3c-xmlserializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
- "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
- "dependencies": {
- "xml-name-validator": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/webidl-conversions": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
- "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
- "engines": {
- "node": ">=10.4"
- }
- },
- "node_modules/weky": {
- "version": "1.9.9",
- "resolved": "https://registry.npmjs.org/weky/-/weky-1.9.9.tgz",
- "integrity": "sha512-ldaCKoTC1NRv296B7trgDfocifs+hi8YvXeaitjZnTg7LxxIjZZX66NLNala6HtjEeH/dc2b0h9nrDB2DpY+/A==",
- "dependencies": {
- "discord-buttons": "^3.0.1",
- "mathjs": "^9.4.2",
- "ms": "^2.1.3",
- "node-fetch": "^2.6.1"
- }
- },
- "node_modules/whatwg-encoding": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
- "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
- "dependencies": {
- "iconv-lite": "0.4.24"
- }
- },
- "node_modules/whatwg-mimetype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
- "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g=="
- },
- "node_modules/whatwg-url": {
- "version": "8.7.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz",
- "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
- "dependencies": {
- "lodash": "^4.7.0",
- "tr46": "^2.1.0",
- "webidl-conversions": "^6.1.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/wide-align": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
- "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
- "dependencies": {
- "string-width": "^1.0.2 || 2"
- }
- },
- "node_modules/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==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
- },
- "node_modules/ws": {
- "version": "7.5.3",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz",
- "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==",
- "engines": {
- "node": ">=8.3.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/xml-name-validator": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
- "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw=="
- },
- "node_modules/xmlchars": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
- "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="
- },
- "node_modules/yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
- }
- },
"dependencies": {
"@babel/code-frame": {
"version": "7.12.11",
@@ -4479,9 +14,9 @@
}
},
"@babel/helper-validator-identifier": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz",
- "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==",
+ "version": "7.14.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
+ "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
"dev": true
},
"@babel/highlight": {
@@ -4554,17 +89,17 @@
}
},
"@babel/runtime": {
- "version": "7.14.6",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz",
- "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==",
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz",
+ "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==",
"requires": {
"regenerator-runtime": "^0.13.4"
}
},
"@canvacord/assets": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@canvacord/assets/-/assets-1.0.2.tgz",
- "integrity": "sha512-76uLD27UDlfTxtgA7armbt6G9/X1NDqm/qjs9gxbWFVfcJxVdT3r3LlwaLp0NlRa5yMylCFf3WcOHufVjk60vw=="
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@canvacord/assets/-/assets-2.0.5.tgz",
+ "integrity": "sha512-MceWZe5TzOymfvgf8ZU5m1oxWg6rGyH5anCgANARa47+CjVcppe6+Bd1+36pXiDTOyE4uRJk6T5RgOEJOgciug=="
},
"@canvacord/emoji-parser": {
"version": "1.0.1",
@@ -4574,6 +109,18 @@
"twemoji-parser": "^13.0.0"
}
},
+ "@discordjs/builders": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.5.0.tgz",
+ "integrity": "sha512-HP5y4Rqw68o61Qv4qM5tVmDbWi4mdTFftqIOGRo33SNPpLJ1Ga3KEIR2ibKofkmsoQhEpLmopD1AZDs3cKpHuw==",
+ "requires": {
+ "@sindresorhus/is": "^4.0.1",
+ "discord-api-types": "^0.22.0",
+ "ow": "^0.27.0",
+ "ts-mixer": "^6.0.0",
+ "tslib": "^2.3.0"
+ }
+ },
"@discordjs/collection": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.1.6.tgz",
@@ -4590,9 +137,9 @@
}
},
"@eslint/eslintrc": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz",
- "integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==",
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
+ "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==",
"dev": true,
"requires": {
"ajv": "^6.12.4",
@@ -4604,6 +151,14 @@
"js-yaml": "^3.13.1",
"minimatch": "^3.0.4",
"strip-json-comments": "^3.1.1"
+ },
+ "dependencies": {
+ "strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true
+ }
}
},
"@humanwhocodes/config-array": {
@@ -4665,17 +220,27 @@
"resolved": "https://registry.npmjs.org/@reconlx/discord.js/-/discord.js-1.1.101.tgz",
"integrity": "sha512-YKXJ74zra1tUwtx0p2U1nZWhnBTe2WhZioTMT5+W89QQrheyYus1MUWdJceAsN0eIs0p4zqhrNqWMWNY7B3xyQ=="
},
+ "@sapphire/async-queue": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.1.4.tgz",
+ "integrity": "sha512-fFrlF/uWpGOX5djw5Mu2Hnnrunao75WGey0sP0J3jnhmrJ5TAPzHYOmytD5iN/+pMxS+f+u/gezqHa9tPhRHEA=="
+ },
+ "@sindresorhus/is": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.1.tgz",
+ "integrity": "sha512-Qm9hBEBu18wt1PO2flE7LPb30BHMQt1eQgbV76YntdNk73XZGpn3izvGTYxbGgzXKgbCjiia0uxTd3aTNQrY/g=="
+ },
"@tootallnate/once": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
"integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw=="
},
"@types/bson": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.4.tgz",
- "integrity": "sha512-awqorHvQS0DqxkHQ/FxcPX9E+H7Du51Qw/2F+5TBMSaE3G0hm+8D3eXJ6MAzFw75nE8V7xF0QvzUSdxIjJb/GA==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.2.0.tgz",
+ "integrity": "sha512-ELCPqAdroMdcuxqwMgUpifQyRoTpyYCNr1V9xKyF40VsBobsj+BbWNRvwGchMgBPGqkw655ypkjj2MEF5ywVwg==",
"requires": {
- "@types/node": "*"
+ "bson": "*"
}
},
"@types/mongodb": {
@@ -4688,9 +253,42 @@
}
},
"@types/node": {
- "version": "15.14.2",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.2.tgz",
- "integrity": "sha512-dvMUE/m2LbXPwlvVuzCyslTEtQ2ZwuuFClDrOQ6mp2CenCg971719PTILZ4I6bTP27xfFFc+o7x2TkLuun/MPw=="
+ "version": "16.7.10",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.7.10.tgz",
+ "integrity": "sha512-S63Dlv4zIPb8x6MMTgDq5WWRJQe56iBEY0O3SOFA9JrRienkOVDXSXBjjJw6HTNQYSE2JI6GMCR6LVbIMHJVvA=="
+ },
+ "@types/ws": {
+ "version": "7.4.7",
+ "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz",
+ "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==",
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@weky/inlinereply": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/@weky/inlinereply/-/inlinereply-0.0.0.tgz",
+ "integrity": "sha512-wUecLX4CR87PiFbH9d264zcfnyXxZbhr30NIJBjJ96U5tHdQzyOpMPInQmU8mq2hOuC6keEM3pFiXa2B75tYDA==",
+ "requires": {
+ "discord.js": "^12.5.3"
+ },
+ "dependencies": {
+ "discord.js": {
+ "version": "12.5.3",
+ "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-12.5.3.tgz",
+ "integrity": "sha512-D3nkOa/pCkNyn6jLZnAiJApw2N9XrIsXUAdThf01i7yrEuqUmDGc7/CexVWwEcgbQR97XQ+mcnqJpmJ/92B4Aw==",
+ "requires": {
+ "@discordjs/collection": "^0.1.6",
+ "@discordjs/form-data": "^3.0.1",
+ "abort-controller": "^3.0.0",
+ "node-fetch": "^2.6.1",
+ "prism-media": "^1.2.9",
+ "setimmediate": "^1.0.5",
+ "tweetnacl": "^1.0.3",
+ "ws": "^7.4.4"
+ }
+ }
+ }
},
"abab": {
"version": "2.0.5",
@@ -4720,9 +318,9 @@
}
},
"acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
+ "version": "8.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz",
+ "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA=="
},
"acorn-globals": {
"version": "6.0.0",
@@ -4731,14 +329,20 @@
"requires": {
"acorn": "^7.1.1",
"acorn-walk": "^7.1.1"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
+ }
}
},
"acorn-jsx": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true,
- "requires": {}
+ "dev": true
},
"acorn-walk": {
"version": "7.2.0",
@@ -4772,16 +376,14 @@
"dev": true
},
"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
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
},
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
"requires": {
"color-convert": "^2.0.1"
}
@@ -4792,41 +394,12 @@
"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==",
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz",
+ "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==",
"requires": {
"delegates": "^1.0.0",
"readable-stream": "^2.0.6"
- },
- "dependencies": {
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
}
},
"argparse": {
@@ -4855,11 +428,11 @@
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
},
"axios": {
- "version": "0.21.1",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
- "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
+ "version": "0.21.3",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.3.tgz",
+ "integrity": "sha512-JtoZ3Ndke/+Iwt5n+BgSli/3idTvpt5OjKyoCmz4LX5+lPiY5l7C1colYezhlxThjNa/NhngCUWZSZFypIFuaA==",
"requires": {
- "follow-redirects": "^1.10.0"
+ "follow-redirects": "^1.14.0"
}
},
"balanced-match": {
@@ -4873,9 +446,9 @@
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
},
"better-sqlite3": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.4.1.tgz",
- "integrity": "sha512-sk1kW3PsWE7W7G9qbi5TQxCROlQVR8YWlp4srbyrwN5DrLeamKfrm3JExwOiNSAYyJv8cw5/2HOfvF/ipZj4qg==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.4.3.tgz",
+ "integrity": "sha512-07bKjClZg/f4KMVRkzWtoIvazVPcF1gsvVKVIXlxwleC2DxuIhnra3KCMlUT1rFeRYXXckot2a46UciF2d9KLw==",
"requires": {
"bindings": "^1.5.0",
"prebuild-install": "^6.0.1",
@@ -4897,35 +470,6 @@
"requires": {
"readable-stream": "^2.3.5",
"safe-buffer": "^5.1.1"
- },
- "dependencies": {
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
}
},
"bluebird": {
@@ -4965,6 +509,11 @@
}
}
},
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
+ },
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -5001,17 +550,16 @@
"callsites": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
},
"canvacord": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/canvacord/-/canvacord-5.2.1.tgz",
- "integrity": "sha512-vauEvj3QEDNyza6laa4C5cKiOSld/O+Uvjr8uzD+ANUxaWtprHE6372J7oXMqrjPEsOd4XAwKuy5zlVPe4a7OQ==",
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/canvacord/-/canvacord-5.2.3.tgz",
+ "integrity": "sha512-aYxGA7tVQi3NCa7Qxg2b9u+wAeek2xE5q+nJjiReZofeUx0d1Xq731UerKf+iVIPBrCAcjbv/yflJL0qVwPuMQ==",
"requires": {
- "@canvacord/assets": "^1.0.2",
+ "@canvacord/assets": "^2.0.5",
"@canvacord/emoji-parser": "^1.0.1",
- "canvas": "^2.7.0",
+ "canvas": "^2.8.0",
"gifencoder": "^2.0.1",
"moment": "^2.29.1",
"moment-duration-format": "^2.3.2"
@@ -5033,13 +581,29 @@
"integrity": "sha512-P6kdi3KiE80eMK957AvQacDPD6z8ZupcoiGD6GpeLbOvSOzQSXIaUtiNutIlnDfqQ9D90PV4Imu2KwplIjLOAA==",
"requires": {
"discord.js": "^12.5.1"
+ },
+ "dependencies": {
+ "discord.js": {
+ "version": "12.5.3",
+ "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-12.5.3.tgz",
+ "integrity": "sha512-D3nkOa/pCkNyn6jLZnAiJApw2N9XrIsXUAdThf01i7yrEuqUmDGc7/CexVWwEcgbQR97XQ+mcnqJpmJ/92B4Aw==",
+ "requires": {
+ "@discordjs/collection": "^0.1.6",
+ "@discordjs/form-data": "^3.0.1",
+ "abort-controller": "^3.0.0",
+ "node-fetch": "^2.6.1",
+ "prism-media": "^1.2.9",
+ "setimmediate": "^1.0.5",
+ "tweetnacl": "^1.0.3",
+ "ws": "^7.4.4"
+ }
+ }
}
},
"chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -5050,6 +614,123 @@
"resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
"integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc="
},
+ "cheerio": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
+ "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
+ "requires": {
+ "cheerio-select": "^1.5.0",
+ "dom-serializer": "^1.3.2",
+ "domhandler": "^4.2.0",
+ "htmlparser2": "^6.1.0",
+ "parse5": "^6.0.1",
+ "parse5-htmlparser2-tree-adapter": "^6.0.1",
+ "tslib": "^2.2.0"
+ },
+ "dependencies": {
+ "dom-serializer": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
+ "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ }
+ },
+ "domelementtype": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
+ "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A=="
+ },
+ "domhandler": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz",
+ "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==",
+ "requires": {
+ "domelementtype": "^2.2.0"
+ }
+ },
+ "domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "requires": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ }
+ },
+ "entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="
+ },
+ "htmlparser2": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
+ "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.0.0",
+ "domutils": "^2.5.2",
+ "entities": "^2.0.0"
+ }
+ }
+ }
+ },
+ "cheerio-select": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz",
+ "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==",
+ "requires": {
+ "css-select": "^4.1.3",
+ "css-what": "^5.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0",
+ "domutils": "^2.7.0"
+ },
+ "dependencies": {
+ "dom-serializer": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
+ "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ }
+ },
+ "domelementtype": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
+ "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A=="
+ },
+ "domhandler": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz",
+ "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==",
+ "requires": {
+ "domelementtype": "^2.2.0"
+ }
+ },
+ "domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "requires": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ }
+ },
+ "entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="
+ }
+ }
+ },
"chownr": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
@@ -5074,7 +755,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
"requires": {
"color-name": "~1.1.4"
}
@@ -5082,8 +762,7 @@
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"combined-stream": {
"version": "1.0.8",
@@ -5146,9 +825,9 @@
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
},
"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="
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
},
"cors": {
"version": "2.8.5",
@@ -5175,6 +854,63 @@
"resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
"integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs="
},
+ "css-select": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz",
+ "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==",
+ "requires": {
+ "boolbase": "^1.0.0",
+ "css-what": "^5.0.0",
+ "domhandler": "^4.2.0",
+ "domutils": "^2.6.0",
+ "nth-check": "^2.0.0"
+ },
+ "dependencies": {
+ "dom-serializer": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
+ "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ }
+ },
+ "domelementtype": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
+ "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A=="
+ },
+ "domhandler": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz",
+ "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==",
+ "requires": {
+ "domelementtype": "^2.2.0"
+ }
+ },
+ "domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "requires": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ }
+ },
+ "entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="
+ }
+ }
+ },
+ "css-what": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz",
+ "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg=="
+ },
"cssom": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
@@ -5226,6 +962,11 @@
}
}
},
+ "decancer": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/decancer/-/decancer-1.0.4.tgz",
+ "integrity": "sha512-nMEKK18OTTrKhWbKkqSkV6hur4KoE3njJiygKRC58I9lmQszwbiBhVE7gKSRcMaEEW7lIKJBFtO0vpTDtK7Urg=="
+ },
"decimal.js": {
"version": "10.3.1",
"resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz",
@@ -5245,9 +986,9 @@
"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="
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
},
"deepmerge": {
"version": "4.2.2",
@@ -5265,9 +1006,9 @@
"integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
},
"denque": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz",
- "integrity": "sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ=="
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz",
+ "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw=="
},
"depd": {
"version": "1.1.2",
@@ -5284,10 +1025,15 @@
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
"integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
},
+ "discord-api-types": {
+ "version": "0.22.0",
+ "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.22.0.tgz",
+ "integrity": "sha512-l8yD/2zRbZItUQpy7ZxBJwaLX/Bs2TGaCthRppk8Sw24LOIWg12t9JEreezPoYD0SQcC2htNNo27kYEpYW/Srg=="
+ },
"discord-buttons": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/discord-buttons/-/discord-buttons-3.2.1.tgz",
- "integrity": "sha512-UN5xOLG0TwTX6Qr/hjdSyP63HxOYxs5saxfdJ/vijSqjfa/yVPgxO2InKF0l8rpsDOVMsLWGDFLI3+Ax97/LOg=="
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/discord-buttons/-/discord-buttons-4.0.0.tgz",
+ "integrity": "sha512-E/eQX4Ktj7nKwNDsTfCezBNCu73FtPWJfQcpKohfl0jct/ucMUO+7uhL2MhGsZr4SCfojk7OzccAznuntB564w=="
},
"discord-canvas": {
"version": "1.4.1",
@@ -5318,18 +1064,25 @@
}
},
"discord.js": {
- "version": "12.5.3",
- "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-12.5.3.tgz",
- "integrity": "sha512-D3nkOa/pCkNyn6jLZnAiJApw2N9XrIsXUAdThf01i7yrEuqUmDGc7/CexVWwEcgbQR97XQ+mcnqJpmJ/92B4Aw==",
+ "version": "13.1.0",
+ "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.1.0.tgz",
+ "integrity": "sha512-gxO4CXKdHpqA+WKG+f5RNnd3srTDj5uFJHgOathksDE90YNq/Qijkd2WlMgTTMS6AJoEnHxI7G9eDQHCuZ+xDA==",
"requires": {
- "@discordjs/collection": "^0.1.6",
+ "@discordjs/builders": "^0.5.0",
+ "@discordjs/collection": "^0.2.1",
"@discordjs/form-data": "^3.0.1",
- "abort-controller": "^3.0.0",
+ "@sapphire/async-queue": "^1.1.4",
+ "@types/ws": "^7.4.7",
+ "discord-api-types": "^0.22.0",
"node-fetch": "^2.6.1",
- "prism-media": "^1.2.9",
- "setimmediate": "^1.0.5",
- "tweetnacl": "^1.0.3",
- "ws": "^7.4.4"
+ "ws": "^7.5.1"
+ },
+ "dependencies": {
+ "@discordjs/collection": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.2.1.tgz",
+ "integrity": "sha512-vhxqzzM8gkomw0TYRF3tgx7SwElzUlXT/Aa41O7mOcyN6wIJfj5JmDWaO5XGKsGSsNx7F3i5oIlrucCCWV1Nog=="
+ }
}
},
"doctrine": {
@@ -5383,22 +1136,30 @@
}
},
"domhandler": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz",
- "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
+ "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
"requires": {
"domelementtype": "1"
}
},
"domutils": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
- "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
+ "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
"requires": {
"dom-serializer": "0",
"domelementtype": "1"
}
},
+ "dot-prop": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
+ "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==",
+ "requires": {
+ "is-obj": "^2.0.0"
+ }
+ },
"dotenv": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz",
@@ -5461,10 +1222,9 @@
}
},
"entities": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
- "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=",
- "dev": true
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
+ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w=="
},
"erela.js": {
"version": "2.3.3",
@@ -5521,58 +1281,16 @@
"esutils": "^2.0.2",
"optionator": "^0.8.1",
"source-map": "~0.6.1"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
- "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ=="
- },
- "levn": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
- "requires": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
- }
- },
- "optionator": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
- "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
- "requires": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.6",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "word-wrap": "~1.2.3"
- }
- },
- "prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
- },
- "type-check": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
- "requires": {
- "prelude-ls": "~1.1.2"
- }
- }
}
},
"eslint": {
- "version": "7.30.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.30.0.tgz",
- "integrity": "sha512-VLqz80i3as3NdloY44BQSJpFw534L9Oh+6zJOUaViV4JPd+DaHwutqP7tcpkW3YiXbK6s05RZl7yl7cQn+lijg==",
+ "version": "7.32.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz",
+ "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==",
"dev": true,
"requires": {
"@babel/code-frame": "7.12.11",
- "@eslint/eslintrc": "^0.4.2",
+ "@eslint/eslintrc": "^0.4.3",
"@humanwhocodes/config-array": "^0.5.0",
"ajv": "^6.10.0",
"chalk": "^4.0.0",
@@ -5611,14 +1329,75 @@
"table": "^6.0.9",
"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
+ },
+ "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"
+ }
+ },
+ "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"
+ }
+ },
+ "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
+ },
+ "strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true
+ },
+ "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"
+ }
+ }
}
},
"eslint-config-google": {
"version": "0.14.0",
"resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz",
"integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==",
- "dev": true,
- "requires": {}
+ "dev": true
},
"eslint-scope": {
"version": "5.1.1",
@@ -5628,6 +1407,14 @@
"requires": {
"esrecurse": "^4.3.0",
"estraverse": "^4.1.1"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true
+ }
}
},
"eslint-utils": {
@@ -5664,6 +1451,12 @@
"eslint-visitor-keys": "^1.3.0"
},
"dependencies": {
+ "acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "dev": true
+ },
"eslint-visitor-keys": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
@@ -5684,14 +1477,6 @@
"dev": true,
"requires": {
"estraverse": "^5.1.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
- "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
- "dev": true
- }
}
},
"esrecurse": {
@@ -5701,21 +1486,12 @@
"dev": true,
"requires": {
"estraverse": "^5.2.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
- "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
- "dev": true
- }
}
},
"estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
+ "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ=="
},
"esutils": {
"version": "2.0.3",
@@ -5858,9 +1634,9 @@
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
},
"figlet": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.0.tgz",
- "integrity": "sha512-ZQJM4aifMpz6H19AW1VqvZ7l4pOE9p7i/3LyxgO2kp+PO/VcDYNqIHEMtkccqIhTXMKci4kjueJr/iCQEaT/Ww=="
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.2.tgz",
+ "integrity": "sha512-WOn21V8AhyE1QqVfPIVxe3tupJacq1xGkPTB4iagT6o+P2cAgEOOwIxMftr4+ZCTI6d551ij9j61DFr0nsP2uQ=="
},
"file-entry-cache": {
"version": "6.0.1",
@@ -5916,15 +1692,15 @@
}
},
"flatted": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.1.tgz",
- "integrity": "sha512-OMQjaErSFHmHqZe+PSidH5n8j3O0F2DdnVh8JB4j4eUQ2k6KvB0qGfrKIhapvez5JerBbmWkaLYUYWISaESoXg==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz",
+ "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==",
"dev": true
},
"follow-redirects": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz",
- "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg=="
+ "version": "1.14.3",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.3.tgz",
+ "integrity": "sha512-3MkHxknWMUtb23apkgz/83fDoe+y+qr0TdgacGIA7bew+QLBo3vdgEN2xEsuXNivpFy4CyDhBBZnNZOtalmenw=="
},
"form-data": {
"version": "3.0.1",
@@ -6031,21 +1807,6 @@
"string-width": "^1.0.1",
"strip-ansi": "^3.0.1",
"wide-align": "^1.1.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
- },
- "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"
- }
- }
}
},
"gifencoder": {
@@ -6084,12 +1845,20 @@
}
},
"globals": {
- "version": "13.10.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz",
- "integrity": "sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g==",
+ "version": "13.11.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz",
+ "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==",
"dev": true,
"requires": {
"type-fest": "^0.20.2"
+ },
+ "dependencies": {
+ "type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true
+ }
}
},
"goosecache": {
@@ -6103,15 +1872,14 @@
}
},
"graceful-fs": {
- "version": "4.2.6",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
- "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ=="
+ "version": "4.2.8",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
+ "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg=="
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
},
"has-unicode": {
"version": "2.0.1",
@@ -6131,6 +1899,11 @@
"whatwg-encoding": "^1.0.5"
}
},
+ "html-entities": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz",
+ "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ=="
+ },
"html-to-text": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-5.1.1.tgz",
@@ -6140,26 +1913,21 @@
"htmlparser2": "^3.10.1",
"lodash": "^4.17.11",
"minimist": "^1.2.0"
+ }
+ },
+ "htmlparser2": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
+ "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
+ "requires": {
+ "domelementtype": "^1.3.1",
+ "domhandler": "^2.3.0",
+ "domutils": "^1.5.1",
+ "entities": "^1.1.1",
+ "inherits": "^2.0.1",
+ "readable-stream": "^3.1.1"
},
"dependencies": {
- "entities": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
- "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w=="
- },
- "htmlparser2": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
- "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
- "requires": {
- "domelementtype": "^1.3.1",
- "domhandler": "^2.3.0",
- "domutils": "^1.5.1",
- "entities": "^1.1.1",
- "inherits": "^2.0.1",
- "readable-stream": "^3.1.1"
- }
- },
"readable-stream": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
@@ -6169,35 +1937,9 @@
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
}
- },
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
- },
- "string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "requires": {
- "safe-buffer": "~5.2.0"
- }
}
}
},
- "htmlparser2": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
- "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=",
- "dev": true,
- "requires": {
- "domelementtype": "1",
- "domhandler": "2.3",
- "domutils": "1.5",
- "entities": "1.0",
- "readable-stream": "1.1"
- }
- },
"http-errors": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
@@ -6208,6 +1950,13 @@
"setprototypeof": "1.1.1",
"statuses": ">= 1.5.0 < 2",
"toidentifier": "1.0.0"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ }
}
},
"http-proxy-agent": {
@@ -6282,9 +2031,9 @@
}
},
"inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"ini": {
"version": "1.3.8",
@@ -6319,16 +2068,20 @@
"is-extglob": "^2.1.1"
}
},
+ "is-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
+ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w=="
+ },
"is-potential-custom-element-name": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
"integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ=="
},
"isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
- "dev": true
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
"isexe": {
"version": "2.0.0",
@@ -6363,9 +2116,9 @@
}
},
"jsdom": {
- "version": "16.6.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.6.0.tgz",
- "integrity": "sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg==",
+ "version": "16.7.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz",
+ "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==",
"requires": {
"abab": "^2.0.5",
"acorn": "^8.2.4",
@@ -6392,21 +2145,14 @@
"whatwg-encoding": "^1.0.5",
"whatwg-mimetype": "^2.3.0",
"whatwg-url": "^8.5.0",
- "ws": "^7.4.5",
+ "ws": "^7.4.6",
"xml-name-validator": "^3.0.0"
- },
- "dependencies": {
- "acorn": {
- "version": "8.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz",
- "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA=="
- }
}
},
"jshint": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.13.0.tgz",
- "integrity": "sha512-Nd+md9wIeyfDK+RGrbOBzwLONSTdihGMtyGYU/t7zYcN2EgUa4iuY3VK2oxtPYrW5ycTj18iC+UbhNTxe4C66g==",
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.13.1.tgz",
+ "integrity": "sha512-vymzfR3OysF5P774x6zYv0bD4EpH6NWRxpq54wO9mA9RuY49yb1teKSICkLx2Ryx+mfzlVVNNbTBtsRtg78t7g==",
"dev": true,
"requires": {
"cli": "~1.0.0",
@@ -6419,6 +2165,68 @@
"strip-json-comments": "1.0.x"
},
"dependencies": {
+ "domhandler": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz",
+ "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1"
+ }
+ },
+ "domutils": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
+ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "0",
+ "domelementtype": "1"
+ }
+ },
+ "entities": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
+ "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=",
+ "dev": true
+ },
+ "htmlparser2": {
+ "version": "3.8.3",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
+ "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1",
+ "domhandler": "2.3",
+ "domutils": "1.5",
+ "entities": "1.0",
+ "readable-stream": "1.1"
+ }
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ },
"strip-json-comments": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz",
@@ -6466,13 +2274,12 @@
"integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="
},
"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,
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
"requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
}
},
"lodash": {
@@ -6486,6 +2293,11 @@
"integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
"dev": true
},
+ "lodash.isequal": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
+ },
"lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
@@ -6504,12 +2316,11 @@
"integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw=="
},
"lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
+ "yallist": "^4.0.0"
}
},
"lyrics-finder": {
@@ -6589,16 +2400,16 @@
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
},
"mime-db": {
- "version": "1.48.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz",
- "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ=="
+ "version": "1.49.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz",
+ "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA=="
},
"mime-types": {
- "version": "2.1.31",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz",
- "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==",
+ "version": "2.1.32",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz",
+ "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==",
"requires": {
- "mime-db": "1.48.0"
+ "mime-db": "1.49.0"
}
},
"mimic-response": {
@@ -6630,13 +2441,6 @@
"integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==",
"requires": {
"yallist": "^4.0.0"
- },
- "dependencies": {
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- }
}
},
"minizlib": {
@@ -6646,13 +2450,6 @@
"requires": {
"minipass": "^3.0.0",
"yallist": "^4.0.0"
- },
- "dependencies": {
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- }
}
},
"mkdirp": {
@@ -6676,9 +2473,9 @@
"integrity": "sha512-cBMXjSW+fjOb4tyaVHuaVE/A5TqkukDWiOfxxAjY+PEqmmBQlLwn+8OzwPiG3brouXKY5Un4pBjAeB6UToXHaQ=="
},
"mongodb": {
- "version": "3.6.8",
- "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.8.tgz",
- "integrity": "sha512-sDjJvI73WjON1vapcbyBD3Ao9/VN3TKYY8/QX9EPbs22KaCSrQ5rXo5ZZd44tWJ3wl3FlnrFZ+KyUtNH6+1ZPQ==",
+ "version": "3.6.11",
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.11.tgz",
+ "integrity": "sha512-4Y4lTFHDHZZdgMaHmojtNAlqkvddX2QQBEN0K//GzxhGwlI9tZ9R0vhbjr1Decw+TF7qK0ZLjQT292XgHRRQgw==",
"requires": {
"bl": "^2.2.1",
"bson": "^1.1.4",
@@ -6689,19 +2486,19 @@
}
},
"mongoose": {
- "version": "5.13.2",
- "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.13.2.tgz",
- "integrity": "sha512-sBUKJGpdwZCq9102Lj6ZOaLcW4z/T4TI9aGWrNX5ZlICwChKWG4Wo5qriLImdww3H7bETPW9vYtSiADNlA4wSQ==",
+ "version": "5.13.8",
+ "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.13.8.tgz",
+ "integrity": "sha512-z3d+qei9Dem/LxRcJi0cdGPKzQnYk71oHEsEfYm17JA/vLiAbJiGuBS2hW7vkd9afkPAqu3KsPZh2ax0c5iPQw==",
"requires": {
"@types/mongodb": "^3.5.27",
- "@types/node": "14.x || 15.x",
"bson": "^1.1.4",
"kareem": "2.3.2",
- "mongodb": "3.6.8",
+ "mongodb": "3.6.11",
"mongoose-legacy-pluralize": "1.0.2",
"mpath": "0.8.3",
"mquery": "3.2.5",
"ms": "2.1.2",
+ "optional-require": "1.0.x",
"regexp-clone": "1.0.0",
"safe-buffer": "5.2.1",
"sift": "13.5.2",
@@ -6723,8 +2520,7 @@
"mongoose-legacy-pluralize": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz",
- "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==",
- "requires": {}
+ "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ=="
},
"mpath": {
"version": "0.8.3",
@@ -6764,9 +2560,9 @@
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
"nan": {
- "version": "2.14.2",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz",
- "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ=="
+ "version": "2.15.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz",
+ "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ=="
},
"napi-build-utils": {
"version": "1.0.2",
@@ -6784,10 +2580,19 @@
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
"integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
},
+ "node": {
+ "version": "16.6.1",
+ "resolved": "https://registry.npmjs.org/node/-/node-16.6.1.tgz",
+ "integrity": "sha512-qlIQ5vkAAMP+T1bYivwngIqZlUzerPSeaeAQVUvyQ2XZ8WN86ZUdzcpkW/iuEnP9paNcpAsA4p9yCsfrdjG7YQ==",
+ "dev": true,
+ "requires": {
+ "node-bin-setup": "^1.0.0"
+ }
+ },
"node-abi": {
- "version": "2.30.0",
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.0.tgz",
- "integrity": "sha512-g6bZh3YCKQRdwuO/tSZZYJAw622SjsRfJ2X0Iy4sSOHZ34/sPPdVBn8fev2tj7njzLwuqPw9uMtGsGkO5kIQvg==",
+ "version": "2.30.1",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz",
+ "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==",
"requires": {
"semver": "^5.4.1"
},
@@ -6799,6 +2604,12 @@
}
}
},
+ "node-bin-setup": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/node-bin-setup/-/node-bin-setup-1.0.6.tgz",
+ "integrity": "sha512-uPIxXNis1CRbv1DwqAxkgBk5NFV3s7cMN/Gf556jSw6jBvV7ca4F9lRL/8cALcZecRibeqU+5dFYqFFmzv5a0Q==",
+ "dev": true
+ },
"node-fetch": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
@@ -6832,6 +2643,14 @@
"set-blocking": "~2.0.0"
}
},
+ "nth-check": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz",
+ "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==",
+ "requires": {
+ "boolbase": "^1.0.0"
+ }
+ },
"number-is-nan": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
@@ -6874,17 +2693,29 @@
"integrity": "sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA=="
},
"optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
- "dev": true,
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
"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"
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.6",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "word-wrap": "~1.2.3"
+ }
+ },
+ "ow": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmjs.org/ow/-/ow-0.27.0.tgz",
+ "integrity": "sha512-SGnrGUbhn4VaUGdU0EJLMwZWSupPmF46hnTRII7aCLCrqixTAC5eKo8kI4/XXf1eaaI8YEVT+3FeGNJI9himAQ==",
+ "requires": {
+ "@sindresorhus/is": "^4.0.1",
+ "callsites": "^3.1.0",
+ "dot-prop": "^6.0.1",
+ "lodash.isequal": "^4.5.0",
+ "type-fest": "^1.2.1",
+ "vali-date": "^1.0.0"
}
},
"parent-module": {
@@ -6906,6 +2737,14 @@
"resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
"integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
},
+ "parse5-htmlparser2-tree-adapter": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
+ "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
+ "requires": {
+ "parse5": "^6.0.1"
+ }
+ },
"parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@@ -6933,9 +2772,9 @@
"integrity": "sha512-hbbT+rOvovz39ZneGW+C8B4YsKH20KLXYVDT/IzSUxaY8H7al/TO+vFCm+H5cnYe62gIqF9ak5p8OJktV/I0Ig=="
},
"prebuild-install": {
- "version": "6.1.3",
- "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.3.tgz",
- "integrity": "sha512-iqqSR84tNYQUQHRXalSKdIaM8Ov1QxOVuBNWI7+BzZWv6Ih9k75wOnH1rGQ9WWTaaLkTpxWKIciOF0KyfM74+Q==",
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz",
+ "integrity": "sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==",
"requires": {
"detect-libc": "^1.0.3",
"expand-template": "^2.0.3",
@@ -6953,10 +2792,9 @@
}
},
"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
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
},
"prettier": {
"version": "2.3.2",
@@ -6965,10 +2803,9 @@
"dev": true
},
"prism-media": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.3.1.tgz",
- "integrity": "sha512-nyYAa3KB4qteJIqdguKmwxTJgy55xxUtkJ3uRnOvO5jO+frci+9zpRXw6QZVcfDeva3S654fU9+26P2OSTzjHw==",
- "requires": {}
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.3.2.tgz",
+ "integrity": "sha512-L6UsGHcT6i4wrQhFF1aPK+MNYgjRqR2tUoIqEY+CG1NqVkMjPRKzS37j9f8GiYPlD6wG9ruBj+q5Ax+bH8Ik1g=="
},
"process-nextick-args": {
"version": "2.0.1",
@@ -7029,9 +2866,9 @@
}
},
"quickchart-js": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/quickchart-js/-/quickchart-js-1.2.0.tgz",
- "integrity": "sha512-7p28IW3S8wOvw4NppwrC8Lm3uxhNdgafM6uZ73mUucQMyaZOBY1farkPhcn8QLpX2FnBdk0gy+ibKB12Wy8Vqw==",
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/quickchart-js/-/quickchart-js-1.4.1.tgz",
+ "integrity": "sha512-LLfHUqFmygKMQKh3e4sMInx31htEVkNMnBwHFYnS7ogBuRmsVx4tE1VU1wPay2/FRDUZTNohyvEbm5EKFzHD0g==",
"requires": {
"axios": "^0.21.1",
"javascript-stringify": "^2.0.1"
@@ -7075,25 +2912,20 @@
"ini": "~1.3.0",
"minimist": "^1.2.0",
"strip-json-comments": "~2.0.1"
- },
- "dependencies": {
- "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="
- }
}
},
"readable-stream": {
- "version": "1.1.14",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
- "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
- "dev": true,
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
"requires": {
"core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
}
},
"recacheman-file": {
@@ -7111,17 +2943,33 @@
"integrity": "sha512-FqaAJ0Rn0yZaGPPKI6aAb6z5PbPLKGhlZnCWRB2vYzBtPOx3c/PhCT3B1jt1zjkVjDNLs06+NGRoK3GY/A0qsw==",
"requires": {
"lru-cache": "~4.1.x"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
+ }
}
},
"reconlx": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/reconlx/-/reconlx-1.3.3.tgz",
- "integrity": "sha512-X16C+MByiUERk+9Y62TA+L/u4UoaLAWr97ml9Eu8ON0jqXP9fngiMdqMZMKsVizMrLtyRwVOnerH7gqLX/b34Q==",
+ "version": "1.4.511",
+ "resolved": "https://registry.npmjs.org/reconlx/-/reconlx-1.4.511.tgz",
+ "integrity": "sha512-WZfokefvZ72ub4QecKWRuQwMWBZlyEBUfFG+hoLsgfMQgJutxdoNZH23drIDhWk+lXVJ9cHKL4PIPvmG3BiKOw==",
"requires": {
- "discord.js": "^12.5.1",
- "jsdom": "^16.4.0",
- "mongoose": "^5.10.15",
- "ms": "^2.1.2"
+ "axios": "^0.21.1",
+ "discord.js": "^13.0.1",
+ "jsdom": "^16.7.0",
+ "mongoose": "^5.13.5"
}
},
"redis": {
@@ -7154,9 +3002,9 @@
}
},
"regenerator-runtime": {
- "version": "0.13.7",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
- "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
+ "version": "0.13.9",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
+ "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
},
"regexp-clone": {
"version": "1.0.0",
@@ -7240,21 +3088,6 @@
"integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
"requires": {
"lru-cache": "^6.0.0"
- },
- "dependencies": {
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- }
}
},
"send": {
@@ -7462,16 +3295,13 @@
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
},
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
- "dev": true
- },
"string-toolkit": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/string-toolkit/-/string-toolkit-1.4.1.tgz",
- "integrity": "sha512-9ggIBwGTg6AS4Hg8u1EjtxUqZaIoIU004GAS+3D8zFJ6Ktkax0004kkmj2Re9FHN7670/YeDvR/wOg1/eo1Icg=="
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/string-toolkit/-/string-toolkit-1.5.0.tgz",
+ "integrity": "sha512-JCUSyVqYc8upsrYaCFqsVocSjjUQF8kuCyElwHuXXkPXHyc23YFR6BmacR+UnxkgM7+37/Y79qbOv0HlUzOOvQ==",
+ "requires": {
+ "decancer": "1.0.4"
+ }
},
"string-width": {
"version": "1.0.2",
@@ -7481,37 +3311,28 @@
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
"strip-ansi": "^3.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
- },
- "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"
- }
- }
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
}
},
"strip-ansi": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
- "dev": true,
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"requires": {
- "ansi-regex": "^5.0.0"
+ "ansi-regex": "^2.0.0"
}
},
"strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
},
"superscript-text": {
"version": "1.0.0",
@@ -7522,7 +3343,6 @@
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
"requires": {
"has-flag": "^4.0.0"
}
@@ -7547,9 +3367,9 @@
},
"dependencies": {
"ajv": {
- "version": "8.6.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.1.tgz",
- "integrity": "sha512-42VLtQUOLefAvKFAQIxIZDaThq6om/PrfP0CYk3/vn+y4BMNkKnbli8ON2QCiHov4KkzOSJ/xSoBJdayiiYvVQ==",
+ "version": "8.6.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz",
+ "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==",
"dev": true,
"requires": {
"fast-deep-equal": "^3.1.1",
@@ -7558,6 +3378,12 @@
"uri-js": "^4.2.2"
}
},
+ "ansi-regex": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "dev": true
+ },
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
@@ -7580,13 +3406,22 @@
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.0"
}
+ },
+ "strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
}
}
},
"tar": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz",
- "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==",
+ "version": "6.1.11",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz",
+ "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==",
"requires": {
"chownr": "^2.0.0",
"fs-minipass": "^2.0.0",
@@ -7594,13 +3429,6 @@
"minizlib": "^2.1.1",
"mkdirp": "^1.0.3",
"yallist": "^4.0.0"
- },
- "dependencies": {
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- }
}
},
"tar-fs": {
@@ -7643,11 +3471,6 @@
"readable-stream": "^3.4.0"
}
},
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
"readable-stream": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
@@ -7657,19 +3480,6 @@
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
}
- },
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
- },
- "string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "requires": {
- "safe-buffer": "~5.2.0"
- }
}
}
},
@@ -7715,6 +3525,16 @@
"utf8-byte-length": "^1.0.1"
}
},
+ "ts-mixer": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.0.tgz",
+ "integrity": "sha512-nXIb1fvdY5CBSrDIblLn73NW0qRDk5yJ0Sk1qPBF560OdJfQp9jhl+0tzcY09OZ9U+6GpeoI9RjwoIKFIoB9MQ=="
+ },
+ "tslib": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+ "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
+ },
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -7734,19 +3554,17 @@
"integrity": "sha512-AQOzLJpYlpWMy8n+0ATyKKZzWlZBJN+G0C+5lhX7Ftc2PeEVdUU/7ns2Pn2vVje26AIZ/OHwFoUbdv6YYD/wGg=="
},
"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,
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
"requires": {
- "prelude-ls": "^1.2.1"
+ "prelude-ls": "~1.1.2"
}
},
"type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
+ "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA=="
},
"type-is": {
"version": "1.6.18",
@@ -7810,6 +3628,11 @@
"integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
"dev": true
},
+ "vali-date": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz",
+ "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY="
+ },
"vary": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
@@ -7837,14 +3660,65 @@
"integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w=="
},
"weky": {
- "version": "1.9.9",
- "resolved": "https://registry.npmjs.org/weky/-/weky-1.9.9.tgz",
- "integrity": "sha512-ldaCKoTC1NRv296B7trgDfocifs+hi8YvXeaitjZnTg7LxxIjZZX66NLNala6HtjEeH/dc2b0h9nrDB2DpY+/A==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/weky/-/weky-3.1.5.tgz",
+ "integrity": "sha512-BtgpAx8BF9UoUZpSd2RGUMCGgWa1Vj7A1bit0D/lI/FLBkMvviLClyOqr7bfC2m4gh1u2oB8MteIIdSNLxc8Dw==",
"requires": {
- "discord-buttons": "^3.0.1",
- "mathjs": "^9.4.2",
- "ms": "^2.1.3",
- "node-fetch": "^2.6.1"
+ "@weky/inlinereply": "^0.0.0",
+ "axios": "^0.21.1",
+ "chalk": "^4.1.1",
+ "cheerio": "^1.0.0-rc.10",
+ "discord-buttons": "^4.0.0",
+ "discord.js": "^12.5.3",
+ "html-entities": "^2.3.2",
+ "mathjs": "^9.4.3",
+ "node-fetch": "^2.6.1",
+ "quick.db": "^7.1.3",
+ "string-width": "^2.1.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+ },
+ "discord.js": {
+ "version": "12.5.3",
+ "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-12.5.3.tgz",
+ "integrity": "sha512-D3nkOa/pCkNyn6jLZnAiJApw2N9XrIsXUAdThf01i7yrEuqUmDGc7/CexVWwEcgbQR97XQ+mcnqJpmJ/92B4Aw==",
+ "requires": {
+ "@discordjs/collection": "^0.1.6",
+ "@discordjs/form-data": "^3.0.1",
+ "abort-controller": "^3.0.0",
+ "node-fetch": "^2.6.1",
+ "prism-media": "^1.2.9",
+ "setimmediate": "^1.0.5",
+ "tweetnacl": "^1.0.3",
+ "ws": "^7.4.4"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
}
},
"whatwg-encoding": {
@@ -7898,10 +3772,9 @@
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"ws": {
- "version": "7.5.3",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz",
- "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==",
- "requires": {}
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.4.tgz",
+ "integrity": "sha512-zP9z6GXm6zC27YtspwH99T3qTG7bBFv2VIkeHstMLrLlDJuzA7tQ5ls3OJ1hOGGCzTQPniNJoHXIAOS0Jljohg=="
},
"xml-name-validator": {
"version": "3.0.0",
@@ -7914,9 +3787,9 @@
"integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="
},
"yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
}
}
}
diff --git a/package.json b/package.json
index 16c4d3c..4e2f84b 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "cath.exe",
- "version": "2.0.1",
+ "version": "3.0.0",
"description": "cath.exe bot created by Night",
"engines": {
"node": "*",
@@ -9,9 +9,13 @@
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
- "dev": "nodemon index.js",
- "start": "node index.js",
- "dashboard": "cd dashboard && npm run dev"
+ "dev": "nodemon .",
+ "start": "node .",
+ "node-update": "npm i --save-dev node@16 && npm config set prefix=$(pwd)/node_modules/node && export PATH=$(pwd)/node_modules/node/bin:$PATH",
+ "node-clean": "rm -rf node_modules && rm package-lock.json && npm cache clear --force && npm cache clean --force && npm i",
+ "node-update-then-clean": "npm run node-update && npm run node-clean-cache",
+ "canvas": "npm uninstall canvas && npm i canvas",
+ "all": "npm run node-update && npm run node-clean && npm uninstall canvas && npm i canvas && node ."
},
"repository": {
"type": "git",
@@ -34,6 +38,7 @@
"eslint": "^7.30.0",
"eslint-config-google": "^0.14.0",
"jshint": "^2.13.0",
+ "node": "^16.6.1",
"prettier": "^2.3.2"
},
"dependencies": {
@@ -47,13 +52,14 @@
"discord-canvas": "^1.4.1",
"discord-giveaways": "^4.5.1",
"discord-xp": "^1.1.16",
- "discord.js": "^12.5.3",
+ "discord.js": "^13.1.0",
"dotenv": "^10.0.0",
"erela.js": "^2.3.3",
"erela.js-spotify": "^1.2.0",
"express": "^4.17.1",
"express-session": "^1.17.2",
"figlet": "^1.5.0",
+ "glob": "^7.1.7",
"goosecache": "^9.0.14",
"imageapi.js": "^1.7.0",
"leven": "^3.1.0",
@@ -69,6 +75,6 @@
"soundcloud-downloader": "^0.2.4",
"string-toolkit": "^1.4.0",
"superscript-text": "^1.0.0",
- "weky": "^1.9.9"
+ "weky": "^3.1.5"
}
}
diff --git a/util/dist/cmds.js b/util/dist/cmds.js
deleted file mode 100644
index f375b89..0000000
--- a/util/dist/cmds.js
+++ /dev/null
@@ -1,39 +0,0 @@
-const { readdirSync } = require("fs");
-const ms = require("ms");
-function cmds() {
- let categories = [];
- readdirSync("./commands").forEach(dir => {
- const dirs = readdirSync(`./commands/${dir}`).filter(file =>
- file.endsWith(".js")
- );
- let commands = [];
- dirs.map(cmd => {
- const file = require(`../../commands/${dir}/${cmd}`);
- commands.push({
- name: file.name ? file.name : "No command name",
- description: file.description
- ? file.description
- : "No command description",
- aliases: file.aliases ? file.aliases : "No command aliases",
- usage: file.usage ? `C.${file.name} ${file.usage}` : `C.${file.name}`,
- timeout: file.timeout
- ? ms(file.timeout, { long: true })
- : "No command cooldown",
- BotPermission: file.BotPerm
- ? file.BotPerm
- : "No required bot permission",
- UserPermission: file.UserPerm
- ? file.UserPerm
- : "No required user permission",
- status: file.status ? file.status : true,
- });
- });
- let data = {
- name: dir,
- commands,
- };
- categories.push(data);
- });
- return categories;
-}
-module.exports = { cmds };
diff --git a/util/dist/err.js b/util/dist/err.js
deleted file mode 100644
index 134b0a8..0000000
--- a/util/dist/err.js
+++ /dev/null
@@ -1,221 +0,0 @@
-const { MessageEmbed } = require("discord.js");
-const client = require("../../bot");
-/**
- * @param {String} message
- * @param {String} dir
- * @param {String} file
- * @param {String} err
- */
-module.exports = async (message, dir, file, err) => {
- switch (err) {
- case 101:
- err = "Invalid argument";
- break;
- case 0:
- err = "Missing argument";
- break;
- case 1:
- err = "Missing 'User' argument";
- break;
- case 2:
- err = "'User' argument can't be author";
- break;
- case 3:
- err = "Missing 'Role' argument";
- break;
- case 4:
- err = "Missing 'Message' argument";
- break;
- case 5:
- err = "Missing 'Number' argument";
- break;
- case 6:
- err = "Missing permission";
- break;
- case 7:
- err = "Invalid number";
- break;
- case 8:
- err = "User doesn't have enough hierarchy";
- break;
- case 9:
- err = "Bot doesn't have enough hierarchy";
- break;
- case 10:
- err = "There isn't any data";
- break;
- case 11:
- err = "Missing 'Emoji' argument";
- break;
- case 12:
- err = "Missing 'Text' argument";
- break;
- case 13:
- err = "'Text' argument must be less than or equal to 100";
- break;
- case 14:
- err = "The maximum of modmail choices is 5";
- break;
- case 15:
- err = "Emoji can't be found";
- break;
- case 16:
- err = "'Time' argument must be larger than 1 second";
- break;
- case 17:
- err = "Missing 'Command'/'Category' argument";
- break;
- case 18:
- err = "'Command'/'Category' is already disabled";
- break;
- case 19:
- err = "Missing 'Time' argument";
- break;
- case 20:
- err = "Insufficient balance";
- break;
- case 21:
- err = "Missing 'Item' argument";
- break;
- case 22:
- err = "Invalid Item";
- break;
- case 23:
- err = "You didn't have enough item to gift";
- break;
- case 24:
- err = "Item invalid or you don't have that item";
- break;
- case 25:
- err = "Inventory is empty";
- break;
- case 26:
- err = "Giveaway not found";
- break;
- case 27:
- err = "Missing 'Message ID' argument";
- break;
- case 28:
- err = "Missing 'Channel' argument";
- break;
- case 29:
- err = "'Time' argument is invalid";
- break;
- case 30:
- err = "Missing 'Winners' argument";
- break;
- case 31:
- err = "'Winner' argument must be a number";
- break;
- case 32:
- err = "Missing 'Prize' argument";
- break;
- case 33:
- err = "You cannot hug yourself";
- break;
- case 34:
- err = "There isn't any song playing in the server currently";
- break;
- case 35:
- err = "You must be in a voice channel";
- break;
- case 36:
- err = "The player has stopped and the queue has been cleared";
- break;
- case 37:
- err = "There is no queue";
- break;
- case 38:
- err = "Can't find the playlist at YouTube";
- break;
- case 39:
- err = "Can't join the voice channel";
- break;
- case 40:
- err = "Left the voice channel since there is no song at the queue";
- break;
- case 41:
- err = "I am not in a voice channel";
- break;
- case 42:
- err = "I can't find this song/video";
- break;
- case 43:
- err = "I can't find the song at SoundCloud";
- break;
- case 44:
- err = "I can't find the song at YouTube";
- break;
- case 45:
- err = "Invalid selection";
- break;
- case 46:
- err = "Missing 'Prefix' argument";
- break;
- case 47:
- err = "Missing 'Command' argument";
- break;
- case 48:
- err = "The attachment must be an image";
- break;
- case 49:
- err = "'Emoji' name must be more than 2 characters";
- break;
- case 50:
- err =
- "The error maybe the link isn't a image, or the image size is too big";
- break;
- case 51:
- err = "Missing 'Query' argument";
- break;
- case 52:
- err = "This message doesn't exist in this channel";
- break;
- case 53:
- err = "Missing 'Code' argument";
- break;
- case 54:
- err = "'Text' argument must be less than or equal to 2000";
- break;
- case 55:
- err = "Different channel between user and client";
- break;
- case 404:
- err = "Error 404 - Not Found";
- break;
- case 505:
- err = "You have reached the maximum number of premium servers";
- break;
- case 506:
- err = "This server is already premium";
- break;
- case 999:
- err = "An unexpected error occured. Please try again.";
- break;
- default:
- "Missing argument";
- break;
- }
- const pull = require(`../../commands/${dir}/${file}`);
- let pre = await client.prefix(message);
- let embed = new MessageEmbed()
- .setAuthor(
- `Error from ${message.author.tag}`,
- message.author.displayAvatarURL({ dynamic: true })
- )
- .setColor("RED")
- .setDescription(
- `${require("../../config.json").ca}\nUse \`${pre}help ${
- pull.name
- }\` to get help\n \n `
- )
- .addField(
- `**>Usage**: ${pre}${pull.name} ${pull.usage ? pull.usage : ""}`,
- `\`${err}\``
- )
- .setTimestamp()
- .setThumbnail(client.user.displayAvatarURL({ dynamic: false }))
- .setURL(client.web)
- .setFooter(`Made by ${client.author}`);
- message.inlineReply(embed).then(msg => msg.delete({ timeout: 15000 }));
-};
diff --git a/util/dist/item.js b/util/dist/item.js
deleted file mode 100644
index 78300fe..0000000
--- a/util/dist/item.js
+++ /dev/null
@@ -1,68 +0,0 @@
-module.exports = [
- {
- item: "<:na45:840231919529623562> NA-45",
- alias: "na45",
- id: "na45",
- price: 10000,
- },
- {
- item: "<:50gs:840231952045178892> Akimbo .50 GS",
- alias: ".50gs",
- id: ".50gs",
- price: 10000,
- },
- {
- item: "<:mantaray:840231914747985941> Manta Ray",
- alias: "mantaray",
- id: "mantaray",
- price: 50000,
- },
- {
- item: "<:zer0:840231945778626642> Zero",
- alias: "zero",
- id: "zero",
- price: 50000,
- },
- {
- item: "<:artery:840231910575833118> Artery",
- alias: "artery",
- id: "artery",
- price: 50000,
- },
- {
- item: "<:alias:840231973443338321> Alias",
- alias: "alias",
- id: "alias",
- price: 50000,
- },
- {
- item: "<:urban:840231930741653545> Urban Tracker",
- alias: "urban",
- id: "urban",
- price: 50000,
- },
- {
- item: "<:scylla:840231932289089556> Scylla",
- alias: "scylla",
- id: "scylla",
- price: 50000,
- },
- {
- item: "<:parkk:840231975380975636> Park",
- alias: "park",
- id: "park",
- price: 50000,
- },
- {
- item: "<:mara:840231965210968104> Mara",
- alias: "mara",
- id: "mara",
- price: 50000,
- },
- {
- item: "<:outrider:840231986504794153> Outrider",
- alias: "outrider",
- id: "outrider",
- price: 50000,
- },
-];
diff --git a/util/dist/manager.js b/util/dist/manager.js
deleted file mode 100644
index 6631de2..0000000
--- a/util/dist/manager.js
+++ /dev/null
@@ -1,86 +0,0 @@
-const { Manager } = require("erela.js");
-const Spotify = require("erela.js-spotify");
-const { MessageEmbed } = require("discord.js");
-module.exports = async client => {
- try {
- const id = process.env.SPOTIFY_ID;
- const secret = process.env.SPOTIFY_SECRET;
- client.manager = new Manager({
- plugins: [
- new Spotify({
- clientID: id,
- clientSecret: secret,
- }),
- ],
- nodes: [
- {
- host: process.env.host,
- port: 80,
- password: process.env.password,
- retryDelay: 5000,
- },
- ],
- autoPlay: true,
- send: (id, payload) => {
- const guild = client.guilds.cache.get(id);
- if (guild) guild.shard.send(payload);
- },
- })
- .on("nodeConnect", node =>
- console.log(`Node "${node.options.identifier}" has connected.`)
- )
- .on("nodeError", (node, error) =>
- console.log(
- `Node "${node.options.identifier}" encountered an error: ${error.message}.`
- )
- )
- .on("trackStart", (player, track) => {
- const channel = client.channels.cache.get(player.textChannel);
- const embed = new MessageEmbed()
- .setColor("02023a")
- .setAuthor(
- `Now Playing`,
- client.user.displayAvatarURL({
- dynamic: true,
- })
- )
- .setFooter(`Made by ${client.author}`)
- .setTimestamp()
- .setDescription(`[${track.title}](${track.uri})`)
- .addField(`Requested By : `, `${track.requester}`, true);
- channel.send(embed);
- })
- .on("trackStuck", (player, track) => {
- const channel = client.channels.cache.get(player.textChannel);
- const embed = new MessageEmbed()
- .setColor("02023a")
- .setAuthor(
- `Track Stuck`,
- client.user.displayAvatarURL({
- dynamic: true,
- })
- )
- .setDescription(`${track.title}`)
- .setFooter(`Made by ${client.author}`)
- .setTimestamp();
- channel.send(embed);
- })
- .on("queueEnd", player => {
- const channel = client.channels.cache.get(player.textChannel);
- const embed2 = new MessageEmbed()
- .setColor("02023a")
- .setAuthor(
- `Queue has ended`,
- client.user.displayAvatarURL({
- dynamic: true,
- })
- )
- .setFooter(`Made by ${client.author}`)
- .setTimestamp();
- channel.send(embed2);
- player.destroy();
- });
- } catch (e) {
- console.log(e);
- }
-};
diff --git a/util/functions/economy.js b/util/functions/economy.js
deleted file mode 100644
index 3143899..0000000
--- a/util/functions/economy.js
+++ /dev/null
@@ -1,243 +0,0 @@
-module.exports = async (client, message) => {
- const econ = require("../../models/econ");
- const user = require("../../models/users");
- client.createUser = id => {
- user.findOne({ User: id }, (err, data) => {
- new user({
- User: id,
- }).save();
- });
- };
- client.createProfile = id => {
- econ.findOne({ User: id }, (err, data) => {
- new econ({
- User: id,
- }).save();
- });
- };
- client.multi = message =>
- new Promise(async ful => {
- var multiplier = 0;
- const b = await user.findOne({ User: message.author.id });
- if (!b) {
- client.createUser(message.author.id);
- }
- if (b.Tier == 3) {
- multiplier += 0.1;
- }
- if (b.Tier == 2) {
- multiplier += 0.15;
- }
- if (b.Tier == 1) {
- multiplier += 0.2;
- }
- if (client.path.includes(message.guild.id)) {
- multiplier += 0.15;
- }
- if (
- [
- "🐱",
- "😾",
- "😿",
- "😽",
- "🙀",
- "😼",
- "😻",
- "😹",
- "😸",
- "😺",
- "cathexe",
- "cath",
- ]
- .map(x => (message.channel.name.includes(x) ? 1 : 0))
- .filter(x => x).length
- ) {
- multiplier += 0.1;
- }
- if (b.Premium === true) {
- multiplier += 0.25;
- }
- ful(Math.round(multiplier * 10));
- });
-
- client.bal = id =>
- new Promise(async ful => {
- const data = await econ.findOne({ User: id });
- if (!data) {
- client.createProfile(id);
- }
- ful(data.CP);
- });
-
- client.add = (id, amount, message) => {
- econ.findOne({ User: id }, async (err, data) => {
- var multi = 0;
- if (err) throw err;
- if (data) {
- const users = require("../../models/users");
- users.findOne({ User: id }, (err, b) => {
- if (!b) {
- client.createUser(id);
- }
- if (b.Tier == 3) {
- multi += 0.1;
- }
- if (b.Tier == 2) {
- multi += 0.15;
- }
- if (b.Tier === 1) {
- multi += 0.2;
- }
- if (client.path.includes(message.guild.id)) {
- multi += 0.15;
- }
- if (
- [
- "🐱",
- "😾",
- "😿",
- "😽",
- "🙀",
- "😼",
- "😻",
- "😹",
- "😸",
- "😺",
- "cathexe",
- "cath",
- ]
- .map(x => (message.channel.name.includes(x) ? 1 : 0))
- .filter(x => x).length
- ) {
- multi += 0.1;
- }
- if (b.Premium === true) {
- multi += 0.25;
- }
- if (multi === 0) {
- data.CP += amount;
- data.save();
- } else {
- data.CP += Math.round(amount * multi + amount);
- data.save();
- }
- });
- } else {
- client.createProfile(id);
- }
- });
- };
- client.rmv = (id, amount) => {
- econ.findOne({ User: id }, async (err, data) => {
- if (err) throw err;
- if (data) {
- data.CP -= amount;
- data.save();
- } else {
- client.createProfile(id);
- }
- });
- };
- client.addItem = (id, item, amount) => {
- const economy = require("../../models/inventory");
- economy.findOne({ User: id }, (err, data) => {
- if (!data) {
- client.createProfile(id);
- } else {
- data[item] += amount;
- data.save();
- }
- });
- };
- client.removeItem = (id, item, amount) => {
- const inventory = require("../../models/inventory");
- inventory.findOne({ User: id }, (err, data) => {
- if (!data) {
- client.createProfile(id);
- } else {
- data[item] -= amount;
- data.save();
- }
- });
- };
- client.addcmdsused = id => {
- user.findOne({ User: id }, async (err, data) => {
- if (err) console.log(err);
- if (data) {
- data.CommandUsed++;
- data.save();
- } else {
- client.createUser(id);
- }
- });
- };
-
- client.ADDBJWin = id => {
- econ.findOne({ User: id }, async (err, data) => {
- if (err) throw err;
- if (data) {
- data.BJWins++;
- data.save();
- } else {
- client.createProfile(id);
- }
- });
- };
- client.ADDSWin = id => {
- econ.findOne({ User: id }, async (err, data) => {
- if (err) throw err;
- if (data) {
- data.SlotsWins++;
- data.save();
- } else {
- client.createProfile(id);
- }
- });
- };
- client.ADDBWin = id => {
- econ.findOne({ User: id }, async (err, data) => {
- if (err) throw err;
- if (data) {
- data.BetWins++;
- data.save();
- } else {
- client.createProfile(id);
- }
- });
- };
- client.cmdsUSED = id =>
- new Promise(async ful => {
- const data = await user.findOne({ User: id });
- if (!data) {
- client.createProfile(id);
- }
- ful(data.CommandUsed);
- });
-
- client.bjWin = id =>
- new Promise(async ful => {
- const data = await econ.findOne({ User: id });
- if (!data) {
- client.createProfile(id);
- }
- ful(data.BJWins);
- });
-
- client.sWin = id =>
- new Promise(async ful => {
- const data = await econ.findOne({ User: id });
- if (!data) {
- client.createProfile(id);
- }
- ful(data.SlotsWins);
- });
-
- client.bWin = id =>
- new Promise(async ful => {
- const data = await econ.findOne({ User: id });
- if (!data) {
- client.createProfile(id);
- }
- ful(data.BetWins);
- });
-};
diff --git a/util/functions/function.js b/util/functions/function.js
deleted file mode 100644
index 93dfd2a..0000000
--- a/util/functions/function.js
+++ /dev/null
@@ -1,49 +0,0 @@
-function rndint(max, min) {
- return Math.floor(Math.random() * (max - (min ? min : 0))) + (min ? min : 0);
-}
-function random() {
- const num = Math.floor(Math.random() * 2);
- return num === 1;
-}
-function timer(timestamp) {
- const timeLeft = timestamp;
- const days = Math.floor(timeLeft / 86400000);
- const hours = Math.floor(timeLeft / 3600000) - days * 24;
- const minutes = Math.floor(timeLeft / 60000) - days * 1440 - hours * 60;
- const seconds =
- Math.floor(timeLeft / 1000) - days * 86400 - hours * 3600 - minutes * 60;
- const mseconds = timeLeft / 1000 - days * 86400 - hours * 3600 - minutes * 60;
- let string = "";
- if (days) string = string + `${days} ${days == 1 ? "day " : "days "}`;
- if (hours) string = string + `${hours} ${hours == 1 ? "hour " : "hours "}`;
- if (minutes)
- string = string + `${minutes} ${minutes == 1 ? "minute " : "minutes "}`;
- if (seconds)
- string = string + `${seconds} ${seconds == 1 ? "second " : "seconds "}`;
- if (!string.length) string = `${mseconds.toFixed(1)} second`;
- return string;
-}
-function sleep(ms) {
- let start = new Date().getTime();
- let end = start;
- while (end < start + ms) {
- end = new Date().getTime();
- }
-}
-function toHHMMSS(str) {
- var sec_num = parseInt(str, 10);
- var hours = Math.floor(sec_num / 3600);
- var minutes = Math.floor((sec_num - hours * 3600) / 60);
- var seconds = sec_num - hours * 3600 - minutes * 60;
- if (hours < 10) {
- hours = "0" + hours;
- }
- if (minutes < 10) {
- minutes = "0" + minutes;
- }
- if (seconds < 10) {
- seconds = "0" + seconds;
- }
- return hours + ":" + minutes + ":" + seconds;
-}
-module.exports = { rndint, random, timer, sleep, toHHMMSS };
diff --git a/util/functions/mongoose.js b/util/functions/mongoose.js
deleted file mode 100644
index 53b13d1..0000000
--- a/util/functions/mongoose.js
+++ /dev/null
@@ -1,602 +0,0 @@
-const mongoose = require("mongoose");
-const { GooseCache } = require("goosecache");
-const cachegoose = new GooseCache(mongoose, {
- engine: "memory",
-});
-mongoose.set("useFindAndModify", false);
-const u = require("../../models/users");
-const g = require("../../models/guilds");
-const m = require("../../models/bot");
-const e = require("../../models/econ");
-module.exports = {
- /**
- * @param {String} URI - Mongo Connection URI
- */
- async connect(URI) {
- if (!URI) throw new Error("Please provide a Mongoose URI");
- return mongoose.connect(URI, {
- useNewUrlParser: true,
- useUnifiedTopology: true,
- });
- },
- /**
- * @param {String} ID - Guild ID
- */
- async getGuild(ID) {
- if (!ID) throw new Error("Guild ID?");
- const guild = await g.findOne({ Guild: ID }).lean().cache(120);
- if (!guild) {
- const gg = new g({ Guild: ID });
- const {
- Guild,
- Prefix,
- Welcome,
- Goodbye,
- Log,
- Premium,
- Category,
- Commands,
- Level,
- } = gg;
- await gg.save().catch(error => console.log(error));
- return {
- Guild,
- Prefix,
- Welcome,
- Goodbye,
- Log,
- Premium,
- Category,
- Commands,
- Level,
- };
- } else {
- const Guild = guild.Guild;
- const Prefix = guild.Prefix;
- const Welcome = guild.Welcome;
- const Goodbye = guild.Goodbye;
- const Log = guild.Log;
- const Premium = guild.Premium;
- const Category = guild.Category;
- const Commands = guild.Commands;
- const Level = guild.Level;
- return {
- Guild,
- Prefix,
- Welcome,
- Goodbye,
- Log,
- Premium,
- Category,
- Commands,
- Level,
- };
- }
- },
- /**
- * @param {String} ID - User ID
- */
- async getUser(ID) {
- if (!ID) throw new Error("User ID?");
- const user = await u.findOne({ User: ID }).lean().cache(120);
- if (!user) {
- const ss = new u({ User: ID });
- const {
- User,
- AFK,
- AFKDate,
- Tier,
- Premium,
- Blacklist,
- Blacklist_Reason,
- PremiumServers,
- CommandUsed,
- } = ss;
- await ss.save().catch(error => console.log(error));
- return {
- User,
- AFK,
- AFKDate,
- Tier,
- Premium,
- Blacklist,
- Blacklist_Reason,
- PremiumServers,
- CommandUsed,
- };
- } else {
- const User = user.User;
- const AFK = user.AFK;
- const AFKDate = user.AFKDate;
- const Tier = user.Tier;
- const Premium = user.Premium;
- const Blacklist = user.Blacklist;
- const Blacklist_Reason = user.Blacklist_Reason;
- const PremiumServers = user.PremiumServers;
- const CommandUsed = user.CommandUsed;
- return {
- User,
- AFK,
- AFKDate,
- Tier,
- Premium,
- Blacklist,
- Blacklist_Reason,
- PremiumServers,
- CommandUsed,
- };
- }
- },
- /**
- * @param {String} ID - User ID
- */
- async getUserEcon(ID) {
- if (!ID) throw new Error("User ID?");
- const user = await u.findOne({ User: ID }).lean().cache(120);
- if (!user) {
- const ss = new u({ User: ID });
- const { User, CP, BJWins, SlotsWins, BetWins } = ss;
- await ss.save().catch(error => console.log(error));
- return {
- User,
- CP,
- BJWins,
- SlotsWins,
- BetWins,
- };
- } else {
- const User = user.User;
- const CP = user.CP;
- const BJWins = user.BJWins;
- const SlotsWins = user.SlotsWins;
- const BetWins = user.BetWins;
- return {
- User,
- CP,
- BJWins,
- SlotsWins,
- BetWins,
- };
- }
- },
- /**
- * @param {String} ID - User ID
- * @param {String} Reason - AFK Reason
- */
- async AFK(ID, Reason) {
- if (!ID) throw new Error("User ID?");
- if (!Reason) throw new Error("AFK Reason?");
- const user = await u.findOne({ User: ID });
- if (!user) {
- const sss = new u({ User: ID });
- await sss.save().catch(error => console.log(error));
- return { Reason, Time };
- } else {
- user.User = ID;
- user.AFK = Reason;
- await user.save().catch(error => console.log(error));
- cachegoose.clearCache();
- return { Reason };
- }
- },
- /**
- * @param {String} ID - User ID
- */
- async DelAFK(ID) {
- if (!ID) throw new Error("User ID?");
- const user = await u.findOne({ User: ID });
- if (!user) {
- const sssss = new u({ User: ID });
- await sssss.save().catch(error => console.log(error));
- return { ID };
- } else {
- user.AFK = null;
- user.AFKDate = null;
- await user.save().catch(error => console.log(error));
- cachegoose.clearCache();
- return { ID };
- }
- },
- /**
- * @param {String} ID - ID of the User
- * @param {String} Toggle - Blacklist Toggle(true/false)
- * @param {String} Reason - Blacklist Reason
- */
- async BK(ID, Toggle, Reason) {
- if (!ID) throw new Error("User ID?");
- if (!Toggle) throw new Error("Blacklist Toggle?");
- if (!Reason) throw new Error("Blacklist Feason?");
- const user = await u.findOne({ User: ID });
- if (!user) {
- const sus = new u({ User: ID });
- if (Toggle == "true") {
- user.Blacklist = true;
- user.Blacklist_Reason = Reason;
- } else {
- user.Blacklist = false;
- user.Blacklist_Reason = null;
- }
- await sus.save().catch(error => console.log(error));
- cachegoose.clearCache();
- return { Reason };
- } else {
- if (Toggle == "true") {
- user.Blacklist = true;
- user.Blacklist_Reason = Reason;
- } else {
- user.Blacklist = false;
- user.Blacklist_Reason = null;
- }
- await user.save().catch(error => console.log(error));
- cachegoose.clearCache();
- return { Reason };
- }
- },
- /**
- * @param {String} ID - ID of the User
- * @param {Boolean} Toggle - Premium Toggle(true/false)
- * @param {Number} Tier - Tier
- */
- async Premium(ID, Toggle, Tier) {
- if (!ID) throw new Error("User ID?");
- if (!Toggle) throw new Error("Premium Toggle?");
- if (!Tier) throw new Error("Premium Feason?");
- const user = await u.findOne({ User: ID });
- if (!user) {
- const sus = new u({ User: ID });
- if (Toggle == "true") {
- user.Premium = true;
- user.Tier = Tier;
- } else {
- user.Premium = false;
- user.Tier = 0;
- }
- await sus.save().catch(error => console.log(error));
- cachegoose.clearCache();
- return { Tier };
- } else {
- if (Toggle == "true") {
- user.Premium = true;
- user.Tier = Tier;
- } else {
- user.Premium = false;
- user.Tier = 0;
- }
- await user.save().catch(error => console.log(error));
- cachegoose.clearCache();
- return { Tier };
- }
- },
- /**
- * @param {String} ID
- */
- async CreateGuild(ID) {
- await new g({ Guild: ID });
- return;
- },
- /**
- * @param {String} ID
- */
- async CreateBot(ID) {
- await new m({ Guild: ID });
- return;
- },
- /**
- * @param {String} ID - Guild ID
- */
- async DelGuild(ID) {
- await g.deleteMany({ Guild: ID });
- return;
- },
- /**
- * @param {String} ID - User ID
- * @param {String} Prefix - Guild Prefix
- */
- async setPrefix(ID, Prefix) {
- if (!ID) throw new Error("Guild ID?");
- if (!Prefix) throw new Error("Prefix?");
- const guild = await g.findOne({ Guild: ID });
- if (!guild) {
- const newU = new g({ Guild: ID });
- await newU.save().catch(error => console.log(error));
- return { Prefix };
- }
- guild.Prefix = Prefix;
- await guild.save().catch(error => console.log(error));
- cachegoose.clearCache();
- return { Prefix };
- },
- /**
- * @param {String} ID - Guild ID
- * @param {String} Channel - Welcome Channel
- */
- async setWelcome(ID, Channel) {
- if (!ID) throw new Error("Guild ID?");
- if (!Channel) throw new Error("Channel?");
- const guild = await g.findOne({ Guild: ID });
- if (!guild) {
- const newU = new g({ Guild: ID });
- await newU.save().catch(error => console.log(error));
- return { Channel };
- }
- guild.Welcome = Channel;
- await guild.save().catch(error => console.log(error));
- cachegoose.clearCache();
- return { Channel };
- },
- /**
- * @param {String} ID - Guild ID
- * @param {String} Channel - Goodbye Channel
- */
- async setGoodbye(ID, Channel) {
- if (!ID) throw new Error("Guild ID?");
- if (!Channel) throw new Error("Channel?");
- const guild = await g.findOne({ Guild: ID });
- if (!guild) {
- const newU = new g({ Guild: ID });
- await newU.save().catch(error => console.log(error));
- return { Channel };
- }
- guild.Goodbye = Channel;
- await guild.save().catch(error => console.log(error));
- cachegoose.clearCache();
- return { Channel };
- },
- /**
- * @param {String} ID - Guild ID
- * @param {String} Channel - Log Channel
- * @param {String} WebhookID - WebhookID
- * @param {String} WebhookToken - WebhookToken
- */
- async setLog(ID, Channel, WID, WToken) {
- if (!ID) throw new Error("Guild ID?");
- if (!Channel) throw new Error("Channel?");
- if (!WID) throw new Error("WebhookID?");
- if (!WToken) throw new Error("WebhookToken?");
- const guild = await g.findOne({ Guild: ID });
- if (!guild) {
- const newU = new g({ Guild: ID });
- newU.LogChannel = Channel;
- newU.LogWebhookID = WID;
- newU.LogWebhookToken = WToken;
- await newU.save().catch(error => console.log(error));
- return { Channel };
- }
- guild.Log = Channel;
- guild.LogWebhookID = WID;
- guild.LogWebhookToken = WToken;
- await guild.save().catch(error => console.log(error));
- cachegoose.clearCache();
- return { Channel };
- },
- /**
- * @param {String} ID - Guild ID
- * @param {String} Toggle - premium Toggle
- */
- async setPremium(ID, Toggle) {
- if (!ID) throw new Error("Please Provide a Guild ID");
- if (!Toggle) throw new Error("Please Provide a Toggle!");
- const guild = await g.findOne({ Guild: ID });
- if (!guild) {
- const newU = new g({ Guild: ID });
- if (Toggle == "true") {
- guild.Premium = true;
- } else {
- guild.Premium = false;
- }
- await newU.save().catch(error => console.log(error));
- return;
- } else {
- if (Toggle == "true") {
- guild.Premium = true;
- } else {
- guild.Premium = false;
- }
- }
- await guild.save().catch(error => console.log(error));
- cachegoose.clearCache();
- return;
- },
- /**
- * @param {String} User - User ID
- * @param {String} ID - Guild ID
- * @param {String} Method - Method
- */
- async pushGuild(User, ID, method) {
- if (!method) return new Error("Method?");
- u.findOne({ User: User }, async (err, data) => {
- if (err) throw err;
- if (!data) return new Error("User not found");
- if (method === "push") {
- await data.PremiumServers.push(ID);
- await data.save().catch(error => console.log(error));
- data.save();
- }
- if (method === "splice") {
- const index = data.PremiumServers.indexOf(ID);
- data.PremiumServers.splice(index, 1);
- data.save();
- }
- cachegoose.clearCache();
- return { User };
- });
- },
- /**
- * @param {String} ID - Guild ID
- * @param {String} Type - Type
- * @param {String} Name - Name
- */
- async disable(ID, Type, Name) {
- if (!Name) throw new Error("Name?");
- if (!Type) throw new Error("Type?");
- if (!ID) throw new Error("Guild ID?");
- if (Type === "category") {
- const db = await g.findOne({ Guild: ID });
- if (!db) {
- const newdoc = await new g({ Guild: ID });
- await newdoc.save().catch(error => console.log(error));
- }
- await db.Category.push(Name);
- await db.save().catch(e => console.log(e));
- }
- if (Type === "command") {
- const db = await g.findOne({ Guild: ID });
- if (!db) {
- const newdoc = await new g({ Guild: ID });
- await newdoc.save().catch(error => console.log(error));
- }
- await db.Commands.push(Name);
- await db.save().catch(e => console.log(e));
- }
- cachegoose.clearCache();
- return { Name };
- },
- /**
- * @param {String} ID - Guild ID
- * @param {String} Type - Type
- * @param {String} Name - Name
- */
- async enable(ID, Type, Name) {
- if (!ID) throw new Error("Guild ID?");
- if (!Name) throw new Error("Name?");
- if (!Type) throw new Error("Type?");
- if (Type === "category") {
- const db = await g.findOne({ Guild: ID });
- if (!db) {
- return false;
- }
- const index = db.Category.indexOf(Name.toLowerCase());
- await db.Category.splice(index, 1);
- await db.save().catch(e => console.log(e));
- }
- if (Type === "command") {
- const db = await g.findOne({ Guild: ID });
- if (!db) {
- return false;
- }
- const index = db.Commands.indexOf(Name);
- await db.Commands.splice(index, 1);
- await db.save().catch(e => console.log(e));
- }
- cachegoose.clearCache();
- return true;
- },
- /**
- * @param {String} ID - Bot ID
- * @param {String} Toggle - Maintenance Toggle
- */
- async maintenance(ID, Toggle) {
- if (!ID) throw new Error("Please Provide a ID!");
- if (!Toggle) throw new Error("Please Provide a Toggle!");
- const idk = await m.findOne({ Bot: ID });
- if (!idk) {
- const newdb = new m({ Bot: ID });
- if (Toggle === "true") {
- newdb.Status = "true";
- } else {
- newdb.Status = "false";
- }
- await newdb.save().catch(error => console.log(error));
- return;
- } else {
- if (Toggle === "true") {
- idk.Status = "true";
- } else {
- idk.Status = "false";
- }
- }
- await idk.save().catch(error => console.log(error));
- cachegoose.clearCache();
- return;
- },
- /**
- * @param {String} ID - Bot ID
- * @param {String} Guilds - Guilds Number
- * @param {String} Users - Users Number
- */
- async botcache(ID, Guild, User) {
- if (!ID) throw new Error("Please Provide a ID!");
- if (!Guild) throw new Error("Please Provide a Guild Number!");
- if (!User) throw new Error("Please Provide a User Number!");
- const idk = await m.findOne({ Bot: ID });
- if (!idk) {
- const newdb = new m({ Bot: ID });
- if (Guild && User) {
- newdb.Guilds = Guild;
- newdb.Users = User;
- } else {
- newdb.Guilds = Guild;
- newdb.Users = User;
- }
- await newdb.save().catch(error => console.log(error));
- return;
- } else {
- if (Guild && User) {
- idk.Guilds = Guild;
- idk.Users = User;
- } else {
- idk.Guilds = Guild;
- idk.Users = User;
- }
- }
- await idk.save().catch(error => console.log(error));
- cachegoose.clearCache();
- return;
- },
- /**
- * @param {String} ID - Bot ID
- * @param {String} Commands - Commands
- */
- async commands(ID, Cmds) {
- if (!ID) throw new Error("Please Provide a ID!");
- if (!Cmds) throw new Error("Please Provide Commands!");
- const idk = await m.findOne({ Bot: ID });
- if (!idk) {
- const newdb = new m({ Bot: ID });
- if (Cmds) {
- newdb.Commands = Cmds;
- } else {
- newdb.Commands = Cmds;
- }
- await newdb.save().catch(error => console.log(error));
- return;
- } else {
- if (Cmds) {
- idk.Commands = Cmds;
- } else {
- idk.Commands = Cmds;
- }
- }
- await idk.save().catch(error => console.log(error));
- cachegoose.clearCache();
- return;
- },
- /**
- * @param {String} ID - Guild ID
- * @param {String} Toggle - Level Toggle
- */
- async setGLevel(ID, Toggle) {
- if (!ID) throw new Error("Please Provide a Guild ID");
- if (!Toggle) throw new Error("Please Provide a Toggle!");
- const guild = await g.findOne({ Guild: ID });
- if (!guild) {
- const newU = new g({ Guild: ID });
- if (Toggle == "true") {
- guild.Level = true;
- } else {
- guild.Level = false;
- }
- await newU.save().catch(error => console.log(error));
- return;
- } else {
- if (Toggle == "true") {
- guild.Level = true;
- } else {
- guild.Level = false;
- }
- }
- await guild.save().catch(error => console.log(error));
- cachegoose.clearCache();
- return;
- },
-};