From f3d151a9cab4d6795eba5d5c84fb2d932ab8e8cd Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Sun, 22 May 2022 10:47:04 -0300 Subject: [PATCH 001/236] base Sequelize code --- .gitignore | 3 ++- Util/{Models sequalize.js => database.js} | 18 +++++++++++++++--- config.json.template | 3 ++- main.js | 13 ++++++++++++- 4 files changed, 31 insertions(+), 6 deletions(-) rename Util/{Models sequalize.js => database.js} (54%) diff --git a/.gitignore b/.gitignore index 3f756f6..900c846 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ config.json node_modules/ -jsconfig.json \ No newline at end of file +jsconfig.json +database.sqlite \ No newline at end of file diff --git a/Util/Models sequalize.js b/Util/database.js similarity index 54% rename from Util/Models sequalize.js rename to Util/database.js index 0975269..2b64988 100644 --- a/Util/Models sequalize.js +++ b/Util/database.js @@ -7,17 +7,29 @@ const sequelize = new Sequelize('database', 'user', 'password', { storage: 'database.sqlite' }) -const Ban = sequelize.define('ban', { +const Bans = sequelize.define('bans', { userID:{ type: Sequelize.NUMBER, }, - raison: { + reason: { type: Sequelize.TEXT, - defaultValue: "No raison provided" + defaultValue: "No reason provided" }, Executor: Sequelize.STRING, type: { type: Sequelize.STRING, }, ID: Sequelize.NUMBER +}); + +const Warns = sequelize.define('warns', { + userID:{ + type: Sequelize.NUMBER, + }, + reason: { + type: Sequelize.TEXT, + defaultValue: "No reason provided" + }, + Executor: Sequelize.STRING, + ID: Sequelize.NUMBER }); \ No newline at end of file diff --git a/config.json.template b/config.json.template index dc01aed..bcfc624 100644 --- a/config.json.template +++ b/config.json.template @@ -1,5 +1,6 @@ { "token":"", "clientId":"", - "guildId":"" + "guildId":"", + "sqlPass":"" } \ No newline at end of file diff --git a/main.js b/main.js index 86073ca..b1c7067 100644 --- a/main.js +++ b/main.js @@ -1,10 +1,19 @@ const fs = require('node:fs'); const path = require('node:path'); +const Sequelize = require('sequelize') const { Client, Collection } = require('discord.js'); -const { token } = require('./config.json'); +const { token, sqlPass } = require('./config.json'); client = new Client({intents: 0}); +const sequelize = new Sequelize('database', 'user', sqlPass, { + host: 'localhost', + dialect: 'sqlite', + logging: false, + storage: 'database.sqlite', +}); +client.db = require('./Util/database') + client.commands = new Collection(); const commandsPath = path.join(__dirname, 'commands'); const commandFiles = fs.readdirSync(commandsPath).filter(file => file.endsWith('.js')); @@ -17,6 +26,8 @@ for (const file of commandFiles) { client.once('ready', () => { + client.db.Bans.sync() + client.db.Warns.sync() console.log(`Login as ${client.user.tag}`); }) From cf7aac4fe3b8a3d823e38fc484020cf6164ba85e Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Sun, 22 May 2022 11:24:57 -0300 Subject: [PATCH 002/236] database stuff --- Util/database.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Util/database.js b/Util/database.js index 2b64988..24a02ad 100644 --- a/Util/database.js +++ b/Util/database.js @@ -32,4 +32,6 @@ const Warns = sequelize.define('warns', { }, Executor: Sequelize.STRING, ID: Sequelize.NUMBER -}); \ No newline at end of file +}); + +module.exports = { Bans, Warns } \ No newline at end of file From 4d90ff3f769665e412fdc93dafb6ac183a78dc27 Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Sun, 22 May 2022 11:25:38 -0300 Subject: [PATCH 003/236] test warn command --- commands/warn.js | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/commands/warn.js b/commands/warn.js index d5d01cd..0e859e5 100644 --- a/commands/warn.js +++ b/commands/warn.js @@ -11,13 +11,21 @@ module.exports = { .setRequired(true)) .addStringOption(o => o .setName("reason") - .setDescription("Why should this user be warned?")), + .setDescription("Why should this user be warned?") + .setRequired(true)) +, async execute(interaction) { - const user = interaction.options.getUser("user") - const reason = interaction.options.getString("reason") - //interaction.reply({ content: "This command is not out yet!", ephemeral: true}) - interaction.reply({ content: `Warned ${user.tag}: ${reason}`}) - user.send(`You have been warned for: ${reason}`) + const user = interaction.options.getUser("user") + const reason = interaction.options.getString("reason") + const db = interaction.client.db.Warns + interaction.reply({ content: `Warned ${user.tag}: ${reason}`}) + user.send(`You have been warned for: ${reason}`) + db.create({ + reason: reason, + ID: 6969, + Executor: interaction.member.user.tag, + userID: user.id + }) //if (!reason) reason = "No reason provided" } } From 44161c460500680a12ff03a07c9cf89489d99f2e Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Sun, 22 May 2022 11:30:46 -0300 Subject: [PATCH 004/236] oops --- Util/database.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Util/database.js b/Util/database.js index 24a02ad..aeabc9d 100644 --- a/Util/database.js +++ b/Util/database.js @@ -30,8 +30,8 @@ const Warns = sequelize.define('warns', { type: Sequelize.TEXT, defaultValue: "No reason provided" }, - Executor: Sequelize.STRING, - ID: Sequelize.NUMBER + Executor: Sequelize.STRING//, + // ID: Sequelize.NUMBER }); module.exports = { Bans, Warns } \ No newline at end of file From 6fa9a1299039fb0beb5d7df71ed9621c66f0173d Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Sun, 22 May 2022 11:34:51 -0300 Subject: [PATCH 005/236] oops 2 electric boogaloo --- Util/database.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Util/database.js b/Util/database.js index aeabc9d..c102373 100644 --- a/Util/database.js +++ b/Util/database.js @@ -18,8 +18,8 @@ const Bans = sequelize.define('bans', { Executor: Sequelize.STRING, type: { type: Sequelize.STRING, - }, - ID: Sequelize.NUMBER + }//, + //ID: Sequelize.NUMBER }); const Warns = sequelize.define('warns', { From 3dcbdfc7afab237e92a675c869b4a634c56a4ce0 Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Sun, 22 May 2022 12:00:18 -0300 Subject: [PATCH 006/236] ban database + small fix --- commands/ban.js | 7 ++++++- commands/warn.js | 1 - 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/commands/ban.js b/commands/ban.js index b04147b..88f9879 100644 --- a/commands/ban.js +++ b/commands/ban.js @@ -17,7 +17,7 @@ module.exports = { async execute(interaction) { let member = interaction.options.getMember("user") let reason = interaction.options.getString("reason") - + const db = interaction.client.db.Bans if (!reason) reason = "No reason provided" if (interaction.options.getNumber("time") !== undefined) {let days = interaction.options.getNumber("time")} @@ -28,5 +28,10 @@ module.exports = { else if (!user.bannable) {interaction.reply("I can't ban this member");return} if (reason === String) interaction.reply(`${user.tag} has been banned with the reason ${reason}`) else if (reason !== String) interaction.reply(`${user.tag} has been banned`) + db.create({ + reason: reason, + Executor: interaction.member.user.tag, + userID: user.id + }) }, }; \ No newline at end of file diff --git a/commands/warn.js b/commands/warn.js index 0e859e5..8466cbb 100644 --- a/commands/warn.js +++ b/commands/warn.js @@ -22,7 +22,6 @@ module.exports = { user.send(`You have been warned for: ${reason}`) db.create({ reason: reason, - ID: 6969, Executor: interaction.member.user.tag, userID: user.id }) From 8a43211207740670eafdf1c6e843e6b3c72c225d Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Mon, 23 May 2022 08:07:34 -0300 Subject: [PATCH 007/236] fixed cache errors --- commands/ban.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/commands/ban.js b/commands/ban.js index 88f9879..2f9a2cd 100644 --- a/commands/ban.js +++ b/commands/ban.js @@ -15,14 +15,14 @@ module.exports = { .setName("time") .setDescription("How long to ban this user?")), async execute(interaction) { - let member = interaction.options.getMember("user") + let member = await interaction.client.users.fetch(interaction.options.getMember("user")) let reason = interaction.options.getString("reason") const db = interaction.client.db.Bans if (!reason) reason = "No reason provided" if (interaction.options.getNumber("time") !== undefined) {let days = interaction.options.getNumber("time")} else {let days = null} - + if (member.bannable) await member.ban({ days: days, reason: reason }).then(console.log).catch(error => {console.error(error);interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true });return}); else if (!user.bannable) {interaction.reply("I can't ban this member");return} From ffb4bd01176fc23a3f7520e983a1341fe32a7430 Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Mon, 23 May 2022 08:10:44 -0300 Subject: [PATCH 008/236] fixed ban command --- commands/ban.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/ban.js b/commands/ban.js index 2f9a2cd..8d877c0 100644 --- a/commands/ban.js +++ b/commands/ban.js @@ -25,7 +25,7 @@ module.exports = { if (member.bannable) await member.ban({ days: days, reason: reason }).then(console.log).catch(error => {console.error(error);interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true });return}); - else if (!user.bannable) {interaction.reply("I can't ban this member");return} + else if (!member.bannable) {interaction.reply("I can't ban this member");return} if (reason === String) interaction.reply(`${user.tag} has been banned with the reason ${reason}`) else if (reason !== String) interaction.reply(`${user.tag} has been banned`) db.create({ From c93c1f62982991087c3111082b1aadc6882db377 Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Tue, 24 May 2022 07:13:18 -0300 Subject: [PATCH 009/236] attempting to convert messages to embeds --- commands/ban.js | 19 ++++++++++++++++--- commands/kick.js | 8 +++++--- commands/lock.js | 8 +++++--- commands/slowmode.js | 18 ++++++++++++++---- commands/timeout.js | 18 +++++++++++++----- commands/unban.js | 12 ++++++++++-- commands/unlock.js | 7 +++++-- commands/warn.js | 9 +++++++-- 8 files changed, 75 insertions(+), 24 deletions(-) diff --git a/commands/ban.js b/commands/ban.js index 8d877c0..03c7fff 100644 --- a/commands/ban.js +++ b/commands/ban.js @@ -1,4 +1,5 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); +const { MessageEmbed } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() @@ -18,6 +19,7 @@ module.exports = { let member = await interaction.client.users.fetch(interaction.options.getMember("user")) let reason = interaction.options.getString("reason") const db = interaction.client.db.Bans + const replyEmbed = new MessageEmbed if (!reason) reason = "No reason provided" if (interaction.options.getNumber("time") !== undefined) {let days = interaction.options.getNumber("time")} @@ -25,9 +27,20 @@ module.exports = { if (member.bannable) await member.ban({ days: days, reason: reason }).then(console.log).catch(error => {console.error(error);interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true });return}); - else if (!member.bannable) {interaction.reply("I can't ban this member");return} - if (reason === String) interaction.reply(`${user.tag} has been banned with the reason ${reason}`) - else if (reason !== String) interaction.reply(`${user.tag} has been banned`) + else if (!member.bannable) { + replyEmbed.setDescription("I can't ban this member") + replyEmbed.setColor("#FF0000") + return + } + if (reason === String) { + replyEmbed.setDescription(`${user.tag} has been banned with the reason ${reason}`) + replyEmbed.setColor("#00FF00") + } + else if (reason !== String) { + replyEmbed.setDescription(`${user.tag} has been banned`) + replyEmbed.setColor("#00FF00") + } + interaction.reply({embeds:[replyEmbed]}) db.create({ reason: reason, Executor: interaction.member.user.tag, diff --git a/commands/kick.js b/commands/kick.js index bea707b..50fd1c8 100644 --- a/commands/kick.js +++ b/commands/kick.js @@ -1,5 +1,6 @@ const { SlashCommandBuilder } = require('@discordjs/builders') const { guildId } = require('../config.json') +const { MessageEmbed } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() @@ -19,8 +20,9 @@ module.exports = { if (!reason) reason = "No reason provided" if (member.kickable) member.kick({ reason: reason }).then(console.log).catch(error => {console.error(error);interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true });return}); - - if (reason === String) interaction.reply(`${user.tag} has been kicked with the reason ${reason}`) - else if (reason !== String) interaction.reply(`${user.tag} has been kicked`) + const replyEmbed = new MessageEmbed.setColor("#00FF00") + if (reason === String) replyEmbed.setDescription(`${user.tag} has been kicked with the reason ${reason}`) + else if (reason !== String) replyEmbed.setDescription(`${user.tag} has been kicked`) + interaction.reply({embeds:[replyEmbed]}) } } \ No newline at end of file diff --git a/commands/lock.js b/commands/lock.js index 3920d11..b98cae0 100644 --- a/commands/lock.js +++ b/commands/lock.js @@ -1,5 +1,6 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); const { guildId } = require("../config.json") +const { MessageEmbed } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() @@ -15,7 +16,7 @@ module.exports = { async execute(interaction) { let channel = interaction.options.getChannel("channel"); let reason = interaction.options.getString("reason") - + const replyEmbed = new MessageEmbed if (!reason) reason = "No reason provided" channel.permissionOverwrites.edit(guildId, { @@ -24,7 +25,8 @@ module.exports = { CREATE_PUBLIC_THREADS: false, CREATE_PRIVATE_THREADS: false, }, {reason: reason, type: 0}) - - interaction.reply("Channel locked") + replyEmbed.setColor("#00FF00") + replyEmbed.setDescription("Channel locked") + interaction.reply({embeds:[replyEmbed]}) } } \ No newline at end of file diff --git a/commands/slowmode.js b/commands/slowmode.js index 596ad83..8927dd8 100644 --- a/commands/slowmode.js +++ b/commands/slowmode.js @@ -1,4 +1,5 @@ const { SlashCommandBuilder } = require('@discordjs/builders') +const { MessageEmbed } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() @@ -25,8 +26,9 @@ module.exports = { const unit = interaction.options.getString('unit'); const RealLen = interaction.options.getInteger('duration'); const reason = interaction.options.getString('reason'); + const replyEmbed = new MessageEmbed let length = RealLen; - + if (channel.available) { if (unit == "seconds") length = Math.floor(length * 1000); @@ -35,12 +37,20 @@ module.exports = { if (channel.isText) { channel.setRateLimitPerUser(length, reason); - interaction.reply(`Set **${RealLen} ${unit}** slowmode in ${channel} for "**${reason}**"`) + replyEmbed.setDescription(`Set **${RealLen} ${unit}** slowmode in ${channel} for "**${reason}**"`) + replyEmbed.setColor("#00FF00") + interaction.reply({embeds:[replyEmbed]}) + } + else if (!channel.isText) { + replyEmbed.setDescription(`The specified channel (<#${channel.id}>) isn't a text channel, I can't set a slowmode there.`) + replyEmbed.setColor("#FF0000") + interaction.reply({ embeds: [replyEmbed], ephemeral: true }) } - else if (!channel.isText) interaction.reply({ content: `The specified channel (<#${channel.id}>) isn't a text channel, I can't set a slowmode there.`, ephemeral: true }) } else if (!channel.available) { - interaction.reply({ content: "It seems Discord is having problems, please go to https://discordstatus.com/ to see \"when\" it will be fixed", ephemeral: true}) + replyEmbed.setColor("#FF0000") + replyEmbed.setDescription("It seems Discord is having problems, please go to https://discordstatus.com/ to see \"when\" it will be fixed") + interaction.reply({ embeds: [replyEmbed] , ephemeral: true}) } } } diff --git a/commands/timeout.js b/commands/timeout.js index 56c5338..bd1e083 100644 --- a/commands/timeout.js +++ b/commands/timeout.js @@ -1,5 +1,5 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); -const { Modal } = require('discord.js'); +const { Modal, MessageEmbed } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() @@ -27,7 +27,7 @@ module.exports = { let length = interaction.options.getInteger('duration') const unit = interaction.options.getString('unit') let reason = interaction.options.getString('reason') - + const replyEmbed = new MessageEmbed; if (!reason) reason = "No reason provided" if (unit == "seconds") { @@ -41,14 +41,22 @@ module.exports = { } if (length > 2.419e+9) { - await interaction.reply(`**I cannot timeout ${user.tag} for that long! You provided a time longer than 28 days!**`) + replyEmbed.setColor("#FF0000") + replyEmbed.setDescription(`**I cannot timeout ${user.tag} for that long! You provided a time longer than 28 days!**`) + await interaction.reply({embeds:[replyEmbed]}) } else { member.timeout(length, reason + " | Timeout by " + interaction.member.user.tag) - .then(async () => {await interaction.reply(`Timedout ${member} for **${RealLen} ${unit}** for **"${reason}".**`)}) + .then(async () => { + replyEmbed.setDescription(`Timed out ${member} for **${RealLen} ${unit}** for **"${reason}".**`) + replyEmbed.setColor("#00FF00") + await interaction.reply({embeds:[replyEmbed]}) + }) .catch(async error => { console.log(error) - await interaction.reply({content: `**I cannot timeout ${member.tag}! They have staff permissions!**`, ephemeral: true}) + replyEmbed.setDescription(`**I cannot timeout ${member.tag}! They have staff permissions!**`) + replyEmbed.setColor("#FF0000") + await interaction.reply({embeds: [replyEmbed], ephemeral: true}) }) } }, diff --git a/commands/unban.js b/commands/unban.js index bb387fb..6cf74be 100644 --- a/commands/unban.js +++ b/commands/unban.js @@ -19,8 +19,16 @@ module.exports = { await member.unban(); - if (reason === String) interaction.reply(`${user.tag} has been unbanned with the reason ${reason}`); + if (reason === String) { + replyEmbed.setColor("#00FF00") + replyEmbed.setDescription(`${user.tag} has been unbanned with the reason ${reason}`) + } + else if (reason !== String) { + replyEmbed.setDescription(`${user.tag} has been unbanned`); + replyEmbed.setColor("#00FF00") + } + + interaction.reply({embeds:[replyEmbed]}); - else if (reason !== String) interaction.reply(`${user.tag} has been unbanned`); }, }; \ No newline at end of file diff --git a/commands/unlock.js b/commands/unlock.js index 11d0aaf..2928614 100644 --- a/commands/unlock.js +++ b/commands/unlock.js @@ -1,5 +1,6 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); const { guildId } = require("../config.json") +const { MessageEmbed } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() @@ -24,7 +25,9 @@ module.exports = { CREATE_PUBLIC_THREADS: true, CREATE_PRIVATE_THREADS: true, }, {reason: reason, type: 0}) - - interaction.reply("Channel unlocked") + const replyEmbed = new MessageEmbed() + .setDescription("Channel unlocked") + .setColor("#00FF00") + interaction.reply({embeds: [replyEmbed]}) } } \ No newline at end of file diff --git a/commands/warn.js b/commands/warn.js index 8466cbb..9b4e38e 100644 --- a/commands/warn.js +++ b/commands/warn.js @@ -1,5 +1,6 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); const { guildId } = require("../config.json") +const { MessageEmbed } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() @@ -18,8 +19,12 @@ module.exports = { const user = interaction.options.getUser("user") const reason = interaction.options.getString("reason") const db = interaction.client.db.Warns - interaction.reply({ content: `Warned ${user.tag}: ${reason}`}) - user.send(`You have been warned for: ${reason}`) + const replyEmbed = new MessageEmbed.setColor("#00FF00") + const dmEmbed = new MessageEmbed.setColor("#FF0000") + replyEmbed.setDescription(`Warned ${user.tag}: ${reason}`) + dmEmbed.setDescription(`You have been warned for: ${reason}`) + interaction.reply({ embeds: [replyEmbed]}) + user.send({ embeds: [dmEmbed]}) db.create({ reason: reason, Executor: interaction.member.user.tag, From dcfc92ea6a961b907a636398959c45575de55427 Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Tue, 24 May 2022 09:40:50 -0300 Subject: [PATCH 010/236] oopsie --- commands/ban.js | 2 +- commands/kick.js | 2 +- commands/lock.js | 2 +- commands/slowmode.js | 2 +- commands/timeout.js | 2 +- commands/unban.js | 2 +- commands/warn.js | 4 ++-- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/commands/ban.js b/commands/ban.js index 03c7fff..9244d0d 100644 --- a/commands/ban.js +++ b/commands/ban.js @@ -19,7 +19,7 @@ module.exports = { let member = await interaction.client.users.fetch(interaction.options.getMember("user")) let reason = interaction.options.getString("reason") const db = interaction.client.db.Bans - const replyEmbed = new MessageEmbed + const replyEmbed = new MessageEmbed() if (!reason) reason = "No reason provided" if (interaction.options.getNumber("time") !== undefined) {let days = interaction.options.getNumber("time")} diff --git a/commands/kick.js b/commands/kick.js index 50fd1c8..2fc36f4 100644 --- a/commands/kick.js +++ b/commands/kick.js @@ -20,7 +20,7 @@ module.exports = { if (!reason) reason = "No reason provided" if (member.kickable) member.kick({ reason: reason }).then(console.log).catch(error => {console.error(error);interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true });return}); - const replyEmbed = new MessageEmbed.setColor("#00FF00") + const replyEmbed = new MessageEmbed().setColor("#00FF00") if (reason === String) replyEmbed.setDescription(`${user.tag} has been kicked with the reason ${reason}`) else if (reason !== String) replyEmbed.setDescription(`${user.tag} has been kicked`) interaction.reply({embeds:[replyEmbed]}) diff --git a/commands/lock.js b/commands/lock.js index b98cae0..045af75 100644 --- a/commands/lock.js +++ b/commands/lock.js @@ -16,7 +16,7 @@ module.exports = { async execute(interaction) { let channel = interaction.options.getChannel("channel"); let reason = interaction.options.getString("reason") - const replyEmbed = new MessageEmbed + const replyEmbed = new MessageEmbed() if (!reason) reason = "No reason provided" channel.permissionOverwrites.edit(guildId, { diff --git a/commands/slowmode.js b/commands/slowmode.js index 8927dd8..a49a768 100644 --- a/commands/slowmode.js +++ b/commands/slowmode.js @@ -26,7 +26,7 @@ module.exports = { const unit = interaction.options.getString('unit'); const RealLen = interaction.options.getInteger('duration'); const reason = interaction.options.getString('reason'); - const replyEmbed = new MessageEmbed + const replyEmbed = new MessageEmbed() let length = RealLen; if (channel.available) { diff --git a/commands/timeout.js b/commands/timeout.js index bd1e083..cfb6a8f 100644 --- a/commands/timeout.js +++ b/commands/timeout.js @@ -27,7 +27,7 @@ module.exports = { let length = interaction.options.getInteger('duration') const unit = interaction.options.getString('unit') let reason = interaction.options.getString('reason') - const replyEmbed = new MessageEmbed; + const replyEmbed = new MessageEmbed(); if (!reason) reason = "No reason provided" if (unit == "seconds") { diff --git a/commands/unban.js b/commands/unban.js index 6cf74be..24a99af 100644 --- a/commands/unban.js +++ b/commands/unban.js @@ -14,7 +14,7 @@ module.exports = { async execute(interaction) { let member = interaction.options.getMember("user"); let reason = interaction.options.getString("reason"); - + const replyEmbed = new MessageEmbed() if (!reason) reason = "No reason provided" await member.unban(); diff --git a/commands/warn.js b/commands/warn.js index 9b4e38e..5cd580d 100644 --- a/commands/warn.js +++ b/commands/warn.js @@ -19,8 +19,8 @@ module.exports = { const user = interaction.options.getUser("user") const reason = interaction.options.getString("reason") const db = interaction.client.db.Warns - const replyEmbed = new MessageEmbed.setColor("#00FF00") - const dmEmbed = new MessageEmbed.setColor("#FF0000") + const replyEmbed = new MessageEmbed().setColor("#00FF00") + const dmEmbed = new MessageEmbed().setColor("#FF0000") replyEmbed.setDescription(`Warned ${user.tag}: ${reason}`) dmEmbed.setDescription(`You have been warned for: ${reason}`) interaction.reply({ embeds: [replyEmbed]}) From 9c1567f51ad8af15125bcc5daec2cab99c10fc3f Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Tue, 24 May 2022 14:50:08 -0300 Subject: [PATCH 011/236] super basic list warns command --- commands/list.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/commands/list.js b/commands/list.js index 95ebc2c..72ede65 100644 --- a/commands/list.js +++ b/commands/list.js @@ -8,11 +8,19 @@ module.exports = { .addSubcommand(subcommand => subcommand .setName('warns') .setDescription('list warns') + .addUserOption(o => o + .setName("user") + .setDescription("The user to list warnings") + .setRequired(true)) ), async execute(interaction) { const subcommand = interaction.options.getSubcommand() if (subcommand == "warns") { - interaction.reply("cool it works") + const user = interaction.options.getMember("user").user + interaction.deferReply() + db = interaction.client.db.Warns + list = await db.findAll({where: { userID: user.id }}) + interaction.reply(list) } } } From 93ccca645560b6c100aaa83c30161e9a15a484d8 Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Tue, 24 May 2022 14:54:55 -0300 Subject: [PATCH 012/236] fix --- commands/list.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/list.js b/commands/list.js index 72ede65..7d640ec 100644 --- a/commands/list.js +++ b/commands/list.js @@ -20,7 +20,7 @@ module.exports = { interaction.deferReply() db = interaction.client.db.Warns list = await db.findAll({where: { userID: user.id }}) - interaction.reply(list) + interaction.edit(list) } } } From 2254c0041fb804f487ac04c7e52e4e2ba0525fe1 Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Tue, 24 May 2022 15:14:49 -0300 Subject: [PATCH 013/236] fixing the fix --- commands/list.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/commands/list.js b/commands/list.js index 7d640ec..8cc1736 100644 --- a/commands/list.js +++ b/commands/list.js @@ -17,10 +17,10 @@ module.exports = { const subcommand = interaction.options.getSubcommand() if (subcommand == "warns") { const user = interaction.options.getMember("user").user - interaction.deferReply() + //interaction.deferReply() db = interaction.client.db.Warns list = await db.findAll({where: { userID: user.id }}) - interaction.edit(list) + interaction.reply(list) } } } From 7bcd044d582fcf14cd091d2086ef8f166314aa12 Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Tue, 24 May 2022 15:20:59 -0300 Subject: [PATCH 014/236] fixing the fix's fix? --- commands/list.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/list.js b/commands/list.js index 8cc1736..3e71e94 100644 --- a/commands/list.js +++ b/commands/list.js @@ -16,7 +16,7 @@ module.exports = { async execute(interaction) { const subcommand = interaction.options.getSubcommand() if (subcommand == "warns") { - const user = interaction.options.getMember("user").user + const user = interaction.options.getMember("user") //interaction.deferReply() db = interaction.client.db.Warns list = await db.findAll({where: { userID: user.id }}) From 3d9b48e2e4410d5f9080a9f74d061edafc978f9b Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Tue, 24 May 2022 15:26:43 -0300 Subject: [PATCH 015/236] debug commit --- commands/list.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/list.js b/commands/list.js index 3e71e94..03d002e 100644 --- a/commands/list.js +++ b/commands/list.js @@ -19,7 +19,7 @@ module.exports = { const user = interaction.options.getMember("user") //interaction.deferReply() db = interaction.client.db.Warns - list = await db.findAll({where: { userID: user.id }}) + list = await db.findAll(/*{where: { userID: user.id }}*/) interaction.reply(list) } } From 96205845e3489bec91c4474106027737c62b383b Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 24 May 2022 22:06:41 +0200 Subject: [PATCH 016/236] Now a dev branch! with some change --- commands/lock.js | 43 ++++++++++++++++++++++++------------------- commands/unlock.js | 27 ++++++++++++++------------- 2 files changed, 38 insertions(+), 32 deletions(-) diff --git a/commands/lock.js b/commands/lock.js index 3920d11..366dbd1 100644 --- a/commands/lock.js +++ b/commands/lock.js @@ -3,28 +3,33 @@ const { guildId } = require("../config.json") module.exports = { data: new SlashCommandBuilder() - .setName('lock') - .setDescription("lock a channel") - .addChannelOption(o => o - .setName("channel") - .setDescription("The channel to lock") - .setRequired(true)) - .addStringOption(o => o - .setName("reason") - .setDescription("Why should this channel be locked?")), + .setName('lock') + .setDescription("lock a channel") + .addChannelOption(o => o + .setName("channel") + .setDescription("The channel to lock") + .setRequired(true)) + .addStringOption(o => o + .setName("reason") + .setDescription("Why should this channel be locked?")), async execute(interaction) { - let channel = interaction.options.getChannel("channel"); + let channel = interaction.options.getChannel("channel"); let reason = interaction.options.getString("reason") if (!reason) reason = "No reason provided" - - channel.permissionOverwrites.edit(guildId, { - SEND_MESSAGES: false, - SEND_MESSAGES_IN_THREADS: false, - CREATE_PUBLIC_THREADS: false, - CREATE_PRIVATE_THREADS: false, - }, {reason: reason, type: 0}) - interaction.reply("Channel locked") - } + if (channel.type === "GUILD_NEWS") { + interaction.reply("No"); + return + } else if (channel.type === "GUILD_TEXT") { + channel.permissionOverwrites.edit(guildId, { + SEND_MESSAGES: false, + SEND_MESSAGES_IN_THREADS: false, + CREATE_PUBLIC_THREADS: false, + CREATE_PRIVATE_THREADS: false, + }, { reason: reason, type: 0 }) + + interaction.reply("Channel locked") + } + } } \ No newline at end of file diff --git a/commands/unlock.js b/commands/unlock.js index f2abafd..333357b 100644 --- a/commands/unlock.js +++ b/commands/unlock.js @@ -3,17 +3,17 @@ const { guildId } = require("../config.json") module.exports = { data: new SlashCommandBuilder() - .setName('unlock') - .setDescription("unlock a channel") - .addChannelOption(o => o - .setName("channel") - .setDescription("the channel to lock") - .setRequired(true)) - .addStringOption(o => o - .setName("reason") - .setDescription("Why should this channel be unlocked?")), + .setName('unlock') + .setDescription("unlock a channel") + .addChannelOption(o => o + .setName("channel") + .setDescription("the channel to lock") + .setRequired(true)) + .addStringOption(o => o + .setName("reason") + .setDescription("Why should this channel be unlocked?")), async execute(interaction) { - let channel = interaction.options.getChannel("channel"); + let channel = interaction.options.getChannel("channel"); let reason = interaction.options.getString("reason") if (!reason) reason = "No reason provided" @@ -27,8 +27,9 @@ module.exports = { SEND_MESSAGES_IN_THREADS: true, CREATE_PUBLIC_THREADS: true, CREATE_PRIVATE_THREADS: true, - }, {reason: reason, type: 0}) + }, { reason: reason, type: 0 }) - interaction.reply("Channel unlocked")} - } + interaction.reply("Channel unlocked") + } + } } \ No newline at end of file From 7430b80c597102b762b4e02d90217f97c4cc10e7 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 25 May 2022 16:20:22 +0200 Subject: [PATCH 017/236] Make the ban.jsa little more... readable --- Util/database.js | 17 +- commands/ban.js | 40 +- package-lock.json | 1603 +++++++++++++++++++++++++++++++++++++++++++-- package.json | 2 +- 4 files changed, 1581 insertions(+), 81 deletions(-) diff --git a/Util/database.js b/Util/database.js index c102373..cdc8fa1 100644 --- a/Util/database.js +++ b/Util/database.js @@ -22,6 +22,21 @@ const Bans = sequelize.define('bans', { //ID: Sequelize.NUMBER }); +const Kick = sequelize.define('kick', { + userID:{ + type: Sequelize.NUMBER, + }, + reason: { + type: Sequelize.TEXT, + defaultValue: "No reason provided" + }, + Executor: Sequelize.STRING, + type: { + type: Sequelize.STRING, + }//, + //ID: Sequelize.NUMBER +}); + const Warns = sequelize.define('warns', { userID:{ type: Sequelize.NUMBER, @@ -34,4 +49,4 @@ const Warns = sequelize.define('warns', { // ID: Sequelize.NUMBER }); -module.exports = { Bans, Warns } \ No newline at end of file +module.exports = { Bans, Kick, Warns } \ No newline at end of file diff --git a/commands/ban.js b/commands/ban.js index 9244d0d..193e319 100644 --- a/commands/ban.js +++ b/commands/ban.js @@ -16,31 +16,35 @@ module.exports = { .setName("time") .setDescription("How long to ban this user?")), async execute(interaction) { + let user = interaction.options.getUser("user") let member = await interaction.client.users.fetch(interaction.options.getMember("user")) let reason = interaction.options.getString("reason") const db = interaction.client.db.Bans + let days = interaction.options.getNumber("time") const replyEmbed = new MessageEmbed() if (!reason) reason = "No reason provided" + if (!days) days = 0 - if (interaction.options.getNumber("time") !== undefined) {let days = interaction.options.getNumber("time")} - else {let days = null} - - if (member.bannable) await member.ban({ days: days, reason: reason }).then(console.log).catch(error => {console.error(error);interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true });return}); - - else if (!member.bannable) { - replyEmbed.setDescription("I can't ban this member") - replyEmbed.setColor("#FF0000") - return - } - if (reason === String) { - replyEmbed.setDescription(`${user.tag} has been banned with the reason ${reason}`) - replyEmbed.setColor("#00FF00") - } - else if (reason !== String) { - replyEmbed.setDescription(`${user.tag} has been banned`) - replyEmbed.setColor("#00FF00") + await member.ban({ days: days, reason: reason }) + .then(() => { + if (reason === "No reason provided") { + replyEmbed.setDescription(`${user.tag} has been banned`) + replyEmbed.setColor("#00FF00") + } else if (reason !== "No reaqon provided") { + replyEmbed.setDescription(`${user.tag} has been banned with the reason ${reason}`) + replyEmbed.setColor("#00FF00") + } + }) + .catch(error => { + console.error(error) + replyEmbed.setDescription('There was an error while executing this command!') + replyEmbed.setColor("#FF0000") + }) + if (replyEmbed.description === "There was an error while executing this command!") { + interaction.reply({ embeds: [replyEmbed], ephemeral: true }) + } else if (replyEmbed.description === `${user.tag} has been banned` || replyEmbed.description === `${user.tag} has been banned with the reason ${reason}`) { + interaction.reply({ embeds: [replyEmbed] }) } - interaction.reply({embeds:[replyEmbed]}) db.create({ reason: reason, Executor: interaction.member.user.tag, diff --git a/package-lock.json b/package-lock.json index 09761ec..6c66c6c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "discord-api-types": "0.33.0", "discord.js": "^13.7.0", "sequelize": "6.19.1", - "sqlite": "^4.1.1" + "sqlite3": "^5.0.8" }, "devDependencies": { "eslint": "^8.15.0" @@ -100,6 +100,12 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "optional": true + }, "node_modules/@humanwhocodes/config-array": { "version": "0.9.5", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", @@ -120,6 +126,48 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz", + "integrity": "sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==", + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "optional": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "optional": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@sapphire/async-queue": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.3.1.tgz", @@ -158,6 +206,15 @@ "url": "https://github.com/sindresorhus/is?sponsor=1" } }, + "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==", + "optional": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/@types/debug": { "version": "4.1.7", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", @@ -211,6 +268,11 @@ "@types/node": "*" } }, + "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/acorn": { "version": "8.7.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", @@ -232,6 +294,44 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.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/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "optional": true, + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "optional": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -252,7 +352,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -272,6 +371,23 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -286,19 +402,46 @@ "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==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "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==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, + "node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "optional": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -324,6 +467,23 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "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/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "optional": true, + "engines": { + "node": ">=6" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -342,6 +502,14 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" + } + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -356,8 +524,12 @@ "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=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "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/cross-spawn": { "version": "7.0.3", @@ -403,6 +575,28 @@ "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/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "engines": { + "node": ">=8" + } + }, "node_modules/discord-api-types": { "version": "0.33.0", "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.0.tgz", @@ -450,6 +644,35 @@ "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", "integrity": "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==" }, + "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==" + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "optional": true + }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -680,11 +903,21 @@ "node": ">= 6" } }, + "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=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "node_modules/functional-red-black-tree": { "version": "1.0.1", @@ -692,11 +925,29 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -739,6 +990,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "optional": true + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -748,6 +1005,64 @@ "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/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "optional": true + }, + "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==", + "optional": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "optional": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "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==", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -777,11 +1092,26 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.8.19" } }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "optional": true + }, "node_modules/inflection": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.2.tgz", @@ -794,7 +1124,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -803,8 +1132,13 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "optional": true }, "node_modules/is-extglob": { "version": "2.1.1", @@ -815,6 +1149,14 @@ "node": ">=0.10.0" } }, + "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==", + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -827,11 +1169,17 @@ "node": ">=0.10.0" } }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "optional": 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 + "devOptional": true }, "node_modules/js-yaml": { "version": "4.1.0", @@ -892,6 +1240,55 @@ "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/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "optional": true, + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -915,7 +1312,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -923,6 +1319,105 @@ "node": "*" } }, + "node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "optional": true, + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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/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/moment": { "version": "2.29.3", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz", @@ -953,6 +1448,20 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" + }, "node_modules/node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -972,11 +1481,114 @@ } } }, + "node_modules/node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "optional": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/node-gyp/node_modules/are-we-there-yet": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", + "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/node-gyp/node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "optional": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "optional": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "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": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "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/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "dependencies": { "wrappy": "1" } @@ -998,6 +1610,21 @@ "node": ">= 0.8.0" } }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "optional": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -1014,7 +1641,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -1042,6 +1668,25 @@ "node": ">= 0.8.0" } }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "optional": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "optional": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -1051,6 +1696,19 @@ "node": ">=6" } }, + "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/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -1072,6 +1730,15 @@ "node": ">=4" } }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "optional": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/retry-as-promised": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-5.0.0.tgz", @@ -1081,7 +1748,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -1092,6 +1758,31 @@ "url": "https://github.com/sponsors/isaacs" } }, + "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/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "optional": true + }, "node_modules/semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", @@ -1172,6 +1863,11 @@ "node": ">= 10.0.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/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -1184,25 +1880,117 @@ "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, + "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/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "optional": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "optional": true, + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz", + "integrity": "sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ==", + "optional": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sqlite3": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.8.tgz", + "integrity": "sha512-f2ACsbSyb2D1qFFcqIXPfFscLtPVOWJr5GmUzYxf4W+0qelu5MWrR+FAQE1d5IUArEltBrzSDxDORG8P/IkqyQ==", + "hasInstallScript": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.0", + "node-addon-api": "^4.2.0", + "tar": "^6.1.11" + }, + "optionalDependencies": { + "node-gyp": "8.x" + }, + "peerDependencies": { + "node-gyp": "8.x" + }, + "peerDependenciesMeta": { + "node-gyp": { + "optional": true + } + } + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "optional": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "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/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, "engines": { "node": ">=8" } }, - "node_modules/sqlite": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/sqlite/-/sqlite-4.1.1.tgz", - "integrity": "sha512-qssVl58Q4ytWabIK7e3lIjDuiXu0sq+M2foXFILrlJwpHisTgywQ5wDB5ImcOPMbuZHX3Q5gmlcDgX3m+VBfdw==" - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -1234,6 +2022,22 @@ "node": ">=8" } }, + "node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "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/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -1284,6 +2088,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "optional": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "optional": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -1293,6 +2115,11 @@ "punycode": "^2.1.0" } }, + "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/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -1333,7 +2160,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, + "devOptional": true, "dependencies": { "isexe": "^2.0.0" }, @@ -1344,6 +2171,14 @@ "node": ">= 8" } }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "node_modules/wkx": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", @@ -1364,8 +2199,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "node_modules/ws": { "version": "8.6.0", @@ -1463,6 +2297,12 @@ "strip-json-comments": "^3.1.1" } }, + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "optional": true + }, "@humanwhocodes/config-array": { "version": "0.9.5", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", @@ -1480,6 +2320,42 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "@mapbox/node-pre-gyp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz", + "integrity": "sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==", + "requires": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + } + }, + "@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "optional": true, + "requires": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "optional": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, "@sapphire/async-queue": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.3.1.tgz", @@ -1500,6 +2376,12 @@ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "optional": true + }, "@types/debug": { "version": "4.1.7", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", @@ -1552,6 +2434,11 @@ "@types/node": "*" } }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, "acorn": { "version": "8.7.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", @@ -1565,6 +2452,35 @@ "dev": true, "requires": {} }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "optional": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "optional": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -1580,8 +2496,7 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "4.3.0", @@ -1592,6 +2507,20 @@ "color-convert": "^2.0.1" } }, + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -1606,19 +2535,43 @@ "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, + "cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "optional": true, + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1635,6 +2588,17 @@ "supports-color": "^7.1.0" } }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "optional": true + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1650,6 +2614,11 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -1661,8 +2630,12 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, "cross-spawn": { "version": "7.0.3", @@ -1694,6 +2667,22 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "optional": true + }, + "detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==" + }, "discord-api-types": { "version": "0.33.0", "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.0.tgz", @@ -1736,6 +2725,32 @@ "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", "integrity": "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==" }, + "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==" + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + } + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "optional": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "optional": true + }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -1911,11 +2926,18 @@ "mime-types": "^2.1.12" } }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "functional-red-black-tree": { "version": "1.0.1", @@ -1923,11 +2945,26 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + } + }, "glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -1955,12 +2992,67 @@ "type-fest": "^0.20.2" } }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "optional": true + }, "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 }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "optional": true + }, + "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==", + "optional": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "optional": true, + "requires": { + "ms": "^2.0.0" + } + }, + "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==", + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, "ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -1981,7 +3073,19 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "devOptional": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "optional": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "optional": true }, "inflection": { "version": "1.13.2", @@ -1992,7 +3096,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -2001,8 +3104,13 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "optional": true }, "is-extglob": { "version": "2.1.1", @@ -2010,6 +3118,11 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -2019,11 +3132,17 @@ "is-extglob": "^2.1.1" } }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "optional": true + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "devOptional": true }, "js-yaml": { "version": "4.1.0", @@ -2075,6 +3194,45 @@ "yallist": "^4.0.0" } }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "optional": true, + "requires": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + } + }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -2092,11 +3250,80 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "optional": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "optional": true, + "requires": { + "encoding": "^0.1.12", + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "optional": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "optional": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "optional": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, "moment": { "version": "2.29.3", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz", @@ -2121,6 +3348,17 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "optional": true + }, + "node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" + }, "node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -2129,11 +3367,92 @@ "whatwg-url": "^5.0.0" } }, + "node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "optional": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "dependencies": { + "are-we-there-yet": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", + "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "optional": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + } + }, + "npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "optional": true, + "requires": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + } + } + } + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "requires": { + "abbrev": "1" + } + }, + "npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "requires": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1" } @@ -2152,6 +3471,15 @@ "word-wrap": "^1.2.3" } }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "optional": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -2164,8 +3492,7 @@ "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=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-key": { "version": "3.1.1", @@ -2184,12 +3511,38 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "optional": true + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "optional": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, "regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -2202,6 +3555,12 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "optional": true + }, "retry-as-promised": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-5.0.0.tgz", @@ -2211,11 +3570,21 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, "requires": { "glob": "^7.1.3" } }, + "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==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "optional": true + }, "semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", @@ -2252,6 +3621,11 @@ "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==" }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -2267,16 +3641,80 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "sqlite": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/sqlite/-/sqlite-4.1.1.tgz", - "integrity": "sha512-qssVl58Q4ytWabIK7e3lIjDuiXu0sq+M2foXFILrlJwpHisTgywQ5wDB5ImcOPMbuZHX3Q5gmlcDgX3m+VBfdw==" + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "optional": true + }, + "socks": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "optional": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz", + "integrity": "sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ==", + "optional": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + } + }, + "sqlite3": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.8.tgz", + "integrity": "sha512-f2ACsbSyb2D1qFFcqIXPfFscLtPVOWJr5GmUzYxf4W+0qelu5MWrR+FAQE1d5IUArEltBrzSDxDORG8P/IkqyQ==", + "requires": { + "@mapbox/node-pre-gyp": "^1.0.0", + "node-addon-api": "^4.2.0", + "node-gyp": "8.x", + "tar": "^6.1.11" + } + }, + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "optional": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "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" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -2296,6 +3734,19 @@ "has-flag": "^4.0.0" } }, + "tar": { + "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", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -2337,6 +3788,24 @@ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "optional": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "optional": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -2346,6 +3815,11 @@ "punycode": "^2.1.0" } }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -2380,11 +3854,19 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, + "devOptional": true, "requires": { "isexe": "^2.0.0" } }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "wkx": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", @@ -2402,8 +3884,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "ws": { "version": "8.6.0", diff --git a/package.json b/package.json index bde0b0d..d8585a1 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "discord-api-types": "0.33.0", "discord.js": "^13.7.0", "sequelize": "6.19.1", - "sqlite": "^4.1.1" + "sqlite3": "^5.0.8" }, "devDependencies": { "eslint": "^8.15.0" From 7b13b198f1ce6df646ac6c190c659843e72a43ea Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 25 May 2022 17:30:36 +0200 Subject: [PATCH 018/236] Same as ban.js => more readable --- commands/kick.js | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/commands/kick.js b/commands/kick.js index 2fc36f4..b6b3b74 100644 --- a/commands/kick.js +++ b/commands/kick.js @@ -1,5 +1,4 @@ const { SlashCommandBuilder } = require('@discordjs/builders') -const { guildId } = require('../config.json') const { MessageEmbed } = require('discord.js'); module.exports = { @@ -16,13 +15,24 @@ module.exports = { async execute(interaction) { let member = interaction.options.getMember("user") let reason = interaction.options.getString("reason") - + const replyEmbed = new MessageEmbed().setColor("#00FF00") if (!reason) reason = "No reason provided" - if (member.kickable) member.kick({ reason: reason }).then(console.log).catch(error => {console.error(error);interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true });return}); - const replyEmbed = new MessageEmbed().setColor("#00FF00") - if (reason === String) replyEmbed.setDescription(`${user.tag} has been kicked with the reason ${reason}`) - else if (reason !== String) replyEmbed.setDescription(`${user.tag} has been kicked`) - interaction.reply({embeds:[replyEmbed]}) + if (member.kickable) { + member.kick({ reason: reason }) + .then(() => { + if (reason !== "No reason provided") { + replyEmbed.setDescription(`${user.tag} has been kicked with the reason ${reason}`) + } else if (reason === "No reason provided") { + replyEmbed.setDescription(`${user.tag} has been kicked`) + } + }) + interaction.reply({ embeds: [replyEmbed] }) + .catch(error => { + console.error(error); + replyEmbed.setDescription('There was an error while executing this command!'); + interaction.reply({ embeds: [replyEmbed], ephemeral: true }); + }); + } } } \ No newline at end of file From 8f461b1bfbefd96f88c7ad457ccd6c1bbfabd9b6 Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Fri, 27 May 2022 13:59:41 -0300 Subject: [PATCH 019/236] starting to merge the databases --- Util/database.js | 37 ++++--------------------------------- commands/list.js | 8 ++++---- commands/warn.js | 3 ++- main.js | 3 +-- 4 files changed, 11 insertions(+), 40 deletions(-) diff --git a/Util/database.js b/Util/database.js index cdc8fa1..5367f67 100644 --- a/Util/database.js +++ b/Util/database.js @@ -7,7 +7,7 @@ const sequelize = new Sequelize('database', 'user', 'password', { storage: 'database.sqlite' }) -const Bans = sequelize.define('bans', { +const Cases = sequelize.define('cases', { userID:{ type: Sequelize.NUMBER, }, @@ -15,38 +15,9 @@ const Bans = sequelize.define('bans', { type: Sequelize.TEXT, defaultValue: "No reason provided" }, - Executor: Sequelize.STRING, + Executor: Sequelize.NUMBER, type: { type: Sequelize.STRING, - }//, - //ID: Sequelize.NUMBER + } }); - -const Kick = sequelize.define('kick', { - userID:{ - type: Sequelize.NUMBER, - }, - reason: { - type: Sequelize.TEXT, - defaultValue: "No reason provided" - }, - Executor: Sequelize.STRING, - type: { - type: Sequelize.STRING, - }//, - //ID: Sequelize.NUMBER -}); - -const Warns = sequelize.define('warns', { - userID:{ - type: Sequelize.NUMBER, - }, - reason: { - type: Sequelize.TEXT, - defaultValue: "No reason provided" - }, - Executor: Sequelize.STRING//, - // ID: Sequelize.NUMBER -}); - -module.exports = { Bans, Kick, Warns } \ No newline at end of file +module.exports = { Cases } \ No newline at end of file diff --git a/commands/list.js b/commands/list.js index 03d002e..15248ef 100644 --- a/commands/list.js +++ b/commands/list.js @@ -17,10 +17,10 @@ module.exports = { const subcommand = interaction.options.getSubcommand() if (subcommand == "warns") { const user = interaction.options.getMember("user") - //interaction.deferReply() - db = interaction.client.db.Warns - list = await db.findAll(/*{where: { userID: user.id }}*/) - interaction.reply(list) + interaction.deferReply() + db = interaction.client.db.Cases + list = await db.findAll({where: {userID: user.id, type: "warn"}}) + interaction.followUp(list) } } } diff --git a/commands/warn.js b/commands/warn.js index 5cd580d..13b7afe 100644 --- a/commands/warn.js +++ b/commands/warn.js @@ -18,7 +18,7 @@ module.exports = { async execute(interaction) { const user = interaction.options.getUser("user") const reason = interaction.options.getString("reason") - const db = interaction.client.db.Warns + const db = interaction.client.db.Cases const replyEmbed = new MessageEmbed().setColor("#00FF00") const dmEmbed = new MessageEmbed().setColor("#FF0000") replyEmbed.setDescription(`Warned ${user.tag}: ${reason}`) @@ -26,6 +26,7 @@ module.exports = { interaction.reply({ embeds: [replyEmbed]}) user.send({ embeds: [dmEmbed]}) db.create({ + type: "warn", reason: reason, Executor: interaction.member.user.tag, userID: user.id diff --git a/main.js b/main.js index dd79402..e43ceab 100644 --- a/main.js +++ b/main.js @@ -26,8 +26,7 @@ for (const file of commandFiles) { client.once('ready', () => { - client.db.Bans.sync() - client.db.Warns.sync() + client.db.Cases.sync() console.log(`Login as ${client.user.tag}`); }) From a4ec7b8e0d4e61132671ddb6012492d1c3db2a70 Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Fri, 27 May 2022 14:31:29 -0300 Subject: [PATCH 020/236] i forgor await :skull: --- commands/list.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/list.js b/commands/list.js index 15248ef..5132e13 100644 --- a/commands/list.js +++ b/commands/list.js @@ -17,7 +17,7 @@ module.exports = { const subcommand = interaction.options.getSubcommand() if (subcommand == "warns") { const user = interaction.options.getMember("user") - interaction.deferReply() + await interaction.deferReply() db = interaction.client.db.Cases list = await db.findAll({where: {userID: user.id, type: "warn"}}) interaction.followUp(list) From b5c82e97029a0405e61c3c34b9efd33777b4b6ea Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Fri, 27 May 2022 23:48:14 +0200 Subject: [PATCH 021/236] Try something... --- commands/list.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/commands/list.js b/commands/list.js index 5132e13..327ace7 100644 --- a/commands/list.js +++ b/commands/list.js @@ -1,5 +1,4 @@ const { SlashCommandBuilder } = require('@discordjs/builders') -const { guildId } = require('../config.json') module.exports = { data: new SlashCommandBuilder() @@ -18,9 +17,13 @@ module.exports = { if (subcommand == "warns") { const user = interaction.options.getMember("user") await interaction.deferReply() - db = interaction.client.db.Cases + db = interaction.client.db list = await db.findAll({where: {userID: user.id, type: "warn"}}) - interaction.followUp(list) + if (list !== "") { + interaction.followUp({content: list, ephemeral: true}) + } else { + interaction.followUp({content: "There is no warn", ephemeral: true}) + } } } } From bf3e296af4e7a7c351413aba0e8780e5125045ef Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Fri, 27 May 2022 23:52:49 +0200 Subject: [PATCH 022/236] doesn't work --- commands/list.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/list.js b/commands/list.js index 327ace7..ccb239d 100644 --- a/commands/list.js +++ b/commands/list.js @@ -17,7 +17,7 @@ module.exports = { if (subcommand == "warns") { const user = interaction.options.getMember("user") await interaction.deferReply() - db = interaction.client.db + db = interaction.client.db.Cases list = await db.findAll({where: {userID: user.id, type: "warn"}}) if (list !== "") { interaction.followUp({content: list, ephemeral: true}) From f1bead0b59fd32974768bff4803f8c600e5b70cc Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Sat, 28 May 2022 06:15:27 -0300 Subject: [PATCH 023/236] fix ban command --- commands/ban.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/ban.js b/commands/ban.js index 193e319..007ca9a 100644 --- a/commands/ban.js +++ b/commands/ban.js @@ -16,7 +16,7 @@ module.exports = { .setName("time") .setDescription("How long to ban this user?")), async execute(interaction) { - let user = interaction.options.getUser("user") + let user = interaction.options.getMember("user") let member = await interaction.client.users.fetch(interaction.options.getMember("user")) let reason = interaction.options.getString("reason") const db = interaction.client.db.Bans From b3a3daad057a198f11317a5390ad5b4cb77d6564 Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Sat, 28 May 2022 06:51:01 -0300 Subject: [PATCH 024/236] rewrite ban command --- commands/ban.js | 62 +++++++++++++++++++++---------------------------- 1 file changed, 26 insertions(+), 36 deletions(-) diff --git a/commands/ban.js b/commands/ban.js index 007ca9a..9d9f229 100644 --- a/commands/ban.js +++ b/commands/ban.js @@ -4,51 +4,41 @@ const { MessageEmbed } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() .setName('ban') - .setDescription("ban a user") + .setDescription("ban a member") .addUserOption(o => o - .setDescription("The user to ban") - .setName('user') + .setDescription("The member to ban") + .setName('member') .setRequired(true)) .addStringOption(o => o .setName("reason") - .setDescription("Why should this user be banned?")) + .setDescription("Why should this member be banned?") + .setRequired(true)) .addNumberOption(o => o .setName("time") - .setDescription("How long to ban this user?")), + .setDescription("How long to ban this member?")), async execute(interaction) { - let user = interaction.options.getMember("user") - let member = await interaction.client.users.fetch(interaction.options.getMember("user")) - let reason = interaction.options.getString("reason") - const db = interaction.client.db.Bans - let days = interaction.options.getNumber("time") - const replyEmbed = new MessageEmbed() - if (!reason) reason = "No reason provided" - if (!days) days = 0 - - await member.ban({ days: days, reason: reason }) - .then(() => { - if (reason === "No reason provided") { - replyEmbed.setDescription(`${user.tag} has been banned`) - replyEmbed.setColor("#00FF00") - } else if (reason !== "No reaqon provided") { - replyEmbed.setDescription(`${user.tag} has been banned with the reason ${reason}`) - replyEmbed.setColor("#00FF00") - } - }) - .catch(error => { - console.error(error) - replyEmbed.setDescription('There was an error while executing this command!') - replyEmbed.setColor("#FF0000") - }) - if (replyEmbed.description === "There was an error while executing this command!") { - interaction.reply({ embeds: [replyEmbed], ephemeral: true }) - } else if (replyEmbed.description === `${user.tag} has been banned` || replyEmbed.description === `${user.tag} has been banned with the reason ${reason}`) { - interaction.reply({ embeds: [replyEmbed] }) + const member = interaction.options.getMember("member") + const guild = interaction.guild + const db = interaction.client.db.Cases + const reason = interaction.options.getString("reason") || "No reason provided" + const days = interaction.options.getNumber("time") || 0 + if (!member.instanceof(GuildMember)) { + await guild.members.fetch(member) } + const dmEmbed = new MessageEmbed() + .setColor("#FF0000") + .setDescription(`You have been banned for: ${reason}`) + await member.user.send({ embeds: [dmEmbed] }) + await member.ban({ days: days, reason: reason }) + const replyEmbed = new MessageEmbed() + .setColor("#00FF00") + .setDescription(`**${member.user.tag} has been banned for:** ${reason}`) + await interaction.reply({ embeds: [replyEmbed] }) db.create({ + Executor: interaction.member.user.id, + userID: member.user.id, reason: reason, - Executor: interaction.member.user.tag, - userID: user.id + type: "ban" }) - }, + } }; \ No newline at end of file From 784367a515f8f6a13de2cf96af768cafb76138bf Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Sat, 28 May 2022 06:58:35 -0300 Subject: [PATCH 025/236] fix ban command 2 --- commands/ban.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/ban.js b/commands/ban.js index 9d9f229..f7a379f 100644 --- a/commands/ban.js +++ b/commands/ban.js @@ -1,5 +1,5 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); -const { MessageEmbed } = require('discord.js'); +const { MessageEmbed, GuildMember } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() From 9d56ed08a211689ab45525eb484fb693e5127f47 Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Sat, 28 May 2022 07:05:19 -0300 Subject: [PATCH 026/236] fix ban command 3 --- commands/ban.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/ban.js b/commands/ban.js index f7a379f..385bec2 100644 --- a/commands/ban.js +++ b/commands/ban.js @@ -22,7 +22,7 @@ module.exports = { const db = interaction.client.db.Cases const reason = interaction.options.getString("reason") || "No reason provided" const days = interaction.options.getNumber("time") || 0 - if (!member.instanceof(GuildMember)) { + if (!(member instanceof GuildMember)) { await guild.members.fetch(member) } const dmEmbed = new MessageEmbed() From 23f39aa89ec219a2860010619b915b854dac87f4 Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Sat, 28 May 2022 12:13:09 -0300 Subject: [PATCH 027/236] debug log --- commands/list.js | 1 + 1 file changed, 1 insertion(+) diff --git a/commands/list.js b/commands/list.js index ccb239d..7682b96 100644 --- a/commands/list.js +++ b/commands/list.js @@ -19,6 +19,7 @@ module.exports = { await interaction.deferReply() db = interaction.client.db.Cases list = await db.findAll({where: {userID: user.id, type: "warn"}}) + console.log(list) if (list !== "") { interaction.followUp({content: list, ephemeral: true}) } else { From cfec0d50e4a9982885c316b264bb7aa23b90ca2b Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Sat, 28 May 2022 12:45:14 -0300 Subject: [PATCH 028/236] maybe this will work --- commands/list.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/commands/list.js b/commands/list.js index 7682b96..5ef18be 100644 --- a/commands/list.js +++ b/commands/list.js @@ -18,9 +18,9 @@ module.exports = { const user = interaction.options.getMember("user") await interaction.deferReply() db = interaction.client.db.Cases - list = await db.findAll({where: {userID: user.id, type: "warn"}}) + list = await db.findAll({where: {userID: user.id, type: "warn"}, attributes: ['id', 'type', 'userID', 'reason', 'Executor']}) console.log(list) - if (list !== "") { + if (list !== []) { interaction.followUp({content: list, ephemeral: true}) } else { interaction.followUp({content: "There is no warn", ephemeral: true}) From eac597da774103ece8de3c696c192c68f09cf64d Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Sat, 28 May 2022 12:58:15 -0300 Subject: [PATCH 029/236] testing list warn (proof of concept) --- commands/list.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/commands/list.js b/commands/list.js index 5ef18be..2a340b5 100644 --- a/commands/list.js +++ b/commands/list.js @@ -18,7 +18,14 @@ module.exports = { const user = interaction.options.getMember("user") await interaction.deferReply() db = interaction.client.db.Cases - list = await db.findAll({where: {userID: user.id, type: "warn"}, attributes: ['id', 'type', 'userID', 'reason', 'Executor']}) + list = await db.findAll({ + where: { + userID: user.id, + type: "warn" + }, + attributes: ['id', 'type', 'userID', 'reason', 'Executor'] + }) + list = list[0].dataValues.toString() console.log(list) if (list !== []) { interaction.followUp({content: list, ephemeral: true}) From 405c9a8d4b810c21a5674ef4b7cc92b10299588e Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 28 May 2022 16:04:51 +0200 Subject: [PATCH 030/236] Joke ban, kick, and warn added (not tested yet) --- commands/ban.js | 35 ++++++++++++++++++++++---------- commands/kick.js | 42 +++++++++++++++++++++----------------- commands/warn.js | 52 ++++++++++++++++++++++++++++-------------------- 3 files changed, 78 insertions(+), 51 deletions(-) diff --git a/commands/ban.js b/commands/ban.js index 385bec2..b27dce4 100644 --- a/commands/ban.js +++ b/commands/ban.js @@ -13,32 +13,45 @@ module.exports = { .setName("reason") .setDescription("Why should this member be banned?") .setRequired(true)) + .addBooleanOption(o => o + .setName("joke") + .setDescription("Is this command a joke command?")) + .setRequired(true) .addNumberOption(o => o .setName("time") .setDescription("How long to ban this member?")), async execute(interaction) { - const member = interaction.options.getMember("member") + const member = interaction.options.getMember("member", true) const guild = interaction.guild const db = interaction.client.db.Cases - const reason = interaction.options.getString("reason") || "No reason provided" + const reason = interaction.options.getString("reason", true) const days = interaction.options.getNumber("time") || 0 + const joke = interaction.options.getBoolean("joke", true) + if (!(member instanceof GuildMember)) { await guild.members.fetch(member) } + const dmEmbed = new MessageEmbed() .setColor("#FF0000") .setDescription(`You have been banned for: ${reason}`) - await member.user.send({ embeds: [dmEmbed] }) - await member.ban({ days: days, reason: reason }) const replyEmbed = new MessageEmbed() .setColor("#00FF00") - .setDescription(`**${member.user.tag} has been banned for:** ${reason}`) + .setDescription(`**${member.user.tag} has been banned for:** ${reason}`); + + await member.user.send({ embeds: [dmEmbed] }) + if (!joke) { + await member.ban({ days: days, reason: reason }) + } + await interaction.reply({ embeds: [replyEmbed] }) - db.create({ - Executor: interaction.member.user.id, - userID: member.user.id, - reason: reason, - type: "ban" - }) + if (!joke) { + db.create({ + Executor: interaction.member.user.id, + userID: member.user.id, + reason: reason, + type: "ban" + }) + } } }; \ No newline at end of file diff --git a/commands/kick.js b/commands/kick.js index b6b3b74..ceeeb8a 100644 --- a/commands/kick.js +++ b/commands/kick.js @@ -9,30 +9,36 @@ module.exports = { .setDescription("The user to kick") .setName('user') .setRequired(true)) + .addBooleanOption(o => o + .setName("joke") + .setDescription("Is this command a joke command?") + .setRequired(true)) .addStringOption(o => o .setName("reason") - .setDescription("Why should this user be kicked?")), + .setDescription("Why should this user be kicked?") + .setRequired(true)), async execute(interaction) { let member = interaction.options.getMember("user") - let reason = interaction.options.getString("reason") + const reason = interaction.options.getString("reason") const replyEmbed = new MessageEmbed().setColor("#00FF00") - if (!reason) reason = "No reason provided" - if (member.kickable) { - member.kick({ reason: reason }) - .then(() => { - if (reason !== "No reason provided") { - replyEmbed.setDescription(`${user.tag} has been kicked with the reason ${reason}`) - } else if (reason === "No reason provided") { - replyEmbed.setDescription(`${user.tag} has been kicked`) - } - }) - interaction.reply({ embeds: [replyEmbed] }) - .catch(error => { - console.error(error); - replyEmbed.setDescription('There was an error while executing this command!'); - interaction.reply({ embeds: [replyEmbed], ephemeral: true }); - }); + if (!joke) { + if (member.kickable) { + member.kick({ reason: reason }) + .then(() => { + if (reason !== "No reason provided") { + replyEmbed.setDescription(`${user.tag} has been kicked with the reason ${reason}`) + } else if (reason === "No reason provided") { + replyEmbed.setDescription(`${user.tag} has been kicked`) + } + }).catch(error => { + console.error(error); + replyEmbed.setDescription('There was an error while executing this command!'); + interaction.reply({ embeds: [replyEmbed], ephemeral: true }); + }); + } } + interaction.reply({ embeds: [replyEmbed] }) + } } \ No newline at end of file diff --git a/commands/warn.js b/commands/warn.js index 13b7afe..a0f020a 100644 --- a/commands/warn.js +++ b/commands/warn.js @@ -4,33 +4,41 @@ const { MessageEmbed } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() - .setName('warn') - .setDescription("warn a user") - .addUserOption(o => o - .setName("user") - .setDescription("the user to warn") - .setRequired(true)) - .addStringOption(o => o - .setName("reason") - .setDescription("Why should this user be warned?") - .setRequired(true)) -, + .setName('warn') + .setDescription("warn a user") + .addUserOption(o => o + .setName("user") + .setDescription("the user to warn") + .setRequired(true)) + .addStringOption(o => o + .setName("reason") + .setDescription("Why should this user be warned?") + .setRequired(true)) + .addBooleanOption(o => o + .setName("joke") + .setDescription("Is this command a joke?")) + , async execute(interaction) { - const user = interaction.options.getUser("user") - const reason = interaction.options.getString("reason") + const user = interaction.options.getUser("user") + const reason = interaction.options.getString("reason") + const joke = interaction.options.getBoolean("joke") const db = interaction.client.db.Cases const replyEmbed = new MessageEmbed().setColor("#00FF00") const dmEmbed = new MessageEmbed().setColor("#FF0000") + replyEmbed.setDescription(`Warned ${user.tag}: ${reason}`) dmEmbed.setDescription(`You have been warned for: ${reason}`) - interaction.reply({ embeds: [replyEmbed]}) - user.send({ embeds: [dmEmbed]}) - db.create({ - type: "warn", - reason: reason, - Executor: interaction.member.user.tag, - userID: user.id - }) - //if (!reason) reason = "No reason provided" + + interaction.reply({ embeds: [replyEmbed] }) + user.send({ embeds: [dmEmbed] }) + + if (!joke) { + db.create({ + type: "warn", + reason: reason, + Executor: interaction.member.user.tag, + userID: user.id + }) + } } } From 392dabd17104a45e7ba737e7671bad81fe2ee0bd Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 29 May 2022 14:27:21 +0200 Subject: [PATCH 031/236] fix --- commands/ban.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/commands/ban.js b/commands/ban.js index b27dce4..a0904c1 100644 --- a/commands/ban.js +++ b/commands/ban.js @@ -15,8 +15,8 @@ module.exports = { .setRequired(true)) .addBooleanOption(o => o .setName("joke") - .setDescription("Is this command a joke command?")) - .setRequired(true) + .setDescription("Is this command a joke command?") + .setRequired(true)) .addNumberOption(o => o .setName("time") .setDescription("How long to ban this member?")), From 462257143a6af4b222f3f229179574d7e956582a Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 29 May 2022 14:36:09 +0200 Subject: [PATCH 032/236] Added all subcommand to the list command --- commands/list.js | 87 ++++++++++++++++++++++++++++-------------------- 1 file changed, 50 insertions(+), 37 deletions(-) diff --git a/commands/list.js b/commands/list.js index 2a340b5..fed186e 100644 --- a/commands/list.js +++ b/commands/list.js @@ -1,37 +1,50 @@ -const { SlashCommandBuilder } = require('@discordjs/builders') - -module.exports = { - data: new SlashCommandBuilder() - .setName('list') - .setDescription("List bans and kicks and warns and stuff") - .addSubcommand(subcommand => subcommand - .setName('warns') - .setDescription('list warns') - .addUserOption(o => o - .setName("user") - .setDescription("The user to list warnings") - .setRequired(true)) - ), - async execute(interaction) { - const subcommand = interaction.options.getSubcommand() - if (subcommand == "warns") { - const user = interaction.options.getMember("user") - await interaction.deferReply() - db = interaction.client.db.Cases - list = await db.findAll({ - where: { - userID: user.id, - type: "warn" - }, - attributes: ['id', 'type', 'userID', 'reason', 'Executor'] - }) - list = list[0].dataValues.toString() - console.log(list) - if (list !== []) { - interaction.followUp({content: list, ephemeral: true}) - } else { - interaction.followUp({content: "There is no warn", ephemeral: true}) - } - } - } -} +const { SlashCommandBuilder } = require('@discordjs/builders') + +module.exports = { + data: new SlashCommandBuilder() + .setName('list') + .setDescription("List bans and kicks and warns and stuff") + .addSubcommand(subcommand => subcommand + .setName('warns') + .setDescription('List warns') + .addUserOption(o => o + .setName("user") + .setDescription("The user to list warnings") + .setRequired(true))) + .addSubcommand(sc => sc + .setName("bans") + .setDescription('List bans') + .addStringOption(o => o + .setName("user") + .setDescription("The user to list bans (Id)") + .setRequired(true))) + .addSubcommand(sc => sc + .setName("kicks") + .setDescription("List kicks") + .addStringOption(o => o + .setName("user") + .setDescription("The user to list kicks (Id)") + .setRequired(true))), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + if (subcommand == "warns") { + const user = interaction.options.getMember("user") + await interaction.deferReply() + db = interaction.client.db.Cases + list = await db.findAll({ + where: { + userID: user.id, + type: "warn" + }, + attributes: ['id', 'type', 'userID', 'reason', 'Executor'] + }) + list = list[0].dataValues.toString() + console.log(list) + if (list !== []) { + interaction.followUp({content: list, ephemeral: true}) + } else { + interaction.followUp({content: "There is no warn", ephemeral: true}) + } + } + } +} From 0f27da2eb9d0c085085be50f92000a6fed84e701 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 29 May 2022 21:15:15 +0200 Subject: [PATCH 033/236] Save guard to not kick, ban, or warn the bot with itself --- commands/ban.js | 3 +++ commands/kick.js | 2 ++ commands/list.js | 66 ++++++++++++++++++++++++------------------------ commands/warn.js | 2 ++ 4 files changed, 40 insertions(+), 33 deletions(-) diff --git a/commands/ban.js b/commands/ban.js index a0904c1..ab7e226 100644 --- a/commands/ban.js +++ b/commands/ban.js @@ -1,5 +1,6 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); const { MessageEmbed, GuildMember } = require('discord.js'); +const { clientId } = require('../config.json') module.exports = { data: new SlashCommandBuilder() @@ -32,6 +33,8 @@ module.exports = { await guild.members.fetch(member) } + if (member.id = clientId) return interaction.reply("❌ Why would you ban me? 😢") + const dmEmbed = new MessageEmbed() .setColor("#FF0000") .setDescription(`You have been banned for: ${reason}`) diff --git a/commands/kick.js b/commands/kick.js index ceeeb8a..25957d1 100644 --- a/commands/kick.js +++ b/commands/kick.js @@ -22,6 +22,8 @@ module.exports = { const reason = interaction.options.getString("reason") const replyEmbed = new MessageEmbed().setColor("#00FF00") + if (member.id = clientId) return interaction.reply("❌ Why would you kick me? 😢") + if (!joke) { if (member.kickable) { member.kick({ reason: reason }) diff --git a/commands/list.js b/commands/list.js index fed186e..1e3e676 100644 --- a/commands/list.js +++ b/commands/list.js @@ -1,50 +1,50 @@ const { SlashCommandBuilder } = require('@discordjs/builders') module.exports = { - data: new SlashCommandBuilder() - .setName('list') - .setDescription("List bans and kicks and warns and stuff") - .addSubcommand(subcommand => subcommand - .setName('warns') - .setDescription('List warns') - .addUserOption(o => o - .setName("user") - .setDescription("The user to list warnings") - .setRequired(true))) - .addSubcommand(sc => sc - .setName("bans") - .setDescription('List bans') - .addStringOption(o => o - .setName("user") - .setDescription("The user to list bans (Id)") - .setRequired(true))) - .addSubcommand(sc => sc - .setName("kicks") - .setDescription("List kicks") - .addStringOption(o => o - .setName("user") - .setDescription("The user to list kicks (Id)") - .setRequired(true))), - async execute(interaction) { - const subcommand = interaction.options.getSubcommand() - if (subcommand == "warns") { + data: new SlashCommandBuilder() + .setName('list') + .setDescription("List bans and kicks and warns and stuff") + .addSubcommand(subcommand => subcommand + .setName('warns') + .setDescription('List warns') + .addUserOption(o => o + .setName("user") + .setDescription("The user to list warnings") + .setRequired(true))) + .addSubcommand(sc => sc + .setName("bans") + .setDescription('List bans') + .addStringOption(o => o + .setName("user") + .setDescription("The user to list bans (Id)") + .setRequired(true))) + .addSubcommand(sc => sc + .setName("kicks") + .setDescription("List kicks") + .addStringOption(o => o + .setName("user") + .setDescription("The user to list kicks (Id)") + .setRequired(true))), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + if (subcommand == "warns") { const user = interaction.options.getMember("user") - await interaction.deferReply() + await interaction.deferReply() db = interaction.client.db.Cases list = await db.findAll({ where: { userID: user.id, type: "warn" - }, + }, attributes: ['id', 'type', 'userID', 'reason', 'Executor'] }) list = list[0].dataValues.toString() console.log(list) if (list !== []) { - interaction.followUp({content: list, ephemeral: true}) + interaction.followUp({ content: list, ephemeral: true }) } else { - interaction.followUp({content: "There is no warn", ephemeral: true}) + interaction.followUp({ content: "There is no warn", ephemeral: true }) } - } - } + } + } } diff --git a/commands/warn.js b/commands/warn.js index a0f020a..1be8e55 100644 --- a/commands/warn.js +++ b/commands/warn.js @@ -26,6 +26,8 @@ module.exports = { const replyEmbed = new MessageEmbed().setColor("#00FF00") const dmEmbed = new MessageEmbed().setColor("#FF0000") + if (member.id = clientId) return interaction.reply("I just deleted my own warn <:troll:869197146786766849>") + replyEmbed.setDescription(`Warned ${user.tag}: ${reason}`) dmEmbed.setDescription(`You have been warned for: ${reason}`) From 9c95b678c46708eac26aeea7d3a832d199940ccf Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 29 May 2022 21:18:27 +0200 Subject: [PATCH 034/236] Forgot the require of clientId... --- commands/kick.js | 1 + commands/warn.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/commands/kick.js b/commands/kick.js index 25957d1..3267c77 100644 --- a/commands/kick.js +++ b/commands/kick.js @@ -1,5 +1,6 @@ const { SlashCommandBuilder } = require('@discordjs/builders') const { MessageEmbed } = require('discord.js'); +const { clientId } = require('../config.json') module.exports = { data: new SlashCommandBuilder() diff --git a/commands/warn.js b/commands/warn.js index 1be8e55..1818e9f 100644 --- a/commands/warn.js +++ b/commands/warn.js @@ -1,5 +1,5 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); -const { guildId } = require("../config.json") +const { clientId } = require("../config.json") const { MessageEmbed } = require('discord.js'); module.exports = { From d351a06c68c1fa7a2ea73c5f884cbcd231b4657a Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 29 May 2022 21:20:40 +0200 Subject: [PATCH 035/236] I always forgot something as i see.... --- commands/warn.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/warn.js b/commands/warn.js index 1818e9f..cc19ae4 100644 --- a/commands/warn.js +++ b/commands/warn.js @@ -26,7 +26,7 @@ module.exports = { const replyEmbed = new MessageEmbed().setColor("#00FF00") const dmEmbed = new MessageEmbed().setColor("#FF0000") - if (member.id = clientId) return interaction.reply("I just deleted my own warn <:troll:869197146786766849>") + if (user.id = clientId) return interaction.reply("I just deleted my own warn <:troll:869197146786766849>") replyEmbed.setDescription(`Warned ${user.tag}: ${reason}`) dmEmbed.setDescription(`You have been warned for: ${reason}`) From bc53f2cf14248e1d0d7df9855d0b098c0fc9e0ab Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 29 May 2022 21:28:13 +0200 Subject: [PATCH 036/236] Forgot the timeout command --- commands/timeout.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/commands/timeout.js b/commands/timeout.js index cfb6a8f..4293794 100644 --- a/commands/timeout.js +++ b/commands/timeout.js @@ -26,9 +26,12 @@ module.exports = { const RealLen = interaction.options.getInteger('duration') let length = interaction.options.getInteger('duration') const unit = interaction.options.getString('unit') - let reason = interaction.options.getString('reason') + let reason = interaction.options.getString('reason') || "No reason provided" const replyEmbed = new MessageEmbed(); - if (!reason) reason = "No reason provided" + + if (member.id = clientId) { + if (!reason)return interaction.reply(`Timed out undefined for ${RealLen} ${unit}`) + else if (reason) return interaction.reply(`Timed out undefined for ${RealLen} ${unit} for **${reason}.**`)} if (unit == "seconds") { length = Math.floor(length * 1000) From d79c6156b20c428a5e8244ecbd6fd5227402c3bf Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 29 May 2022 21:29:44 +0200 Subject: [PATCH 037/236] forgot the clientId, again --- commands/timeout.js | 1 + 1 file changed, 1 insertion(+) diff --git a/commands/timeout.js b/commands/timeout.js index 4293794..83783e5 100644 --- a/commands/timeout.js +++ b/commands/timeout.js @@ -1,5 +1,6 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); const { Modal, MessageEmbed } = require('discord.js'); +const { clientId } = require("../config.json") module.exports = { data: new SlashCommandBuilder() From 9dde9a613d1eda8a288f0967263c8ead77bf51ee Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 29 May 2022 21:31:29 +0200 Subject: [PATCH 038/236] there you go --- commands/timeout.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/commands/timeout.js b/commands/timeout.js index 83783e5..35baf41 100644 --- a/commands/timeout.js +++ b/commands/timeout.js @@ -31,8 +31,8 @@ module.exports = { const replyEmbed = new MessageEmbed(); if (member.id = clientId) { - if (!reason)return interaction.reply(`Timed out undefined for ${RealLen} ${unit}`) - else if (reason) return interaction.reply(`Timed out undefined for ${RealLen} ${unit} for **${reason}.**`)} + if (!reason || reason === "No reason provided")return interaction.reply(`Timed out undefined for ${RealLen} ${unit}`) + else if (reason || reason !== "No reason provided") return interaction.reply(`Timed out undefined for ${RealLen} ${unit} for **${reason}.**`)} if (unit == "seconds") { length = Math.floor(length * 1000) From 0a8d939ff225af64cef20bf01e8e3a425f67028c Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 30 May 2022 07:20:58 +0200 Subject: [PATCH 039/236] It should work normally now... --- commands/ban.js | 3 +-- commands/kick.js | 3 +-- commands/timeout.js | 3 +-- commands/warn.js | 3 +-- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/commands/ban.js b/commands/ban.js index ab7e226..6207f45 100644 --- a/commands/ban.js +++ b/commands/ban.js @@ -1,6 +1,5 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); const { MessageEmbed, GuildMember } = require('discord.js'); -const { clientId } = require('../config.json') module.exports = { data: new SlashCommandBuilder() @@ -33,7 +32,7 @@ module.exports = { await guild.members.fetch(member) } - if (member.id = clientId) return interaction.reply("❌ Why would you ban me? 😢") + if (member.id = interaction.client.user.id) return interaction.reply("❌ Why would you ban me? 😢") const dmEmbed = new MessageEmbed() .setColor("#FF0000") diff --git a/commands/kick.js b/commands/kick.js index 3267c77..f6cb10f 100644 --- a/commands/kick.js +++ b/commands/kick.js @@ -1,6 +1,5 @@ const { SlashCommandBuilder } = require('@discordjs/builders') const { MessageEmbed } = require('discord.js'); -const { clientId } = require('../config.json') module.exports = { data: new SlashCommandBuilder() @@ -23,7 +22,7 @@ module.exports = { const reason = interaction.options.getString("reason") const replyEmbed = new MessageEmbed().setColor("#00FF00") - if (member.id = clientId) return interaction.reply("❌ Why would you kick me? 😢") + if (member.id = interaction.client.user.id) return interaction.reply("❌ Why would you kick me? 😢") if (!joke) { if (member.kickable) { diff --git a/commands/timeout.js b/commands/timeout.js index 35baf41..ad99654 100644 --- a/commands/timeout.js +++ b/commands/timeout.js @@ -1,6 +1,5 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); const { Modal, MessageEmbed } = require('discord.js'); -const { clientId } = require("../config.json") module.exports = { data: new SlashCommandBuilder() @@ -30,7 +29,7 @@ module.exports = { let reason = interaction.options.getString('reason') || "No reason provided" const replyEmbed = new MessageEmbed(); - if (member.id = clientId) { + if (member.id = interaction.client.user.id) { if (!reason || reason === "No reason provided")return interaction.reply(`Timed out undefined for ${RealLen} ${unit}`) else if (reason || reason !== "No reason provided") return interaction.reply(`Timed out undefined for ${RealLen} ${unit} for **${reason}.**`)} diff --git a/commands/warn.js b/commands/warn.js index cc19ae4..da97976 100644 --- a/commands/warn.js +++ b/commands/warn.js @@ -1,5 +1,4 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); -const { clientId } = require("../config.json") const { MessageEmbed } = require('discord.js'); module.exports = { @@ -26,7 +25,7 @@ module.exports = { const replyEmbed = new MessageEmbed().setColor("#00FF00") const dmEmbed = new MessageEmbed().setColor("#FF0000") - if (user.id = clientId) return interaction.reply("I just deleted my own warn <:troll:869197146786766849>") + if (user.id = interaction.client.id) return interaction.reply("I just deleted my own warn <:troll:869197146786766849>") replyEmbed.setDescription(`Warned ${user.tag}: ${reason}`) dmEmbed.setDescription(`You have been warned for: ${reason}`) From 442a3661f40f762b910363eb1ea0825e0437afbd Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Mon, 30 May 2022 07:44:28 -0300 Subject: [PATCH 040/236] fix list command? --- commands/list.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/commands/list.js b/commands/list.js index 1e3e676..4fd2ead 100644 --- a/commands/list.js +++ b/commands/list.js @@ -31,16 +31,19 @@ module.exports = { const user = interaction.options.getMember("user") await interaction.deferReply() db = interaction.client.db.Cases - list = await db.findAll({ + warnDB = await db.findAll({ where: { userID: user.id, type: "warn" }, attributes: ['id', 'type', 'userID', 'reason', 'Executor'] }) - list = list[0].dataValues.toString() + let list = "" + for (let i = 0; i < warnDB.length; i++){ + list += `${warnDB[i].reason} - *insert date here*\n` + } console.log(list) - if (list !== []) { + if (list !== "") { interaction.followUp({ content: list, ephemeral: true }) } else { interaction.followUp({ content: "There is no warn", ephemeral: true }) From 1f3e266b8fa7d8b18573bb08d8e9cb22ec11e77f Mon Sep 17 00:00:00 2001 From: luihum <23081124+luihum@users.noreply.github.com> Date: Tue, 31 May 2022 08:43:47 -0300 Subject: [PATCH 041/236] fix slowmode command --- commands/slowmode.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/commands/slowmode.js b/commands/slowmode.js index 21aed4a..57390f0 100644 --- a/commands/slowmode.js +++ b/commands/slowmode.js @@ -26,11 +26,10 @@ module.exports = { const unit = interaction.options.getString('unit'); const RealLen = interaction.options.getInteger('duration'); - const reason = interaction.options.getString('reason'); + const reason = interaction.options.getString('reason') || "No reason provided"; const replyEmbed = new MessageEmbed() let length = RealLen; - if (!reason) reason = "No reason provided" - + if (unit == "minutes") length = Math.floor(length * 60) else if (unit == "hours") length = Math.floor(length * 60 * 60) From f8e3e11a1f38c0f7d290aa2de345298a433aa8c8 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 31 May 2022 20:59:56 +0200 Subject: [PATCH 042/236] I think this is better --- commands/timeout.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/timeout.js b/commands/timeout.js index ad99654..c2daf6b 100644 --- a/commands/timeout.js +++ b/commands/timeout.js @@ -29,7 +29,7 @@ module.exports = { let reason = interaction.options.getString('reason') || "No reason provided" const replyEmbed = new MessageEmbed(); - if (member.id = interaction.client.user.id) { + if (member.id === interaction.client.user.id) { if (!reason || reason === "No reason provided")return interaction.reply(`Timed out undefined for ${RealLen} ${unit}`) else if (reason || reason !== "No reason provided") return interaction.reply(`Timed out undefined for ${RealLen} ${unit} for **${reason}.**`)} From d248eb909dcbb12e21aa2af47d6d10a097ae7a3a Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 11:45:02 +0200 Subject: [PATCH 043/236] Get command created --- commands/get.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 commands/get.js diff --git a/commands/get.js b/commands/get.js new file mode 100644 index 0000000..a4d8897 --- /dev/null +++ b/commands/get.js @@ -0,0 +1,24 @@ +const { SlashCommandBuilder } = require('@discordjs/builders') + +module.exports = { + data: new SlashCommandBuilder() + .setName('get') + .setDescription("Get something") + .addStringOption(o => o + .setName('what') + .setDescription("What do you want to get?") + .setRequired(true)) + .addChoices({ name: 'Role Icon', value: 'ri' }, { name: 'Role Color', value: 'rc' }), + async execute(interaction) { + const choice = interaction.options.getString("what") + const guildRole = await interaction.guild.role.fetch() + + if (choice = "ri") { + let array = [] + guildRole.forEach(e => { + array.push(e.iconURL({format: 'png', size: 4096})) + }); + interaction.reply(array) + } + } +} \ No newline at end of file From fd0fc36d21cc0b33f5fc10b9fc2f5a44cc05a4e8 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 11:47:47 +0200 Subject: [PATCH 044/236] error while pushing slash command fix --- commands/get.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/commands/get.js b/commands/get.js index a4d8897..23adf18 100644 --- a/commands/get.js +++ b/commands/get.js @@ -7,8 +7,8 @@ module.exports = { .addStringOption(o => o .setName('what') .setDescription("What do you want to get?") - .setRequired(true)) - .addChoices({ name: 'Role Icon', value: 'ri' }, { name: 'Role Color', value: 'rc' }), + .setRequired(true) + .addChoices({ name: 'Role Icon', value: 'ri' }, { name: 'Role Color', value: 'rc' })), async execute(interaction) { const choice = interaction.options.getString("what") const guildRole = await interaction.guild.role.fetch() From 2d17fbaaa11572e28de997837653ba27bc719709 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 11:51:17 +0200 Subject: [PATCH 045/236] Why --- commands/get.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/commands/get.js b/commands/get.js index 23adf18..166cfb3 100644 --- a/commands/get.js +++ b/commands/get.js @@ -10,10 +10,9 @@ module.exports = { .setRequired(true) .addChoices({ name: 'Role Icon', value: 'ri' }, { name: 'Role Color', value: 'rc' })), async execute(interaction) { - const choice = interaction.options.getString("what") const guildRole = await interaction.guild.role.fetch() - if (choice = "ri") { + if (interaction.options.getString("what") = "ri") { let array = [] guildRole.forEach(e => { array.push(e.iconURL({format: 'png', size: 4096})) From d0002dfcb98ff931a0d8345c2d2457d6a6784e7f Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 11:53:09 +0200 Subject: [PATCH 046/236] At one point it will work right? --- commands/get.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/commands/get.js b/commands/get.js index 166cfb3..8b6f51b 100644 --- a/commands/get.js +++ b/commands/get.js @@ -10,9 +10,10 @@ module.exports = { .setRequired(true) .addChoices({ name: 'Role Icon', value: 'ri' }, { name: 'Role Color', value: 'rc' })), async execute(interaction) { + const choice = interaction.options.getString("what") const guildRole = await interaction.guild.role.fetch() - if (interaction.options.getString("what") = "ri") { + if (choice === "ri") { let array = [] guildRole.forEach(e => { array.push(e.iconURL({format: 'png', size: 4096})) From d0189984e8ddd35ea4a8da10d2cbfd74752a84a8 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 11:58:34 +0200 Subject: [PATCH 047/236] Another try... How many try will i need? idk --- commands/get.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/commands/get.js b/commands/get.js index 8b6f51b..1f95567 100644 --- a/commands/get.js +++ b/commands/get.js @@ -13,12 +13,13 @@ module.exports = { const choice = interaction.options.getString("what") const guildRole = await interaction.guild.role.fetch() + interaction.deferReply() if (choice === "ri") { let array = [] guildRole.forEach(e => { array.push(e.iconURL({format: 'png', size: 4096})) }); - interaction.reply(array) + interaction.followUp(array) } } } \ No newline at end of file From b127464eee7b5b922d199d5e7681e1a22ee228ce Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 11:59:16 +0200 Subject: [PATCH 048/236] I really don't know --- commands/get.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/commands/get.js b/commands/get.js index 1f95567..f047fdf 100644 --- a/commands/get.js +++ b/commands/get.js @@ -10,10 +10,11 @@ module.exports = { .setRequired(true) .addChoices({ name: 'Role Icon', value: 'ri' }, { name: 'Role Color', value: 'rc' })), async execute(interaction) { + interaction.deferReply() + const choice = interaction.options.getString("what") const guildRole = await interaction.guild.role.fetch() - interaction.deferReply() if (choice === "ri") { let array = [] guildRole.forEach(e => { From 94c23c95b6e3f93c8edd7927487a9dc4eca4df54 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 12:01:27 +0200 Subject: [PATCH 049/236] Again --- commands/get.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/commands/get.js b/commands/get.js index f047fdf..4dd90a4 100644 --- a/commands/get.js +++ b/commands/get.js @@ -11,9 +11,9 @@ module.exports = { .addChoices({ name: 'Role Icon', value: 'ri' }, { name: 'Role Color', value: 'rc' })), async execute(interaction) { interaction.deferReply() - + const choice = interaction.options.getString("what") - const guildRole = await interaction.guild.role.fetch() + const guildRole = await interaction.guild.roles.fetch() if (choice === "ri") { let array = [] From fdd023ea85dc6e9cbf5b935c992f15554b91f10a Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 12:06:09 +0200 Subject: [PATCH 050/236] And Again... --- commands/get.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/commands/get.js b/commands/get.js index 4dd90a4..142220d 100644 --- a/commands/get.js +++ b/commands/get.js @@ -10,8 +10,7 @@ module.exports = { .setRequired(true) .addChoices({ name: 'Role Icon', value: 'ri' }, { name: 'Role Color', value: 'rc' })), async execute(interaction) { - interaction.deferReply() - + await interaction.deferReply() const choice = interaction.options.getString("what") const guildRole = await interaction.guild.roles.fetch() From fdc79b2f5db34f70917f6a704f036e164cd9176e Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 12:08:59 +0200 Subject: [PATCH 051/236] And And Again... --- commands/get.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/commands/get.js b/commands/get.js index 142220d..a5b17de 100644 --- a/commands/get.js +++ b/commands/get.js @@ -17,7 +17,8 @@ module.exports = { if (choice === "ri") { let array = [] guildRole.forEach(e => { - array.push(e.iconURL({format: 'png', size: 4096})) + if (e.iconURL()) + array.push(e.iconURL({format: 'png', size: 4096})) }); interaction.followUp(array) } From fb9edd1f57189dbf3e5ea54691e046dd44195068 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 12:13:06 +0200 Subject: [PATCH 052/236] And And And Again... --- commands/get.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/commands/get.js b/commands/get.js index a5b17de..9c58c67 100644 --- a/commands/get.js +++ b/commands/get.js @@ -17,8 +17,9 @@ module.exports = { if (choice === "ri") { let array = [] guildRole.forEach(e => { - if (e.iconURL()) - array.push(e.iconURL({format: 'png', size: 4096})) + if (e.iconURL()) { + array.push(e.iconURL({ format: 'png', size: 4096 })) + } }); interaction.followUp(array) } From 211710d6cb2526c8e2b4e47a525c8f609cb33725 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 12:14:29 +0200 Subject: [PATCH 053/236] Console.log Moment --- commands/get.js | 1 + 1 file changed, 1 insertion(+) diff --git a/commands/get.js b/commands/get.js index 9c58c67..b4b8f4f 100644 --- a/commands/get.js +++ b/commands/get.js @@ -18,6 +18,7 @@ module.exports = { let array = [] guildRole.forEach(e => { if (e.iconURL()) { + console.log(e.iconURL({format: 'png', size: 4096})) array.push(e.iconURL({ format: 'png', size: 4096 })) } }); From 9b0bd765297ea941d303a26d76b9cc523f714330 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 12:23:01 +0200 Subject: [PATCH 054/236] console.log Moment * 2 --- commands/get.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/commands/get.js b/commands/get.js index b4b8f4f..f718c76 100644 --- a/commands/get.js +++ b/commands/get.js @@ -17,11 +17,13 @@ module.exports = { if (choice === "ri") { let array = [] guildRole.forEach(e => { - if (e.iconURL()) { - console.log(e.iconURL({format: 'png', size: 4096})) - array.push(e.iconURL({ format: 'png', size: 4096 })) - } + if (e.iconURL()) { + let icon = e.iconURL({format: 'png', size: 4096}) + console.log(icon) + array.push(icon) + } }); + console.log(array) interaction.followUp(array) } } From 09bd2729c6a215dd4332e5ef953290785911fffe Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 12:25:41 +0200 Subject: [PATCH 055/236] Better, right? --- commands/get.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/get.js b/commands/get.js index f718c76..af81ca3 100644 --- a/commands/get.js +++ b/commands/get.js @@ -24,7 +24,7 @@ module.exports = { } }); console.log(array) - interaction.followUp(array) + interaction.followUp(array.join('\n')) } } } \ No newline at end of file From 851c1690f814b7fcb3d763d87dcb64899211e39f Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 16:10:30 +0200 Subject: [PATCH 056/236] Maybe this is better? --- commands/get.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/commands/get.js b/commands/get.js index af81ca3..9db099d 100644 --- a/commands/get.js +++ b/commands/get.js @@ -15,16 +15,20 @@ module.exports = { const guildRole = await interaction.guild.roles.fetch() if (choice === "ri") { - let array = [] + let ArrayURL = [] guildRole.forEach(e => { if (e.iconURL()) { let icon = e.iconURL({format: 'png', size: 4096}) console.log(icon) - array.push(icon) + ArrayURL.push(icon) } }); - console.log(array) - interaction.followUp(array.join('\n')) + console.log(ArrayURL) + let FormattedURLList = ArrayURL.join(` for ${e.name}\n `) + interaction.followUp(FormattedURLList) + } + else if (choice === 'rc') { + } } } \ No newline at end of file From 4c13f8d2522525324ad1e75d247457e6e0075ed4 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 16:30:18 +0200 Subject: [PATCH 057/236] I'm not that good with for loop, there might be error --- commands/get.js | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/commands/get.js b/commands/get.js index 9db099d..19c40c9 100644 --- a/commands/get.js +++ b/commands/get.js @@ -7,8 +7,8 @@ module.exports = { .addStringOption(o => o .setName('what') .setDescription("What do you want to get?") - .setRequired(true) - .addChoices({ name: 'Role Icon', value: 'ri' }, { name: 'Role Color', value: 'rc' })), + .addChoices({ name: 'Role Icon', value: 'ri' }, { name: 'Role Color', value: 'rc' }) + .setRequired(true)), async execute(interaction) { await interaction.deferReply() const choice = interaction.options.getString("what") @@ -16,19 +16,31 @@ module.exports = { if (choice === "ri") { let ArrayURL = [] + let nameRole = [] guildRole.forEach(e => { - if (e.iconURL()) { - let icon = e.iconURL({format: 'png', size: 4096}) - console.log(icon) - ArrayURL.push(icon) - } + if (e.iconURL()) { + let icon = e.iconURL({ format: 'png', size: 4096 }) + let name = e.name + console.log(icon) + ArrayURL.push(icon) + console.log(name) + nameRole.push(name) + } }); + let FormattedURLArray = [] + + for (i in ArrayURL) { + let e = ArrayURL[i] + let a = nameRole[i] + FormattedURLArray.push(`${e} for ${a}`) + } + + let FormattedURLList = FormattedURLArray.join('\n') console.log(ArrayURL) - let FormattedURLList = ArrayURL.join(` for ${e.name}\n `) interaction.followUp(FormattedURLList) } else if (choice === 'rc') { - + } } } \ No newline at end of file From fb0d4fbddbaacf830ba8cb3c32eea6e867eba98b Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 16:44:07 +0200 Subject: [PATCH 058/236] Why not? --- commands/get.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/commands/get.js b/commands/get.js index 19c40c9..8215668 100644 --- a/commands/get.js +++ b/commands/get.js @@ -34,10 +34,18 @@ module.exports = { let a = nameRole[i] FormattedURLArray.push(`${e} for ${a}`) } - + let FormattedURLList = FormattedURLArray.join('\n') console.log(ArrayURL) - interaction.followUp(FormattedURLList) + if (FormattedURLList && FormattedURLList > 2000) { + interaction.followUp("I can't show you the result, too big of a message") + } + else if (FormattedURLList) { + interaction.followUp(FormattedURLList) + } + else if (!FormattedURLList) { + interaction.followUp("There is no role with an icon") + } } else if (choice === 'rc') { From f7263c6714f3adb7f03704903c6e151b376ceb01 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 16:46:00 +0200 Subject: [PATCH 059/236] when you forget things --- commands/get.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/get.js b/commands/get.js index 8215668..1cab7a5 100644 --- a/commands/get.js +++ b/commands/get.js @@ -37,7 +37,7 @@ module.exports = { let FormattedURLList = FormattedURLArray.join('\n') console.log(ArrayURL) - if (FormattedURLList && FormattedURLList > 2000) { + if (FormattedURLList && FormattedURLList.length > 2000) { interaction.followUp("I can't show you the result, too big of a message") } else if (FormattedURLList) { From dc5443277f64013798b26c1a4e0e5e99738b1b26 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 16:54:48 +0200 Subject: [PATCH 060/236] ~~console.log Member *3~~ --- commands/get.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/commands/get.js b/commands/get.js index 1cab7a5..2be2526 100644 --- a/commands/get.js +++ b/commands/get.js @@ -17,26 +17,25 @@ module.exports = { if (choice === "ri") { let ArrayURL = [] let nameRole = [] + guildRole.forEach(e => { if (e.iconURL()) { let icon = e.iconURL({ format: 'png', size: 4096 }) let name = e.name - console.log(icon) ArrayURL.push(icon) - console.log(name) nameRole.push(name) } }); let FormattedURLArray = [] - + for (i in ArrayURL) { let e = ArrayURL[i] let a = nameRole[i] FormattedURLArray.push(`${e} for ${a}`) } - let FormattedURLList = FormattedURLArray.join('\n') - console.log(ArrayURL) + + console.log(FormattedURLList) if (FormattedURLList && FormattedURLList.length > 2000) { interaction.followUp("I can't show you the result, too big of a message") } From f308db4d3ee8f3f00f252d92c7e9da00d587137d Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 17:23:58 +0200 Subject: [PATCH 061/236] Color role command! --- commands/get.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/commands/get.js b/commands/get.js index 2be2526..c851b07 100644 --- a/commands/get.js +++ b/commands/get.js @@ -27,7 +27,7 @@ module.exports = { } }); let FormattedURLArray = [] - + for (i in ArrayURL) { let e = ArrayURL[i] let a = nameRole[i] @@ -47,7 +47,14 @@ module.exports = { } } else if (choice === 'rc') { - + let ArrColor = [] + + guildRole.forEach(e => { + let color = e.color + let name = e.name + ArrColor.push(`${color} for ${name}`) + }) + interaction.followUp(ArrColor.join('\n')) } } } \ No newline at end of file From 5b8141718d3835dff462972830f1610f8427c0e7 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 17:26:28 +0200 Subject: [PATCH 062/236] This should be better --- commands/get.js | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/commands/get.js b/commands/get.js index c851b07..03f6ee4 100644 --- a/commands/get.js +++ b/commands/get.js @@ -16,33 +16,21 @@ module.exports = { if (choice === "ri") { let ArrayURL = [] - let nameRole = [] - guildRole.forEach(e => { if (e.iconURL()) { let icon = e.iconURL({ format: 'png', size: 4096 }) let name = e.name - ArrayURL.push(icon) - nameRole.push(name) + ArrayURL.push(`${icon} for ${name}\n`) } }); - let FormattedURLArray = [] - - for (i in ArrayURL) { - let e = ArrayURL[i] - let a = nameRole[i] - FormattedURLArray.push(`${e} for ${a}`) - } - let FormattedURLList = FormattedURLArray.join('\n') - console.log(FormattedURLList) - if (FormattedURLList && FormattedURLList.length > 2000) { + if (ArrayURL && ArrayURL.length > 2000) { interaction.followUp("I can't show you the result, too big of a message") } - else if (FormattedURLList) { - interaction.followUp(FormattedURLList) + else if (ArrayURL) { + interaction.followUp(ArrayURL) } - else if (!FormattedURLList) { + else if (!ArrayURL) { interaction.followUp("There is no role with an icon") } } From af89f0964a3dcbb91962a1ecb613ccd506f367c2 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 17:28:47 +0200 Subject: [PATCH 063/236] Meh --- commands/get.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/get.js b/commands/get.js index 03f6ee4..3a9cb30 100644 --- a/commands/get.js +++ b/commands/get.js @@ -38,7 +38,7 @@ module.exports = { let ArrColor = [] guildRole.forEach(e => { - let color = e.color + let color = e.hexColor let name = e.name ArrColor.push(`${color} for ${name}`) }) From fc0e67f375a84588a329590da35ff9d690542b08 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 17:30:25 +0200 Subject: [PATCH 064/236] Butter --- commands/get.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/get.js b/commands/get.js index 3a9cb30..cc1d5c1 100644 --- a/commands/get.js +++ b/commands/get.js @@ -40,7 +40,7 @@ module.exports = { guildRole.forEach(e => { let color = e.hexColor let name = e.name - ArrColor.push(`${color} for ${name}`) + if (color !== '#000000') ArrColor.push(`${color} for ${name}`) }) interaction.followUp(ArrColor.join('\n')) } From cbc39d461f5aef4e16f28928ed618a0cf9bbfc16 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 18:15:32 +0200 Subject: [PATCH 065/236] Maybe? --- Util/someFun.js | 11 +++++++++++ commands/get.js | 20 +++++++++++++------- 2 files changed, 24 insertions(+), 7 deletions(-) create mode 100644 Util/someFun.js diff --git a/Util/someFun.js b/Util/someFun.js new file mode 100644 index 0000000..4ee9674 --- /dev/null +++ b/Util/someFun.js @@ -0,0 +1,11 @@ +const fs = require('fs') +const Path = require('path') + +function CreateAndWrite(path, data) { + fs.writeFileSync(Path.join(__dirname, path), data) +} +function ReadFile(path) { + fs.readFileSync(Path.join(__dirname, path)) +} + +module.exports = CreateAndWrite, ReadFile \ No newline at end of file diff --git a/commands/get.js b/commands/get.js index cc1d5c1..50488e5 100644 --- a/commands/get.js +++ b/commands/get.js @@ -1,4 +1,6 @@ const { SlashCommandBuilder } = require('@discordjs/builders') +const { MessageAttachment } = require('discord.js') +const { CreateAndWrite, ReadFile } = require('../Util/someFun') module.exports = { data: new SlashCommandBuilder() @@ -24,11 +26,9 @@ module.exports = { } }); - if (ArrayURL && ArrayURL.length > 2000) { - interaction.followUp("I can't show you the result, too big of a message") - } - else if (ArrayURL) { - interaction.followUp(ArrayURL) + if (ArrayURL) { + CreateAndWrite('/Tmp/log.txt', ArrayURL) + interaction.followUp({files: [new MessageAttachment(ReadFile('/Tmp/log.txt'))]}) } else if (!ArrayURL) { interaction.followUp("There is no role with an icon") @@ -40,9 +40,15 @@ module.exports = { guildRole.forEach(e => { let color = e.hexColor let name = e.name - if (color !== '#000000') ArrColor.push(`${color} for ${name}`) + if (color !== '#000000') ArrColor.push(`${color} for ${name}\n`) }) - interaction.followUp(ArrColor.join('\n')) + if (ArrColor) { + CreateAndWrite('/Tmp/log.txt', ArrColor) + interaction.followUp({ files: [new MessageAttachment(ReadFile('/Tmp/log.txt'))]}) + } + else if (!ArrColor) { + interaction.followUp("No role have color") + } } } } \ No newline at end of file From 494378bd694cc3dc53b8491b7430540f74524afd Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 18:19:49 +0200 Subject: [PATCH 066/236] Maybe Maybe? --- Util/someFun.js | 2 +- commands/get.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Util/someFun.js b/Util/someFun.js index 4ee9674..5be4ab6 100644 --- a/Util/someFun.js +++ b/Util/someFun.js @@ -8,4 +8,4 @@ function ReadFile(path) { fs.readFileSync(Path.join(__dirname, path)) } -module.exports = CreateAndWrite, ReadFile \ No newline at end of file +module.exports = { CreateAndWrite, ReadFile } \ No newline at end of file diff --git a/commands/get.js b/commands/get.js index 50488e5..01fe138 100644 --- a/commands/get.js +++ b/commands/get.js @@ -1,6 +1,6 @@ const { SlashCommandBuilder } = require('@discordjs/builders') const { MessageAttachment } = require('discord.js') -const { CreateAndWrite, ReadFile } = require('../Util/someFun') +const { CreateAndWrite, ReadFile } = require('../Util/someFun.js') module.exports = { data: new SlashCommandBuilder() From c98264b5e73889fc5ef02a2fd95154e6ff128ff6 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 18:20:42 +0200 Subject: [PATCH 067/236] When fs doesn't like arrays --- commands/get.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/commands/get.js b/commands/get.js index 01fe138..b44a2d1 100644 --- a/commands/get.js +++ b/commands/get.js @@ -27,7 +27,7 @@ module.exports = { }); if (ArrayURL) { - CreateAndWrite('/Tmp/log.txt', ArrayURL) + CreateAndWrite('/Tmp/log.txt', ArrayURL.toString) interaction.followUp({files: [new MessageAttachment(ReadFile('/Tmp/log.txt'))]}) } else if (!ArrayURL) { @@ -43,7 +43,7 @@ module.exports = { if (color !== '#000000') ArrColor.push(`${color} for ${name}\n`) }) if (ArrColor) { - CreateAndWrite('/Tmp/log.txt', ArrColor) + CreateAndWrite('/Tmp/log.txt', ArrColor.toString) interaction.followUp({ files: [new MessageAttachment(ReadFile('/Tmp/log.txt'))]}) } else if (!ArrColor) { From 2546dc84972e8774fa2ead666f584425faa2e346 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 18:21:26 +0200 Subject: [PATCH 068/236] I FORGOT THE FRICKING BRACKET --- commands/get.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/commands/get.js b/commands/get.js index b44a2d1..1c88fc8 100644 --- a/commands/get.js +++ b/commands/get.js @@ -27,7 +27,7 @@ module.exports = { }); if (ArrayURL) { - CreateAndWrite('/Tmp/log.txt', ArrayURL.toString) + CreateAndWrite('/Tmp/log.txt', ArrayURL.toString()) interaction.followUp({files: [new MessageAttachment(ReadFile('/Tmp/log.txt'))]}) } else if (!ArrayURL) { @@ -43,7 +43,7 @@ module.exports = { if (color !== '#000000') ArrColor.push(`${color} for ${name}\n`) }) if (ArrColor) { - CreateAndWrite('/Tmp/log.txt', ArrColor.toString) + CreateAndWrite('/Tmp/log.txt', ArrColor.toString()) interaction.followUp({ files: [new MessageAttachment(ReadFile('/Tmp/log.txt'))]}) } else if (!ArrColor) { From 0e53e69f258b14a1aeca5b82fb43ecedb3b27b5b Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 18:23:55 +0200 Subject: [PATCH 069/236] vscode wanted to crash and it did --- Util/someFun.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Util/someFun.js b/Util/someFun.js index 5be4ab6..042f18e 100644 --- a/Util/someFun.js +++ b/Util/someFun.js @@ -2,10 +2,10 @@ const fs = require('fs') const Path = require('path') function CreateAndWrite(path, data) { - fs.writeFileSync(Path.join(__dirname, path), data) + fs.writeFileSync(Path.join(__dirname, '/..', path), data) } function ReadFile(path) { - fs.readFileSync(Path.join(__dirname, path)) + fs.readFileSync(Path.join(__dirname, '/..', path)) } module.exports = { CreateAndWrite, ReadFile } \ No newline at end of file From 0319972c0336bf28f4d820427ade1f1aa77092c8 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 18:44:10 +0200 Subject: [PATCH 070/236] trying a fix --- Util/someFun.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Util/someFun.js b/Util/someFun.js index 042f18e..f7d5aa7 100644 --- a/Util/someFun.js +++ b/Util/someFun.js @@ -1,11 +1,11 @@ const fs = require('fs') const Path = require('path') -function CreateAndWrite(path, data) { - fs.writeFileSync(Path.join(__dirname, '/..', path), data) +function CreateAndWrite(path2, data) { + fs.writeFileSync(Path.join(__dirname, '/..', path2), data) } -function ReadFile(path) { - fs.readFileSync(Path.join(__dirname, '/..', path)) +function ReadFile(path2) { + fs.readFileSync(Path.join(__dirname, '/..', path2)) } module.exports = { CreateAndWrite, ReadFile } \ No newline at end of file From 8c7665d9a5d318d97011321bf11fc3c74c244604 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 18:51:28 +0200 Subject: [PATCH 071/236] Meh --- commands/get.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/get.js b/commands/get.js index 1c88fc8..e686370 100644 --- a/commands/get.js +++ b/commands/get.js @@ -28,7 +28,7 @@ module.exports = { if (ArrayURL) { CreateAndWrite('/Tmp/log.txt', ArrayURL.toString()) - interaction.followUp({files: [new MessageAttachment(ReadFile('/Tmp/log.txt'))]}) + interaction.followUp({files: [new MessageAttachment(ReadFile('/Tmp/log.txt'), 'result.txt')]}) } else if (!ArrayURL) { interaction.followUp("There is no role with an icon") From 52e3cfb780604fb3aca8362945ebf148719f8622 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 21:55:04 +0200 Subject: [PATCH 072/236] Found the bug... i think --- Util/someFun.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Util/someFun.js b/Util/someFun.js index f7d5aa7..4f48c0a 100644 --- a/Util/someFun.js +++ b/Util/someFun.js @@ -2,10 +2,15 @@ const fs = require('fs') const Path = require('path') function CreateAndWrite(path2, data) { - fs.writeFileSync(Path.join(__dirname, '/..', path2), data) + fs.writeFile(Path.join(__dirname, '/..', path2), data, err => { + if (err) throw err + }) } + function ReadFile(path2) { - fs.readFileSync(Path.join(__dirname, '/..', path2)) + fs.readFile(Path.join(__dirname, '/..', path2), err => { + if (err) throw err + }) } module.exports = { CreateAndWrite, ReadFile } \ No newline at end of file From 4afa89707cf2a195dbb3d6b9479ceee0c332f6fc Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 22:01:30 +0200 Subject: [PATCH 073/236] Go back in time... console.log Mement *3 --- commands/get.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/commands/get.js b/commands/get.js index e686370..1b96ead 100644 --- a/commands/get.js +++ b/commands/get.js @@ -27,6 +27,7 @@ module.exports = { }); if (ArrayURL) { + console.log(ArrayURL) CreateAndWrite('/Tmp/log.txt', ArrayURL.toString()) interaction.followUp({files: [new MessageAttachment(ReadFile('/Tmp/log.txt'), 'result.txt')]}) } @@ -43,6 +44,7 @@ module.exports = { if (color !== '#000000') ArrColor.push(`${color} for ${name}\n`) }) if (ArrColor) { + console.log(ArrColor) CreateAndWrite('/Tmp/log.txt', ArrColor.toString()) interaction.followUp({ files: [new MessageAttachment(ReadFile('/Tmp/log.txt'))]}) } From 9ce550fd760194c7ccd6207082469dbc4bdaf57e Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 22:03:39 +0200 Subject: [PATCH 074/236] Trying something --- commands/get.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/commands/get.js b/commands/get.js index 1b96ead..f12b52b 100644 --- a/commands/get.js +++ b/commands/get.js @@ -39,9 +39,9 @@ module.exports = { let ArrColor = [] guildRole.forEach(e => { - let color = e.hexColor + let color = e.color let name = e.name - if (color !== '#000000') ArrColor.push(`${color} for ${name}\n`) + if (color !== '0') ArrColor.push(`${color} for ${name}\n`) }) if (ArrColor) { console.log(ArrColor) From 328dc2b532bdd856ab052cae0095cd2e619a03a3 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 6 Jun 2022 22:05:03 +0200 Subject: [PATCH 075/236] console.log * 4 --- commands/get.js | 1 + 1 file changed, 1 insertion(+) diff --git a/commands/get.js b/commands/get.js index f12b52b..a4f1ea2 100644 --- a/commands/get.js +++ b/commands/get.js @@ -40,6 +40,7 @@ module.exports = { guildRole.forEach(e => { let color = e.color + console.log('color is equal to ', color) let name = e.name if (color !== '0') ArrColor.push(`${color} for ${name}\n`) }) From d50aa65ad310d5635ef51baf7d294fb6c59d7634 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 7 Jun 2022 18:41:19 +0200 Subject: [PATCH 076/236] Some quality of life feature --- commands/get.js | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/commands/get.js b/commands/get.js index a4f1ea2..b83046e 100644 --- a/commands/get.js +++ b/commands/get.js @@ -6,21 +6,35 @@ module.exports = { data: new SlashCommandBuilder() .setName('get') .setDescription("Get something") - .addStringOption(o => o - .setName('what') - .setDescription("What do you want to get?") - .addChoices({ name: 'Role Icon', value: 'ri' }, { name: 'Role Color', value: 'rc' }) - .setRequired(true)), + .addSubcommand(sc => sc + .setName('Role Icon') + .setDescription("Getting All Icons of All Roles")) + .addStringOption(o => o + .setName("format") + .setDescription("In what format do you want the icons?") + .setRequired(true) + .addChoices({name: 'webp',value: 'webp'}, {name: 'png', value: 'png'}, {name: 'jpg', value: 'jpg'}, {name: 'jpeg', value: 'jpeg'})) + .addNumberOption(o => o + .setName('size') + .setDescription('At what size do you want the icon to be? (pixel)') + .setRequired(true)) + .addChoices({name: '16',value: 16},{name: '32',value: 32},{name: '56',value: 56},{name: '64',value: 64},{name: '96',value: 96},{name: '128',value: 128},{name: '256',value: 256},{name: '300',value: 300},{name: '512',value: 512},{name: '600',value: 600},{name: '1024',value: 1024},{name: '2048',value: 2048},{name: '4096',value: 4096}) + .addSubcommand(sc => sc + .setName('Role Color') + .setDescription("Getting All Colors of All Roles")), async execute(interaction) { await interaction.deferReply() const choice = interaction.options.getString("what") const guildRole = await interaction.guild.roles.fetch() if (choice === "ri") { + const format = interaction.options.getString("format") + const size = interaction.options.getNumber("size") let ArrayURL = [] + guildRole.forEach(e => { if (e.iconURL()) { - let icon = e.iconURL({ format: 'png', size: 4096 }) + let icon = e.iconURL({ format: format, size: size }) let name = e.name ArrayURL.push(`${icon} for ${name}\n`) } @@ -29,7 +43,8 @@ module.exports = { if (ArrayURL) { console.log(ArrayURL) CreateAndWrite('/Tmp/log.txt', ArrayURL.toString()) - interaction.followUp({files: [new MessageAttachment(ReadFile('/Tmp/log.txt'), 'result.txt')]}) + const file = new MessageAttachment(ReadFile('Tmp/log.txt'), 'result.txt') + interaction.followUp({files: [file]}) } else if (!ArrayURL) { interaction.followUp("There is no role with an icon") @@ -47,7 +62,8 @@ module.exports = { if (ArrColor) { console.log(ArrColor) CreateAndWrite('/Tmp/log.txt', ArrColor.toString()) - interaction.followUp({ files: [new MessageAttachment(ReadFile('/Tmp/log.txt'))]}) + const file = new MessageAttachment(ReadFile('Tmp/log.txt'), 'result.txt') + interaction.followUp({ files: [file]}) } else if (!ArrColor) { interaction.followUp("No role have color") From 0918e1e248f233c9f41f0481cb592329b0f2bab2 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 7 Jun 2022 18:46:52 +0200 Subject: [PATCH 077/236] Welp --- commands/get.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/get.js b/commands/get.js index b83046e..203f9d5 100644 --- a/commands/get.js +++ b/commands/get.js @@ -7,7 +7,7 @@ module.exports = { .setName('get') .setDescription("Get something") .addSubcommand(sc => sc - .setName('Role Icon') + .setName('role Icon') .setDescription("Getting All Icons of All Roles")) .addStringOption(o => o .setName("format") From 02e4978d0d91272f783d955171b46610f7563362 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 7 Jun 2022 18:47:32 +0200 Subject: [PATCH 078/236] Welp * 2 --- commands/get.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/get.js b/commands/get.js index 203f9d5..3beab78 100644 --- a/commands/get.js +++ b/commands/get.js @@ -7,7 +7,7 @@ module.exports = { .setName('get') .setDescription("Get something") .addSubcommand(sc => sc - .setName('role Icon') + .setName('role icon') .setDescription("Getting All Icons of All Roles")) .addStringOption(o => o .setName("format") From b07d978f5b65d90b2cc2379a9eee924a81238069 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 7 Jun 2022 18:50:10 +0200 Subject: [PATCH 079/236] Welp * 3 --- commands/get.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/commands/get.js b/commands/get.js index 3beab78..d63fcee 100644 --- a/commands/get.js +++ b/commands/get.js @@ -12,13 +12,13 @@ module.exports = { .addStringOption(o => o .setName("format") .setDescription("In what format do you want the icons?") - .setRequired(true) - .addChoices({name: 'webp',value: 'webp'}, {name: 'png', value: 'png'}, {name: 'jpg', value: 'jpg'}, {name: 'jpeg', value: 'jpeg'})) - .addNumberOption(o => o + .addChoices({name: 'webp',value: 'webp'}, {name: 'png', value: 'png'}, {name: 'jpg', value: 'jpg'}, {name: 'jpeg', value: 'jpeg'}) + .setRequired(true)) + .addNumberOption(o => o .setName('size') .setDescription('At what size do you want the icon to be? (pixel)') - .setRequired(true)) - .addChoices({name: '16',value: 16},{name: '32',value: 32},{name: '56',value: 56},{name: '64',value: 64},{name: '96',value: 96},{name: '128',value: 128},{name: '256',value: 256},{name: '300',value: 300},{name: '512',value: 512},{name: '600',value: 600},{name: '1024',value: 1024},{name: '2048',value: 2048},{name: '4096',value: 4096}) + .setRequired(true) + .addChoices({name: '16',value: 16},{name: '32',value: 32},{name: '56',value: 56},{name: '64',value: 64},{name: '96',value: 96},{name: '128',value: 128},{name: '256',value: 256},{name: '300',value: 300},{name: '512',value: 512},{name: '600',value: 600},{name: '1024',value: 1024},{name: '2048',value: 2048},{name: '4096',value: 4096})) .addSubcommand(sc => sc .setName('Role Color') .setDescription("Getting All Colors of All Roles")), From 98637fac8ca4441bcd012593696e1db1044b0634 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 7 Jun 2022 18:50:42 +0200 Subject: [PATCH 080/236] Welp * 4 --- commands/get.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/get.js b/commands/get.js index d63fcee..a40891e 100644 --- a/commands/get.js +++ b/commands/get.js @@ -20,7 +20,7 @@ module.exports = { .setRequired(true) .addChoices({name: '16',value: 16},{name: '32',value: 32},{name: '56',value: 56},{name: '64',value: 64},{name: '96',value: 96},{name: '128',value: 128},{name: '256',value: 256},{name: '300',value: 300},{name: '512',value: 512},{name: '600',value: 600},{name: '1024',value: 1024},{name: '2048',value: 2048},{name: '4096',value: 4096})) .addSubcommand(sc => sc - .setName('Role Color') + .setName('role color') .setDescription("Getting All Colors of All Roles")), async execute(interaction) { await interaction.deferReply() From c9bf1e0fc45dbddf696e07b1acac870e8db3f2e1 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 7 Jun 2022 19:14:34 +0200 Subject: [PATCH 081/236] Welp * 5, no space allowed... --- commands/get.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/commands/get.js b/commands/get.js index a40891e..f38a9ae 100644 --- a/commands/get.js +++ b/commands/get.js @@ -7,7 +7,7 @@ module.exports = { .setName('get') .setDescription("Get something") .addSubcommand(sc => sc - .setName('role icon') + .setName('ricon') .setDescription("Getting All Icons of All Roles")) .addStringOption(o => o .setName("format") @@ -20,7 +20,7 @@ module.exports = { .setRequired(true) .addChoices({name: '16',value: 16},{name: '32',value: 32},{name: '56',value: 56},{name: '64',value: 64},{name: '96',value: 96},{name: '128',value: 128},{name: '256',value: 256},{name: '300',value: 300},{name: '512',value: 512},{name: '600',value: 600},{name: '1024',value: 1024},{name: '2048',value: 2048},{name: '4096',value: 4096})) .addSubcommand(sc => sc - .setName('role color') + .setName('rcolor') .setDescription("Getting All Colors of All Roles")), async execute(interaction) { await interaction.deferReply() From 81941da18da21166d045a957d7b8f612051d36e6 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 7 Jun 2022 19:17:53 +0200 Subject: [PATCH 082/236] Get moving the bracket --- commands/get.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/commands/get.js b/commands/get.js index f38a9ae..dbabfd6 100644 --- a/commands/get.js +++ b/commands/get.js @@ -8,7 +8,7 @@ module.exports = { .setDescription("Get something") .addSubcommand(sc => sc .setName('ricon') - .setDescription("Getting All Icons of All Roles")) + .setDescription("Getting All Icons of All Roles") .addStringOption(o => o .setName("format") .setDescription("In what format do you want the icons?") @@ -18,7 +18,7 @@ module.exports = { .setName('size') .setDescription('At what size do you want the icon to be? (pixel)') .setRequired(true) - .addChoices({name: '16',value: 16},{name: '32',value: 32},{name: '56',value: 56},{name: '64',value: 64},{name: '96',value: 96},{name: '128',value: 128},{name: '256',value: 256},{name: '300',value: 300},{name: '512',value: 512},{name: '600',value: 600},{name: '1024',value: 1024},{name: '2048',value: 2048},{name: '4096',value: 4096})) + .addChoices({name: '16',value: 16},{name: '32',value: 32},{name: '56',value: 56},{name: '64',value: 64},{name: '96',value: 96},{name: '128',value: 128},{name: '256',value: 256},{name: '300',value: 300},{name: '512',value: 512},{name: '600',value: 600},{name: '1024',value: 1024},{name: '2048',value: 2048},{name: '4096',value: 4096}))) .addSubcommand(sc => sc .setName('rcolor') .setDescription("Getting All Colors of All Roles")), From 206d8a3b50d5b33818a5d26ed0149e862f5847c9 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 7 Jun 2022 19:21:45 +0200 Subject: [PATCH 083/236] Forgor... --- commands/get.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/commands/get.js b/commands/get.js index dbabfd6..4e9e360 100644 --- a/commands/get.js +++ b/commands/get.js @@ -24,10 +24,10 @@ module.exports = { .setDescription("Getting All Colors of All Roles")), async execute(interaction) { await interaction.deferReply() - const choice = interaction.options.getString("what") + const sc = interaction.options.getSubcommand() const guildRole = await interaction.guild.roles.fetch() - if (choice === "ri") { + if (sc === "ricon") { const format = interaction.options.getString("format") const size = interaction.options.getNumber("size") let ArrayURL = [] @@ -50,7 +50,7 @@ module.exports = { interaction.followUp("There is no role with an icon") } } - else if (choice === 'rc') { + else if (sc === 'rcolor') { let ArrColor = [] guildRole.forEach(e => { From b3569046b322eb7091fe2a879abc27c76ad56b6b Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 7 Jun 2022 19:23:29 +0200 Subject: [PATCH 084/236] Heh, why not --- commands/get.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/commands/get.js b/commands/get.js index 4e9e360..e022f18 100644 --- a/commands/get.js +++ b/commands/get.js @@ -42,7 +42,7 @@ module.exports = { if (ArrayURL) { console.log(ArrayURL) - CreateAndWrite('/Tmp/log.txt', ArrayURL.toString()) + CreateAndWrite('/Tmp/log.txt', ArrayURL.join("")) const file = new MessageAttachment(ReadFile('Tmp/log.txt'), 'result.txt') interaction.followUp({files: [file]}) } @@ -61,7 +61,7 @@ module.exports = { }) if (ArrColor) { console.log(ArrColor) - CreateAndWrite('/Tmp/log.txt', ArrColor.toString()) + CreateAndWrite('/Tmp/log.txt', ArrColor.join("")) const file = new MessageAttachment(ReadFile('Tmp/log.txt'), 'result.txt') interaction.followUp({ files: [file]}) } From 3029258cba7ab22f1b727dc893217e9376c7e2ec Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 7 Jun 2022 19:27:21 +0200 Subject: [PATCH 085/236] If this works, thank you stuartt :angry: --- commands/get.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/commands/get.js b/commands/get.js index e022f18..252670a 100644 --- a/commands/get.js +++ b/commands/get.js @@ -43,7 +43,7 @@ module.exports = { if (ArrayURL) { console.log(ArrayURL) CreateAndWrite('/Tmp/log.txt', ArrayURL.join("")) - const file = new MessageAttachment(ReadFile('Tmp/log.txt'), 'result.txt') + const file = new MessageAttachment('../Tmp/log.txt', 'result.txt') interaction.followUp({files: [file]}) } else if (!ArrayURL) { @@ -62,7 +62,7 @@ module.exports = { if (ArrColor) { console.log(ArrColor) CreateAndWrite('/Tmp/log.txt', ArrColor.join("")) - const file = new MessageAttachment(ReadFile('Tmp/log.txt'), 'result.txt') + const file = new MessageAttachment('../Tmp/log.txt', 'result.txt') interaction.followUp({ files: [file]}) } else if (!ArrColor) { From 47489cf121981f894906b1b76cdf7e84570e3946 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 7 Jun 2022 19:28:24 +0200 Subject: [PATCH 086/236] It seems better.... this is not normal --- commands/get.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/get.js b/commands/get.js index 252670a..3d7dc13 100644 --- a/commands/get.js +++ b/commands/get.js @@ -62,7 +62,7 @@ module.exports = { if (ArrColor) { console.log(ArrColor) CreateAndWrite('/Tmp/log.txt', ArrColor.join("")) - const file = new MessageAttachment('../Tmp/log.txt', 'result.txt') + const file = new MessageAttachment('./Tmp/log.txt', 'result.txt') interaction.followUp({ files: [file]}) } else if (!ArrColor) { From 475f0c593004c32eeaab89df18e6faec6871ce7e Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 7 Jun 2022 19:29:56 +0200 Subject: [PATCH 087/236] Heh, forgot one... --- commands/get.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/get.js b/commands/get.js index 3d7dc13..4c32816 100644 --- a/commands/get.js +++ b/commands/get.js @@ -43,7 +43,7 @@ module.exports = { if (ArrayURL) { console.log(ArrayURL) CreateAndWrite('/Tmp/log.txt', ArrayURL.join("")) - const file = new MessageAttachment('../Tmp/log.txt', 'result.txt') + const file = new MessageAttachment('./Tmp/log.txt', 'result.txt') interaction.followUp({files: [file]}) } else if (!ArrayURL) { From 1ceeec9e58fa628838821c64b37048a863b4c598 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 7 Jun 2022 19:33:45 +0200 Subject: [PATCH 088/236] HEX COLOR --- commands/get.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/commands/get.js b/commands/get.js index 4c32816..ac05441 100644 --- a/commands/get.js +++ b/commands/get.js @@ -54,10 +54,10 @@ module.exports = { let ArrColor = [] guildRole.forEach(e => { - let color = e.color + let color = e.hexColor console.log('color is equal to ', color) let name = e.name - if (color !== '0') ArrColor.push(`${color} for ${name}\n`) + if (color !== '#000000') ArrColor.push(`${color} for ${name}\n`) }) if (ArrColor) { console.log(ArrColor) From 20f180a58b36175364ef731cf6011ce0133631db Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 7 Jun 2022 19:34:40 +0200 Subject: [PATCH 089/236] NO MORE console.log --- commands/get.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/commands/get.js b/commands/get.js index ac05441..c246a6a 100644 --- a/commands/get.js +++ b/commands/get.js @@ -41,7 +41,6 @@ module.exports = { }); if (ArrayURL) { - console.log(ArrayURL) CreateAndWrite('/Tmp/log.txt', ArrayURL.join("")) const file = new MessageAttachment('./Tmp/log.txt', 'result.txt') interaction.followUp({files: [file]}) @@ -55,12 +54,10 @@ module.exports = { guildRole.forEach(e => { let color = e.hexColor - console.log('color is equal to ', color) let name = e.name if (color !== '#000000') ArrColor.push(`${color} for ${name}\n`) }) if (ArrColor) { - console.log(ArrColor) CreateAndWrite('/Tmp/log.txt', ArrColor.join("")) const file = new MessageAttachment('./Tmp/log.txt', 'result.txt') interaction.followUp({ files: [file]}) From 5b57b165ebb96b8f47d50385bb42fe4c50345bc7 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 7 Jun 2022 19:40:26 +0200 Subject: [PATCH 090/236] Tring to see if discord can bug... --- commands/create.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 commands/create.js diff --git a/commands/create.js b/commands/create.js new file mode 100644 index 0000000..d25e877 --- /dev/null +++ b/commands/create.js @@ -0,0 +1,16 @@ +const { SlashCommandBuilder } = require('@discordjs/builders') + +module.exports = { + data: new SlashCommandBuilder() + .setName("create") + .setDescription('Create a text channel') + .setStringOption(o => o + .setName('name') + .setDescription("The name of the channel you want to create")), + async execute(interaction) { + let server = interaction.guild; + let name = interaction.options.getString('name'); + + server.createChannel(name, "text"); + } +} From c09c8d51114664c5e8801c991b6171a4a7289930 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 7 Jun 2022 19:42:15 +0200 Subject: [PATCH 091/236] A try blouk --- commands/create.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/commands/create.js b/commands/create.js index d25e877..29534bc 100644 --- a/commands/create.js +++ b/commands/create.js @@ -10,7 +10,11 @@ module.exports = { async execute(interaction) { let server = interaction.guild; let name = interaction.options.getString('name'); - - server.createChannel(name, "text"); + try { + server.createChannel(name, "text"); + } + catch (err) { + interaction.reply(`\`${err}\``) + } } } From 1e82f50b96887b7a765d7a7eb57dc1aff1e43557 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 7 Jun 2022 19:49:04 +0200 Subject: [PATCH 092/236] Eh --- commands/create.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/create.js b/commands/create.js index 29534bc..28d6a9d 100644 --- a/commands/create.js +++ b/commands/create.js @@ -4,7 +4,7 @@ module.exports = { data: new SlashCommandBuilder() .setName("create") .setDescription('Create a text channel') - .setStringOption(o => o + .addStringOption(o => o .setName('name') .setDescription("The name of the channel you want to create")), async execute(interaction) { From 9204cefb24d9748fae50c6bbc8a57bdd34ac3d33 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 7 Jun 2022 20:04:35 +0200 Subject: [PATCH 093/236] server.channel.create *should* work --- commands/create.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/commands/create.js b/commands/create.js index 28d6a9d..8f30145 100644 --- a/commands/create.js +++ b/commands/create.js @@ -10,8 +10,9 @@ module.exports = { async execute(interaction) { let server = interaction.guild; let name = interaction.options.getString('name'); + try { - server.createChannel(name, "text"); + server.channel.create(name, "text"); } catch (err) { interaction.reply(`\`${err}\``) From 97891cf53e68c60c3001d1dab6e613b28c4add2a Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 7 Jun 2022 20:08:24 +0200 Subject: [PATCH 094/236] sometimes, **s** are important... --- commands/create.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/create.js b/commands/create.js index 8f30145..b060d30 100644 --- a/commands/create.js +++ b/commands/create.js @@ -12,7 +12,7 @@ module.exports = { let name = interaction.options.getString('name'); try { - server.channel.create(name, "text"); + server.channels.create(name, "text"); } catch (err) { interaction.reply(`\`${err}\``) From 1faab3250a2e5e701c590bbfa12ebbae176fda05 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 7 Jun 2022 20:10:41 +0200 Subject: [PATCH 095/236] How did i forgot this??? --- commands/create.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/commands/create.js b/commands/create.js index b060d30..1455985 100644 --- a/commands/create.js +++ b/commands/create.js @@ -17,5 +17,8 @@ module.exports = { catch (err) { interaction.reply(`\`${err}\``) } + finally { + interaction.reply("No error!") + } } } From 92b2da22cad8a508c8553a9153d1cc175d03ead6 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 8 Jun 2022 14:36:10 +0200 Subject: [PATCH 096/236] Cooler command like that --- commands/get.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/commands/get.js b/commands/get.js index c246a6a..859eb21 100644 --- a/commands/get.js +++ b/commands/get.js @@ -21,7 +21,11 @@ module.exports = { .addChoices({name: '16',value: 16},{name: '32',value: 32},{name: '56',value: 56},{name: '64',value: 64},{name: '96',value: 96},{name: '128',value: 128},{name: '256',value: 256},{name: '300',value: 300},{name: '512',value: 512},{name: '600',value: 600},{name: '1024',value: 1024},{name: '2048',value: 2048},{name: '4096',value: 4096}))) .addSubcommand(sc => sc .setName('rcolor') - .setDescription("Getting All Colors of All Roles")), + .setDescription("Getting All Colors of All Roles") + .addBooleanOption(o => o + .setName("hex") + .setDescription("Do you want to get a hex value?") + .setRequired(true))), async execute(interaction) { await interaction.deferReply() const sc = interaction.options.getSubcommand() @@ -50,10 +54,13 @@ module.exports = { } } else if (sc === 'rcolor') { + const hex = interaction.options.getBoolean("hex") let ArrColor = [] guildRole.forEach(e => { - let color = e.hexColor + let color + if (hex) color = e.hexColor + else if (!hex) color = e.color let name = e.name if (color !== '#000000') ArrColor.push(`${color} for ${name}\n`) }) From fca3760ad581f00443982bc06b682638c31ecb8c Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 8 Jun 2022 14:42:14 +0200 Subject: [PATCH 097/236] I think that would work better --- commands/get.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/get.js b/commands/get.js index 859eb21..022d714 100644 --- a/commands/get.js +++ b/commands/get.js @@ -62,7 +62,7 @@ module.exports = { if (hex) color = e.hexColor else if (!hex) color = e.color let name = e.name - if (color !== '#000000') ArrColor.push(`${color} for ${name}\n`) + if (color !== '#000000' || color !== '0') ArrColor.push(`${color} for ${name}\n`) }) if (ArrColor) { CreateAndWrite('/Tmp/log.txt', ArrColor.join("")) From 3715f7ede9b37f00a821484a57d8495a1472e68e Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 8 Jun 2022 14:44:31 +0200 Subject: [PATCH 098/236] Nope, it would work better like this --- commands/get.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/get.js b/commands/get.js index 022d714..e6d515d 100644 --- a/commands/get.js +++ b/commands/get.js @@ -62,7 +62,7 @@ module.exports = { if (hex) color = e.hexColor else if (!hex) color = e.color let name = e.name - if (color !== '#000000' || color !== '0') ArrColor.push(`${color} for ${name}\n`) + if (color !== '#000000' || color !== 0) ArrColor.push(`${color} for ${name}\n`) }) if (ArrColor) { CreateAndWrite('/Tmp/log.txt', ArrColor.join("")) From 5faab826faa2b672586867de542e4950e6630764 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 8 Jun 2022 15:01:13 +0200 Subject: [PATCH 099/236] Now Ephemeral:tm: --- commands/get.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/get.js b/commands/get.js index e6d515d..4f19d77 100644 --- a/commands/get.js +++ b/commands/get.js @@ -27,7 +27,7 @@ module.exports = { .setDescription("Do you want to get a hex value?") .setRequired(true))), async execute(interaction) { - await interaction.deferReply() + await interaction.deferReply({ephemeral: true}) const sc = interaction.options.getSubcommand() const guildRole = await interaction.guild.roles.fetch() From 3f0cd59a37f2bbe1879dffa93cbabc95b095401a Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 8 Jun 2022 17:15:05 +0200 Subject: [PATCH 100/236] without any variable that is not necessary --- commands/get.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/commands/get.js b/commands/get.js index 4f19d77..b87b268 100644 --- a/commands/get.js +++ b/commands/get.js @@ -46,8 +46,7 @@ module.exports = { if (ArrayURL) { CreateAndWrite('/Tmp/log.txt', ArrayURL.join("")) - const file = new MessageAttachment('./Tmp/log.txt', 'result.txt') - interaction.followUp({files: [file]}) + interaction.followUp({files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}) } else if (!ArrayURL) { interaction.followUp("There is no role with an icon") @@ -66,8 +65,7 @@ module.exports = { }) if (ArrColor) { CreateAndWrite('/Tmp/log.txt', ArrColor.join("")) - const file = new MessageAttachment('./Tmp/log.txt', 'result.txt') - interaction.followUp({ files: [file]}) + interaction.followUp({ files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}) } else if (!ArrColor) { interaction.followUp("No role have color") From da0be2e6f8e74ed95bb29fb3c3e6f758f3e49d81 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 8 Jun 2022 19:02:27 +0200 Subject: [PATCH 101/236] Better? --- commands/create.js | 2 ++ commands/get.js | 15 ++++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/commands/create.js b/commands/create.js index 1455985..0cf17cd 100644 --- a/commands/create.js +++ b/commands/create.js @@ -1,3 +1,4 @@ +/* const { SlashCommandBuilder } = require('@discordjs/builders') module.exports = { @@ -22,3 +23,4 @@ module.exports = { } } } +*/ \ No newline at end of file diff --git a/commands/get.js b/commands/get.js index b87b268..7b73a32 100644 --- a/commands/get.js +++ b/commands/get.js @@ -17,8 +17,8 @@ module.exports = { .addNumberOption(o => o .setName('size') .setDescription('At what size do you want the icon to be? (pixel)') - .setRequired(true) - .addChoices({name: '16',value: 16},{name: '32',value: 32},{name: '56',value: 56},{name: '64',value: 64},{name: '96',value: 96},{name: '128',value: 128},{name: '256',value: 256},{name: '300',value: 300},{name: '512',value: 512},{name: '600',value: 600},{name: '1024',value: 1024},{name: '2048',value: 2048},{name: '4096',value: 4096}))) + .addChoices({name: '16',value: 16},{name: '32',value: 32},{name: '56',value: 56},{name: '64',value: 64},{name: '96',value: 96},{name: '128',value: 128},{name: '256',value: 256},{name: '300',value: 300},{name: '512',value: 512},{name: '600',value: 600},{name: '1024',value: 1024},{name: '2048',value: 2048},{name: '4096',value: 4096}) + .setRequired(true))) .addSubcommand(sc => sc .setName('rcolor') .setDescription("Getting All Colors of All Roles") @@ -29,9 +29,9 @@ module.exports = { async execute(interaction) { await interaction.deferReply({ephemeral: true}) const sc = interaction.options.getSubcommand() - const guildRole = await interaction.guild.roles.fetch() if (sc === "ricon") { + const guildRole = await interaction.guild.roles.fetch() const format = interaction.options.getString("format") const size = interaction.options.getNumber("size") let ArrayURL = [] @@ -49,7 +49,7 @@ module.exports = { interaction.followUp({files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}) } else if (!ArrayURL) { - interaction.followUp("There is no role with an icon") + interaction.followUp("No role found with an icon") } } else if (sc === 'rcolor') { @@ -57,18 +57,19 @@ module.exports = { let ArrColor = [] guildRole.forEach(e => { + let name = e.name let color if (hex) color = e.hexColor else if (!hex) color = e.color - let name = e.name - if (color !== '#000000' || color !== 0) ArrColor.push(`${color} for ${name}\n`) + + if (color === String && color !== '#000000' || color === Number && color !== 0) ArrColor.push(`${color} for ${name}`) }) if (ArrColor) { CreateAndWrite('/Tmp/log.txt', ArrColor.join("")) interaction.followUp({ files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}) } else if (!ArrColor) { - interaction.followUp("No role have color") + interaction.followUp("No role found to have color") } } } From 361b0296ca96e1d5aec2a4f821773b747da5eb8e Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 8 Jun 2022 19:05:28 +0200 Subject: [PATCH 102/236] Whoops --- commands/create.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/commands/create.js b/commands/create.js index 0cf17cd..d4e1cff 100644 --- a/commands/create.js +++ b/commands/create.js @@ -1,4 +1,3 @@ -/* const { SlashCommandBuilder } = require('@discordjs/builders') module.exports = { @@ -9,6 +8,7 @@ module.exports = { .setName('name') .setDescription("The name of the channel you want to create")), async execute(interaction) { + /* let server = interaction.guild; let name = interaction.options.getString('name'); @@ -21,6 +21,7 @@ module.exports = { finally { interaction.reply("No error!") } + */ + interaction.reply("This command is *not* necessary, as it will just create a channel, if you want it, delete the \\* and *\\") } } -*/ \ No newline at end of file From ae7c7d20cc0aac9cce36ed86d2076579ee08dde6 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 8 Jun 2022 19:08:14 +0200 Subject: [PATCH 103/236] Better explanation --- commands/create.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/create.js b/commands/create.js index d4e1cff..916fa84 100644 --- a/commands/create.js +++ b/commands/create.js @@ -22,6 +22,6 @@ module.exports = { interaction.reply("No error!") } */ - interaction.reply("This command is *not* necessary, as it will just create a channel, if you want it, delete the \\* and *\\") + interaction.reply("This command is *not* necessary, as it will just create a channel, if you want it, delete the \\\\* and \\*\\ that are on the create.js file in the commands directory") } } From 85a49282180731203d405d79ef46f5d426fbbb17 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 8 Jun 2022 19:18:42 +0200 Subject: [PATCH 104/236] Better, way better to not calculate --- commands/slowmode.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/commands/slowmode.js b/commands/slowmode.js index 57390f0..7fdef35 100644 --- a/commands/slowmode.js +++ b/commands/slowmode.js @@ -29,6 +29,13 @@ module.exports = { const reason = interaction.options.getString('reason') || "No reason provided"; const replyEmbed = new MessageEmbed() let length = RealLen; + + if (RealLen === 0) { + channel.setRateLimitPerUser(length, reason); + replyEmbed.setDescription(`No slowmode set in ${channel} for "**${reason}**"`) + replyEmbed.setColor('#00FF00') + interaction.reply({ embeds: [replyEmbed]}) + } if (unit == "minutes") length = Math.floor(length * 60) else if (unit == "hours") length = Math.floor(length * 60 * 60) @@ -45,8 +52,8 @@ module.exports = { else if (reason !== "No reason provided") replyEmbed.setDescription(`Set **${RealLen} ${unit}** slowmode in ${channel} for "**${reason}**"`) interaction.reply(`Set **${RealLen} ${unit}** slowmode in ${channel} for "**${reason}**"`) } else if (channel.type === "GUILD_NEWS") { - replyEmbed.setDescription("No") - interaction.reply({embed: [replyEmbed]}) + replyEmbed.setDescription(`The specified channel (<#${channel.id}>) is a news channel, i do not want to set a slowmode there`) + interaction.reply({embed: [replyEmbed], ephemeral: true}) } else if (channel.type !== "GUILD_TEXT" && channel.type !== "GUILD_NEWS") { replyEmbed.setDescription(`The specified channel (<#${channel.id}>) isn't a text channel, I can't set a slowmode there.`) replyEmbed.setColor("#FF0000") From 90f7d8cc64310d30ab61d559f02775659a12692a Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 8 Jun 2022 22:02:55 +0200 Subject: [PATCH 105/236] Not useful but still --- commands/ban.js | 2 +- commands/kick.js | 2 +- commands/list.js | 100 ++++++++++++++++++++++++++++++++++++++++------- 3 files changed, 87 insertions(+), 17 deletions(-) diff --git a/commands/ban.js b/commands/ban.js index 6207f45..993c8fd 100644 --- a/commands/ban.js +++ b/commands/ban.js @@ -32,7 +32,7 @@ module.exports = { await guild.members.fetch(member) } - if (member.id = interaction.client.user.id) return interaction.reply("❌ Why would you ban me? 😢") + if (member.id === interaction.client.user.id) return interaction.reply("❌ Why would you ban me? 😢") const dmEmbed = new MessageEmbed() .setColor("#FF0000") diff --git a/commands/kick.js b/commands/kick.js index f6cb10f..caeb9a4 100644 --- a/commands/kick.js +++ b/commands/kick.js @@ -22,7 +22,7 @@ module.exports = { const reason = interaction.options.getString("reason") const replyEmbed = new MessageEmbed().setColor("#00FF00") - if (member.id = interaction.client.user.id) return interaction.reply("❌ Why would you kick me? 😢") + if (member.id === interaction.client.user.id) return interaction.reply("❌ Why would you kick me? 😢") if (!joke) { if (member.kickable) { diff --git a/commands/list.js b/commands/list.js index 4fd2ead..7b8de89 100644 --- a/commands/list.js +++ b/commands/list.js @@ -1,35 +1,41 @@ const { SlashCommandBuilder } = require('@discordjs/builders') +const { GuildMember } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() .setName('list') .setDescription("List bans and kicks and warns and stuff") - .addSubcommand(subcommand => subcommand + .addSubcommand(sc => sc .setName('warns') .setDescription('List warns') - .addUserOption(o => o + .addStringOption(o => o .setName("user") - .setDescription("The user to list warnings") - .setRequired(true))) + .setDescription("The user to list warnings (Id)"))) .addSubcommand(sc => sc .setName("bans") .setDescription('List bans') .addStringOption(o => o .setName("user") - .setDescription("The user to list bans (Id)") - .setRequired(true))) + .setDescription("The user to list bans (Id)"))) .addSubcommand(sc => sc .setName("kicks") .setDescription("List kicks") .addStringOption(o => o .setName("user") - .setDescription("The user to list kicks (Id)") - .setRequired(true))), + .setDescription("The user to list kicks (Id)"))), async execute(interaction) { const subcommand = interaction.options.getSubcommand() - if (subcommand == "warns") { - const user = interaction.options.getMember("user") - await interaction.deferReply() + if (subcommand === "warns") { + await interaction.deferReply({ ephemeral: true }) + let IdUser = interaction.options.getString("user") + + if (!user) { + user = interaction.member + if (!(user instanceof GuildMember)) { + await interaction.guild.members.fetch(IdUser) + } + } + db = interaction.client.db.Cases warnDB = await db.findAll({ where: { @@ -39,14 +45,78 @@ module.exports = { attributes: ['id', 'type', 'userID', 'reason', 'Executor'] }) let list = "" - for (let i = 0; i < warnDB.length; i++){ + for (let i = 0; i < warnDB.length; i++) { list += `${warnDB[i].reason} - *insert date here*\n` } console.log(list) if (list !== "") { - interaction.followUp({ content: list, ephemeral: true }) - } else { - interaction.followUp({ content: "There is no warn", ephemeral: true }) + interaction.followUp({ content: list }) + } + else if (list === "") { + interaction.followUp({ content: "There is no warn" }) + } + } + else if (subcommand === "bans") { + await interaction.deferReply({ ephemeral: true }) + let user = interaction.options.getMember("user") + if (!user) { + user = interaction.member + } + if (!(user instanceof GuildMember)) { + await interaction.guild.member.fetch(user) + } + + db = interaction.client.db.Cases + banDB = await db.findAll({ + where: { + userID: user.id, + type: "bans" + }, + attributes: ['id', 'type', 'userID', 'reason', 'Executor'] + }) + let list = "" + + for (let i = 0; i < warnDB.length; i++) { + list += `${warnDB[i].reason} - *insert date here*\n` + } + console.log(list) + if (list !== "") { + interaction.followUp({ content: list }) + } + else if (list === "") { + interaction.followUp({ content: "There is no warn" }) + } + } + else if (subcommand === "kicks") { + await interaction.deferReply({ ephemeral: true }) + let user = interaction.options.getString("user") + + if (!user) { + user = interaction.member + if (!(user instanceof GuildMember)) { + await interaction.guild.member.fetch(user) + } + } + + db = interaction.client.db.Cases + banDB = await db.findAll({ + where: { + userID: user.id, + type: "kick" + }, + attributes: ['id', 'type', 'userID', 'reason', 'Executor'] + }) + let list = "" + + for (let i = 0; i < warnDB.length; i++) { + list += `${warnDB[i].reason} - *insert date here*\n` + } + console.log(list) + if (list !== "") { + interaction.followUp({ content: list }) + } + else if (list === "") { + interaction.followUp({ content: "There is no warn" }) } } } From f593b5aeecbc276126b0033d7e53bb8226130515 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 8 Jun 2022 22:06:18 +0200 Subject: [PATCH 106/236] *Sigh* i forgot to make the change everywhere --- commands/list.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/commands/list.js b/commands/list.js index 7b8de89..476faa8 100644 --- a/commands/list.js +++ b/commands/list.js @@ -29,8 +29,8 @@ module.exports = { await interaction.deferReply({ ephemeral: true }) let IdUser = interaction.options.getString("user") - if (!user) { - user = interaction.member + if (!IdUser) { + IdUser = interaction.member if (!(user instanceof GuildMember)) { await interaction.guild.members.fetch(IdUser) } @@ -91,10 +91,10 @@ module.exports = { await interaction.deferReply({ ephemeral: true }) let user = interaction.options.getString("user") - if (!user) { - user = interaction.member - if (!(user instanceof GuildMember)) { - await interaction.guild.member.fetch(user) + if (!IdUser) { + IdUser = interaction.member + if (!(IdUser instanceof GuildMember)) { + await interaction.guild.member.fetch(IdUser) } } From 7a981930184d30540ca32d6bfbfa9f59753f7822 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 8 Jun 2022 22:07:28 +0200 Subject: [PATCH 107/236] *Sigh* Again... --- commands/list.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/list.js b/commands/list.js index 476faa8..4a2a894 100644 --- a/commands/list.js +++ b/commands/list.js @@ -31,7 +31,7 @@ module.exports = { if (!IdUser) { IdUser = interaction.member - if (!(user instanceof GuildMember)) { + if (!(IdUser instanceof GuildMember)) { await interaction.guild.members.fetch(IdUser) } } From cec8f0cee899596c62f4b355f3be0c818858919e Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 8 Jun 2022 22:08:44 +0200 Subject: [PATCH 108/236] I will never get them all at the same time uh --- commands/list.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/commands/list.js b/commands/list.js index 4a2a894..4a3542b 100644 --- a/commands/list.js +++ b/commands/list.js @@ -39,7 +39,7 @@ module.exports = { db = interaction.client.db.Cases warnDB = await db.findAll({ where: { - userID: user.id, + userID: IdUser.id, type: "warn" }, attributes: ['id', 'type', 'userID', 'reason', 'Executor'] @@ -101,7 +101,7 @@ module.exports = { db = interaction.client.db.Cases banDB = await db.findAll({ where: { - userID: user.id, + userID: IdUser.id, type: "kick" }, attributes: ['id', 'type', 'userID', 'reason', 'Executor'] From c3b48a08a0cd1859ea1be02ccc2bd9030bfeff71 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 8 Jun 2022 22:11:57 +0200 Subject: [PATCH 109/236] Uh --- commands/list.js | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/commands/list.js b/commands/list.js index 4a3542b..baabbab 100644 --- a/commands/list.js +++ b/commands/list.js @@ -27,7 +27,7 @@ module.exports = { const subcommand = interaction.options.getSubcommand() if (subcommand === "warns") { await interaction.deferReply({ ephemeral: true }) - let IdUser = interaction.options.getString("user") + let IdUser = { id: interaction.options.getString("user") } if (!IdUser) { IdUser = interaction.member @@ -58,18 +58,16 @@ module.exports = { } else if (subcommand === "bans") { await interaction.deferReply({ ephemeral: true }) - let user = interaction.options.getMember("user") - if (!user) { - user = interaction.member - } - if (!(user instanceof GuildMember)) { - await interaction.guild.member.fetch(user) + let IdUser = { id: interaction.options.getString("user")} + + if (!IdUser) { + IdUser = interaction.member } db = interaction.client.db.Cases banDB = await db.findAll({ where: { - userID: user.id, + userID: IdUser.id, type: "bans" }, attributes: ['id', 'type', 'userID', 'reason', 'Executor'] @@ -89,7 +87,7 @@ module.exports = { } else if (subcommand === "kicks") { await interaction.deferReply({ ephemeral: true }) - let user = interaction.options.getString("user") + let IdUser = { id: interaction.options.getString("user") } if (!IdUser) { IdUser = interaction.member From dbee807b23e157277605fe705b04831bc52af031 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 8 Jun 2022 22:22:08 +0200 Subject: [PATCH 110/236] ummmmmmmmm --- commands/list.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/commands/list.js b/commands/list.js index baabbab..dcc0ec6 100644 --- a/commands/list.js +++ b/commands/list.js @@ -30,10 +30,7 @@ module.exports = { let IdUser = { id: interaction.options.getString("user") } if (!IdUser) { - IdUser = interaction.member - if (!(IdUser instanceof GuildMember)) { - await interaction.guild.members.fetch(IdUser) - } + IdUser = interaction.user.id } db = interaction.client.db.Cases From 5a618e2b98a0d2262fb8f51a027d62f9fbb8b65a Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 8 Jun 2022 22:25:51 +0200 Subject: [PATCH 111/236] There you go --- commands/list.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/list.js b/commands/list.js index dcc0ec6..ec4c5b7 100644 --- a/commands/list.js +++ b/commands/list.js @@ -30,7 +30,7 @@ module.exports = { let IdUser = { id: interaction.options.getString("user") } if (!IdUser) { - IdUser = interaction.user.id + IdUser = interaction.user } db = interaction.client.db.Cases From 99e7ae3de5dd0a19fa005f52ab55ff0a8b1f2d23 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 8 Jun 2022 22:29:29 +0200 Subject: [PATCH 112/236] *Should* work --- commands/list.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/commands/list.js b/commands/list.js index ec4c5b7..553f7a8 100644 --- a/commands/list.js +++ b/commands/list.js @@ -30,7 +30,7 @@ module.exports = { let IdUser = { id: interaction.options.getString("user") } if (!IdUser) { - IdUser = interaction.user + IdUser = { id: interaction.user.id } } db = interaction.client.db.Cases @@ -58,7 +58,7 @@ module.exports = { let IdUser = { id: interaction.options.getString("user")} if (!IdUser) { - IdUser = interaction.member + IdUser = { id: interaction.user.id } } db = interaction.client.db.Cases @@ -87,10 +87,7 @@ module.exports = { let IdUser = { id: interaction.options.getString("user") } if (!IdUser) { - IdUser = interaction.member - if (!(IdUser instanceof GuildMember)) { - await interaction.guild.member.fetch(IdUser) - } + IdUser = { id: interaction.user.id } } db = interaction.client.db.Cases From 04c512244d12eecf6764bc14caed2a360512cdb1 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 8 Jun 2022 22:31:49 +0200 Subject: [PATCH 113/236] Should be even better (if it was working, not like the last one --- commands/list.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/commands/list.js b/commands/list.js index 553f7a8..1fcdedc 100644 --- a/commands/list.js +++ b/commands/list.js @@ -27,16 +27,16 @@ module.exports = { const subcommand = interaction.options.getSubcommand() if (subcommand === "warns") { await interaction.deferReply({ ephemeral: true }) - let IdUser = { id: interaction.options.getString("user") } + let IdUser = interaction.options.getString("user") if (!IdUser) { - IdUser = { id: interaction.user.id } + IdUser = interaction.user.id } db = interaction.client.db.Cases warnDB = await db.findAll({ where: { - userID: IdUser.id, + userID: IdUser, type: "warn" }, attributes: ['id', 'type', 'userID', 'reason', 'Executor'] @@ -55,16 +55,16 @@ module.exports = { } else if (subcommand === "bans") { await interaction.deferReply({ ephemeral: true }) - let IdUser = { id: interaction.options.getString("user")} + let IdUser = interaction.options.getString("user") if (!IdUser) { - IdUser = { id: interaction.user.id } + IdUser = interaction.user.id } db = interaction.client.db.Cases banDB = await db.findAll({ where: { - userID: IdUser.id, + userID: IdUser, type: "bans" }, attributes: ['id', 'type', 'userID', 'reason', 'Executor'] @@ -84,16 +84,16 @@ module.exports = { } else if (subcommand === "kicks") { await interaction.deferReply({ ephemeral: true }) - let IdUser = { id: interaction.options.getString("user") } + let IdUser = interaction.options.getString("user") if (!IdUser) { - IdUser = { id: interaction.user.id } + IdUser = interaction.user.id } db = interaction.client.db.Cases banDB = await db.findAll({ where: { - userID: IdUser.id, + userID: IdUser, type: "kick" }, attributes: ['id', 'type', 'userID', 'reason', 'Executor'] From 47ef5c05a6cdc623c2537117898095f6db9192b9 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 12 Jun 2022 20:18:57 +0200 Subject: [PATCH 114/236] Trying to get luihum to fix this... --- Util/database.js | 2 ++ event/messageReact.js | 16 ++++++++++++++++ main.js | 32 ++++++++++++++++++-------------- 3 files changed, 36 insertions(+), 14 deletions(-) create mode 100644 event/messageReact.js diff --git a/Util/database.js b/Util/database.js index 5367f67..7e58bff 100644 --- a/Util/database.js +++ b/Util/database.js @@ -1,5 +1,7 @@ const Sequelize = require('sequelize'); +const { sqlPass } = require('../config.json') +// Once the database system will be changed, even minor change, pls change the 'password' entry to sqlPass const sequelize = new Sequelize('database', 'user', 'password', { host: 'localhost', dialect: 'sqlite', diff --git a/event/messageReact.js b/event/messageReact.js new file mode 100644 index 0000000..c4dcb47 --- /dev/null +++ b/event/messageReact.js @@ -0,0 +1,16 @@ + +async function add(reaction, user) { + console.log("add function executed") + if (user.id === user.client.id) return; + + reaction.message.channel.send(`you reacted with ${reaction.emoji}`) +} + +async function remove(reaction, user) { + console.log("remove function executed") + if (user.id === user.client.id) return; + + reaction.message.channel.send(`you deleted ${reaction.emoji}`) +} + +module.exports = {add, remove} \ No newline at end of file diff --git a/main.js b/main.js index e43ceab..c600a50 100644 --- a/main.js +++ b/main.js @@ -1,19 +1,15 @@ const fs = require('node:fs'); const path = require('node:path'); -const Sequelize = require('sequelize') const { Client, Collection } = require('discord.js'); -const { token, sqlPass } = require('./config.json'); +const { add } = require('./event/messageReact.js'); +const { token } = require('./config.json'); -client = new Client({intents: 0, presence: {status: 'idle'}}); +// intent 1024 allow to see messageReactionAdd and Remove events +client = new Client({intents: 1024, partials: ['MESSAGE', 'REACTION', 'USER'], presence: {status: 'idle'}}); -const sequelize = new Sequelize('database', 'user', sqlPass, { - host: 'localhost', - dialect: 'sqlite', - logging: false, - storage: 'database.sqlite', -}); -client.db = require('./Util/database') +client.db = require('./Util/database'); +// initiation of all slash commands client.commands = new Collection(); const commandsPath = path.join(__dirname, 'commands'); const commandFiles = fs.readdirSync(commandsPath).filter(file => file.endsWith('.js')); @@ -24,12 +20,20 @@ for (const file of commandFiles) { client.commands.set(command.data.name, command); } - client.once('ready', () => { client.db.Cases.sync() console.log(`Login as ${client.user.tag}`); }) +client.on("messageReactionAdd", async (reaction, user) => { + + try { + add(reaction, user); + } + catch (err) { + console.error(err); + } +}) client.on("interactionCreate", async interaction => { if (!interaction.isCommand()) return; @@ -40,9 +44,9 @@ client.on("interactionCreate", async interaction => { try { await command.execute(interaction); - } catch (error) { - console.error(error); - await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true }) + } catch (err) { + console.error(err); + await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true }); } }) From 10d74a4b9e6ba86f5dc469ee9d4934ad024b5c49 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 26 Jun 2022 11:25:28 +0200 Subject: [PATCH 115/236] Big commit --- Util/database.js | 1 + Util/someFun.js | 8 +- commands/get.js | 10 +- commands/info.js | 62 ++++++++ commands/list.js | 29 +++- config.json.template | 9 +- main.js | 19 +-- package-lock.json | 340 +++++++++++++++++++++++-------------------- package.json | 6 +- 9 files changed, 293 insertions(+), 191 deletions(-) create mode 100644 commands/info.js diff --git a/Util/database.js b/Util/database.js index 5367f67..8bd25ff 100644 --- a/Util/database.js +++ b/Util/database.js @@ -20,4 +20,5 @@ const Cases = sequelize.define('cases', { type: Sequelize.STRING, } }); + module.exports = { Cases } \ No newline at end of file diff --git a/Util/someFun.js b/Util/someFun.js index 4f48c0a..01c756c 100644 --- a/Util/someFun.js +++ b/Util/someFun.js @@ -7,10 +7,4 @@ function CreateAndWrite(path2, data) { }) } -function ReadFile(path2) { - fs.readFile(Path.join(__dirname, '/..', path2), err => { - if (err) throw err - }) -} - -module.exports = { CreateAndWrite, ReadFile } \ No newline at end of file +module.exports = { CreateAndWrite } \ No newline at end of file diff --git a/commands/get.js b/commands/get.js index 7b73a32..86fd827 100644 --- a/commands/get.js +++ b/commands/get.js @@ -1,6 +1,6 @@ const { SlashCommandBuilder } = require('@discordjs/builders') const { MessageAttachment } = require('discord.js') -const { CreateAndWrite, ReadFile } = require('../Util/someFun.js') +const { CreateAndWrite } = require('../Util/someFun.js') module.exports = { data: new SlashCommandBuilder() @@ -31,21 +31,21 @@ module.exports = { const sc = interaction.options.getSubcommand() if (sc === "ricon") { - const guildRole = await interaction.guild.roles.fetch() + const guildRoles = await interaction.guild.roles.fetch() const format = interaction.options.getString("format") const size = interaction.options.getNumber("size") let ArrayURL = [] - guildRole.forEach(e => { + guildRoles.forEach(e => { if (e.iconURL()) { let icon = e.iconURL({ format: format, size: size }) let name = e.name - ArrayURL.push(`${icon} for ${name}\n`) + ArrayURL.push(`${icon} for ${name}`) } }); if (ArrayURL) { - CreateAndWrite('/Tmp/log.txt', ArrayURL.join("")) + CreateAndWrite('/Tmp/log.txt', ArrayURL.join("\n")) interaction.followUp({files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}) } else if (!ArrayURL) { diff --git a/commands/info.js b/commands/info.js new file mode 100644 index 0000000..8399ee5 --- /dev/null +++ b/commands/info.js @@ -0,0 +1,62 @@ +const { SlashCommandBuilder } = require("@discordjs/builders") +const { GuildMember, MessageEmbed } = require("discord.js") + +module.exports = { + data: new SlashCommandBuilder() + .setName("info") + .setDescription("Get information about something") + .addSubcommand(sc => sc + .setName("server") + .setDescription("Get Information about the server")) + .addSubcommand(sc => sc + .setName("user") + .setDescription("Get information about a user") + .addUserOption(o => o + .setName("user") + .setDescription("The user to get information") + .setRequired(true))), + async execute(interaction) { + const sc = interaction.options.getSubcommand() + const replyEmbed = new MessageEmbed() + + if (sc === "user") { + const member = interaction.options.getMember("user") + + if (!(member instanceof GuildMember)) { + await interaction.guild.members.fetch(member) + } + + replyEmbed.setColor("") + } + else if (sc === "server") { + const guild = interaction.guild; + await guild.fetch() + + let owner = await guild.fetchOwner() + let threads = await guild.channels.fetchActiveThreads() + let voiceCollection = await guild.channels.fetch() + let v = 0 + for (vc in voiceCollection) { + if (vc.type === 2) { + v=v+1 + } + } + + let member = await guild.members.fetch() + + + if (guild.iconURL) {replyEmbed.setThumbnail(guild.iconURL({ format: "png", size: 4096 }))} + replyEmbed.setColor(`#${Math.floor(Math.random()*16777215).toString(16)}`) + replyEmbed.addFields( + {name: "**Owner**", value: owner.user.tag, inline: true}, + {name: "**Active Treads**", value: threads.threads.size, inline: true}, + {name: "**Text channels**", value: guild.channels.channelCountWithoutThreads, inline: true}, + {name: "**Voice channels**", value: 5}, + {name: "**Members**", value: member.size, inline: true}, + {name: "**Roles**", value: 5, inline: true}, + ); + + await interaction.reply({ embeds: [replyEmbed], ephemeral: true}); + } + } +} \ No newline at end of file diff --git a/commands/list.js b/commands/list.js index 1fcdedc..f9497e0 100644 --- a/commands/list.js +++ b/commands/list.js @@ -1,5 +1,5 @@ -const { SlashCommandBuilder } = require('@discordjs/builders') -const { GuildMember } = require('discord.js'); +const { SlashCommandBuilder } = require('@discordjs/builders'); +const { User, Permissions } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() @@ -28,8 +28,15 @@ module.exports = { if (subcommand === "warns") { await interaction.deferReply({ ephemeral: true }) let IdUser = interaction.options.getString("user") + let UserExecutor = interaction.user - if (!IdUser) { + if (IdUser) { + let permV = await interaction.guild.members.fetch(UserExecutor) + if (!permV.permissions.FLAGS.has(Permissions.FLAGS.KICK_MEMBERS)) { + return interaction.reply("I'm sorry Dave, but i'm afraied i can't do that\nYou do not have the permission to do that") + } + } + else if (!IdUser) { IdUser = interaction.user.id } @@ -57,7 +64,13 @@ module.exports = { await interaction.deferReply({ ephemeral: true }) let IdUser = interaction.options.getString("user") - if (!IdUser) { + if (IdUser) { + let permV = await interaction.guild.members.fetch(UserExecutor) + if (!permV.permissions.FLAGS.has(Permissions.FLAGS.BAN_MEMBERS)) { + return interaction.reply("I'm sorry Dave, but i'm afraied i can't do that\nYou do not have the permission to do that") + } + } + else if (!IdUser) { IdUser = interaction.user.id } @@ -86,7 +99,13 @@ module.exports = { await interaction.deferReply({ ephemeral: true }) let IdUser = interaction.options.getString("user") - if (!IdUser) { + if (IdUser) { + let permV = await interaction.guild.members.fetch(UserExecutor) + if (!permV.permissions.FLAGS.has(Permissions.FLAGS.KICK_MEMBERS)) { + return interaction.reply("I'm sorry Dave, but i'm afraied i can't do that\nYou do not have the permission to do that") + } + } + else if (!IdUser) { IdUser = interaction.user.id } diff --git a/config.json.template b/config.json.template index bcfc624..01f93ff 100644 --- a/config.json.template +++ b/config.json.template @@ -1,6 +1,7 @@ { - "token":"", - "clientId":"", - "guildId":"", - "sqlPass":"" + "Token":"The token of the bot", + "clienTId":"The id of the bot", + "guildId":"The id of the discord server", + "sqlPass":"A password, can be empty", + "logcha":"The id of a log channel" } \ No newline at end of file diff --git a/main.js b/main.js index e43ceab..6238810 100644 --- a/main.js +++ b/main.js @@ -1,17 +1,9 @@ const fs = require('node:fs'); const path = require('node:path'); -const Sequelize = require('sequelize') const { Client, Collection } = require('discord.js'); -const { token, sqlPass } = require('./config.json'); +const { token } = require('./config.json'); -client = new Client({intents: 0, presence: {status: 'idle'}}); - -const sequelize = new Sequelize('database', 'user', sqlPass, { - host: 'localhost', - dialect: 'sqlite', - logging: false, - storage: 'database.sqlite', -}); +client = new Client({intents: 2, presence: {status: 'idle'}}); client.db = require('./Util/database') client.commands = new Collection(); @@ -24,7 +16,6 @@ for (const file of commandFiles) { client.commands.set(command.data.name, command); } - client.once('ready', () => { client.db.Cases.sync() console.log(`Login as ${client.user.tag}`); @@ -42,7 +33,11 @@ client.on("interactionCreate", async interaction => { await command.execute(interaction); } catch (error) { console.error(error); - await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true }) + if (!(interaction.replied)) { + await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true }) + } else { + await interaction.followUp({ content: 'There was an error while executing this command!', ephemeral: true }) + } } }) diff --git a/package-lock.json b/package-lock.json index 6c66c6c..3cb1efd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,9 +42,9 @@ "integrity": "sha512-gpzXTvFVg7AjKVVJFH0oJGC0q0tO34iJGSHZNz9u3aqLxlD6LfxEs9wWVVikJqn9gra940oUTaPFizCkRDcEiA==" }, "node_modules/@discordjs/collection": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.6.0.tgz", - "integrity": "sha512-Ieaetb36l0nmAS5X9Upqk4W7euAO6FdXPxn3I8vBAKEcoIzEZI1mcVcPfCfagGJZSgBKpENnAnKkP4GAn+MV8w==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.7.0.tgz", + "integrity": "sha512-R5i8Wb8kIcBAFEPLLf7LVBQKBDYUL+ekb23sOgpkpyGT+V4P7V83wTxcsqmX+PbqHt4cEHn053uMWfRqh/Z/nA==", "engines": { "node": ">=16.9.0" } @@ -67,29 +67,21 @@ "node": ">=16.9.0" } }, - "node_modules/@discordjs/rest/node_modules/@discordjs/collection": { - "version": "0.7.0-dev.1652702622-5e9b757", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.7.0-dev.1652702622-5e9b757.tgz", - "integrity": "sha512-846Aq5V/diKb5dHNGMOd67PR4L2V0ZJOb7UiDguO/nHHnraPuu8XknYMF46P8ElA7gXMX/nq83gd6eDBHoJXvA==", - "engines": { - "node": ">=16.9.0" - } - }, "node_modules/@discordjs/rest/node_modules/discord-api-types": { "version": "0.29.0", "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.29.0.tgz", "integrity": "sha512-Ekq1ICNpOTVajXKZguNFrsDeTmam+ZeA38txsNLZnANdXUjU6QBPIZLUQTC6MzigFGb0Tt8vk4xLnXmzv0shNg==" }, "node_modules/@eslint/eslintrc": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz", - "integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.3.2", - "globals": "^13.9.0", + "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -229,14 +221,14 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "node_modules/@types/node": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.33.tgz", - "integrity": "sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ==" + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.0.tgz", + "integrity": "sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==" }, "node_modules/@types/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", + "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", "dependencies": { "@types/node": "*", "form-data": "^3.0.0" @@ -256,9 +248,9 @@ } }, "node_modules/@types/validator": { - "version": "13.7.2", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.2.tgz", - "integrity": "sha512-KFcchQ3h0OPQgFirBRPZr5F/sVjxZsOrQHedj3zi8AH3Zv/hOLx2OLR4hxR5HcfoU+33n69ZuOfzthKVdMoTiw==" + "version": "13.7.3", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.3.tgz", + "integrity": "sha512-DNviAE5OUcZ5s+XEQHRhERLg8fOp8gSgvyJ4aaFASx5wwaObm+PBwTIMXiOFm1QrSee5oYwEAYb7LMzX2O88gA==" }, "node_modules/@types/ws": { "version": "8.5.3", @@ -397,7 +389,7 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/balanced-match": { "version": "1.0.2", @@ -524,12 +516,12 @@ "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=" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "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=" + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" }, "node_modules/cross-spawn": { "version": "7.0.3", @@ -570,7 +562,7 @@ "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=", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "engines": { "node": ">=0.4.0" } @@ -578,12 +570,12 @@ "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" }, "node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "optional": true, "engines": { "node": ">= 0.6" @@ -603,29 +595,54 @@ "integrity": "sha512-RS1dMM6xuMhdHwQJ0T+XuCD7v1tKnyZ89Eq6q/DbOJWMbIh3ihgAzDhcF70QsFCtk9a5Gn9XU29S7eoEXuwQ5w==" }, "node_modules/discord.js": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.7.0.tgz", - "integrity": "sha512-iV/An3FEB/CiBGdjWHRtgskM4UuWPq5vjhjKsrQhdVU16dbKrBxA+eIV2HWA07B3tXUGM6eco1wkr42gxxV1BA==", + "version": "13.8.1", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.8.1.tgz", + "integrity": "sha512-jOsD+4tEZWWx0RHVyH+FBcqoTrsL+d5Mm5p+ULQOdU0qSaxhLNkWYig+yDHNZoND7nlkXX3qi+BW+gO5erWylg==", "dependencies": { - "@discordjs/builders": "^0.13.0", - "@discordjs/collection": "^0.6.0", + "@discordjs/builders": "^0.14.0", + "@discordjs/collection": "^0.7.0", "@sapphire/async-queue": "^1.3.1", "@types/node-fetch": "^2.6.1", "@types/ws": "^8.5.3", - "discord-api-types": "^0.30.0", + "discord-api-types": "^0.33.3", "form-data": "^4.0.0", "node-fetch": "^2.6.1", - "ws": "^8.6.0" + "ws": "^8.7.0" }, "engines": { "node": ">=16.6.0", "npm": ">=7.0.0" } }, + "node_modules/discord.js/node_modules/@discordjs/builders": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.14.0.tgz", + "integrity": "sha512-+fqLIqa9wN3R+kvlld8sgG0nt04BAZxdCDP4t2qZ9TJsquLWA+xMtT8Waibb3d4li4AQS+IOfjiHAznv/dhHgQ==", + "dependencies": { + "@sapphire/shapeshift": "^3.1.0", + "@sindresorhus/is": "^4.6.0", + "discord-api-types": "^0.33.3", + "fast-deep-equal": "^3.1.3", + "ts-mixer": "^6.0.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/discord.js/node_modules/@sapphire/shapeshift": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.3.1.tgz", + "integrity": "sha512-PB2e5JHWIMRz9HiN/sIWcNIzXjYvzc3OmeRHYICXreKhetDYf4Zufypr8A48Z/XZLzbMqIka6uoR+2dH58nksg==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, "node_modules/discord.js/node_modules/discord-api-types": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.30.0.tgz", - "integrity": "sha512-wYst0jrT8EJs2tVlwUTQ2xT0oWMjUrRMpFTkNY3NMleWyQNHgWaKhqFfxdLPdC2im9IuR5EsxcEgjhf/npeftw==" + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.5.tgz", + "integrity": "sha512-dvO5M52v7m7Dy96+XUnzXNsQ/0npsYpU6dL205kAtEDueswoz3aU3bh1UMoK4cQmcGtB1YRyLKqp+DXi05lzFg==" }, "node_modules/doctrine": { "version": "3.0.0", @@ -686,12 +703,12 @@ } }, "node_modules/eslint": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz", - "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.18.0.tgz", + "integrity": "sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.2.3", + "@eslint/eslintrc": "^1.3.0", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -709,7 +726,7 @@ "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", - "globals": "^13.6.0", + "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -856,7 +873,7 @@ "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=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, "node_modules/file-entry-cache": { @@ -917,12 +934,12 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "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=", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", "dev": true }, "node_modules/gauge": { @@ -1008,7 +1025,7 @@ "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=" + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, "node_modules/http-cache-semantics": { "version": "4.1.0", @@ -1045,7 +1062,7 @@ "node_modules/humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "optional": true, "dependencies": { "ms": "^2.0.0" @@ -1091,7 +1108,7 @@ "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "devOptional": true, "engines": { "node": ">=0.8.19" @@ -1123,7 +1140,7 @@ "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -1143,7 +1160,7 @@ "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=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -1172,13 +1189,13 @@ "node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "optional": true }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "devOptional": true }, "node_modules/js-yaml": { @@ -1202,7 +1219,7 @@ "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=", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "node_modules/levn": { @@ -1320,9 +1337,9 @@ } }, "node_modules/minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.3.tgz", + "integrity": "sha512-N0BOsdFAlNRfmwMhjAsLVWOk7Ljmeb39iqFlsV1At+jqRhSUP9yeof8FyJu4imaJiSUp8vQebWD/guZwGQC8iA==", "dependencies": { "yallist": "^4.0.0" }, @@ -1445,7 +1462,7 @@ "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=", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, "node_modules/negotiator": { @@ -1580,7 +1597,7 @@ "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=", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "engines": { "node": ">=0.10.0" } @@ -1588,7 +1605,7 @@ "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dependencies": { "wrappy": "1" } @@ -1640,7 +1657,7 @@ "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=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "engines": { "node": ">=0.10.0" } @@ -1671,7 +1688,7 @@ "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "optional": true }, "node_modules/promise-retry": { @@ -1733,7 +1750,7 @@ "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "optional": true, "engines": { "node": ">= 4" @@ -1866,7 +1883,7 @@ "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=" + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "node_modules/shebang-command": { "version": "2.0.0", @@ -1919,9 +1936,9 @@ } }, "node_modules/socks-proxy-agent": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz", - "integrity": "sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", "optional": true, "dependencies": { "agent-base": "^6.0.2", @@ -2041,18 +2058,18 @@ "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=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "node_modules/toposort-class": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", - "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" + "integrity": "sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==" }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/ts-mixer": { "version": "6.0.1", @@ -2118,7 +2135,7 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/uuid": { "version": "8.3.2", @@ -2145,12 +2162,12 @@ "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -2199,12 +2216,12 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", - "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", + "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", "engines": { "node": ">=10.0.0" }, @@ -2249,9 +2266,9 @@ } }, "@discordjs/collection": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.6.0.tgz", - "integrity": "sha512-Ieaetb36l0nmAS5X9Upqk4W7euAO6FdXPxn3I8vBAKEcoIzEZI1mcVcPfCfagGJZSgBKpENnAnKkP4GAn+MV8w==" + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.7.0.tgz", + "integrity": "sha512-R5i8Wb8kIcBAFEPLLf7LVBQKBDYUL+ekb23sOgpkpyGT+V4P7V83wTxcsqmX+PbqHt4cEHn053uMWfRqh/Z/nA==" }, "@discordjs/rest": { "version": "0.4.1", @@ -2268,11 +2285,6 @@ "tslib": "^2.3.1" }, "dependencies": { - "@discordjs/collection": { - "version": "0.7.0-dev.1652702622-5e9b757", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.7.0-dev.1652702622-5e9b757.tgz", - "integrity": "sha512-846Aq5V/diKb5dHNGMOd67PR4L2V0ZJOb7UiDguO/nHHnraPuu8XknYMF46P8ElA7gXMX/nq83gd6eDBHoJXvA==" - }, "discord-api-types": { "version": "0.29.0", "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.29.0.tgz", @@ -2281,15 +2293,15 @@ } }, "@eslint/eslintrc": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz", - "integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.3.2", - "globals": "^13.9.0", + "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -2396,14 +2408,14 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "@types/node": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.33.tgz", - "integrity": "sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ==" + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.0.tgz", + "integrity": "sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==" }, "@types/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", + "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", "requires": { "@types/node": "*", "form-data": "^3.0.0" @@ -2422,9 +2434,9 @@ } }, "@types/validator": { - "version": "13.7.2", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.2.tgz", - "integrity": "sha512-KFcchQ3h0OPQgFirBRPZr5F/sVjxZsOrQHedj3zi8AH3Zv/hOLx2OLR4hxR5HcfoU+33n69ZuOfzthKVdMoTiw==" + "version": "13.7.3", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.3.tgz", + "integrity": "sha512-DNviAE5OUcZ5s+XEQHRhERLg8fOp8gSgvyJ4aaFASx5wwaObm+PBwTIMXiOFm1QrSee5oYwEAYb7LMzX2O88gA==" }, "@types/ws": { "version": "8.5.3", @@ -2530,7 +2542,7 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "balanced-match": { "version": "1.0.2", @@ -2630,12 +2642,12 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "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=" + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" }, "cross-spawn": { "version": "7.0.3", @@ -2665,17 +2677,17 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "optional": true }, "detect-libc": { @@ -2689,25 +2701,43 @@ "integrity": "sha512-RS1dMM6xuMhdHwQJ0T+XuCD7v1tKnyZ89Eq6q/DbOJWMbIh3ihgAzDhcF70QsFCtk9a5Gn9XU29S7eoEXuwQ5w==" }, "discord.js": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.7.0.tgz", - "integrity": "sha512-iV/An3FEB/CiBGdjWHRtgskM4UuWPq5vjhjKsrQhdVU16dbKrBxA+eIV2HWA07B3tXUGM6eco1wkr42gxxV1BA==", + "version": "13.8.1", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.8.1.tgz", + "integrity": "sha512-jOsD+4tEZWWx0RHVyH+FBcqoTrsL+d5Mm5p+ULQOdU0qSaxhLNkWYig+yDHNZoND7nlkXX3qi+BW+gO5erWylg==", "requires": { - "@discordjs/builders": "^0.13.0", - "@discordjs/collection": "^0.6.0", + "@discordjs/builders": "^0.14.0", + "@discordjs/collection": "^0.7.0", "@sapphire/async-queue": "^1.3.1", "@types/node-fetch": "^2.6.1", "@types/ws": "^8.5.3", - "discord-api-types": "^0.30.0", + "discord-api-types": "^0.33.3", "form-data": "^4.0.0", "node-fetch": "^2.6.1", - "ws": "^8.6.0" + "ws": "^8.7.0" }, "dependencies": { + "@discordjs/builders": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.14.0.tgz", + "integrity": "sha512-+fqLIqa9wN3R+kvlld8sgG0nt04BAZxdCDP4t2qZ9TJsquLWA+xMtT8Waibb3d4li4AQS+IOfjiHAznv/dhHgQ==", + "requires": { + "@sapphire/shapeshift": "^3.1.0", + "@sindresorhus/is": "^4.6.0", + "discord-api-types": "^0.33.3", + "fast-deep-equal": "^3.1.3", + "ts-mixer": "^6.0.1", + "tslib": "^2.4.0" + } + }, + "@sapphire/shapeshift": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.3.1.tgz", + "integrity": "sha512-PB2e5JHWIMRz9HiN/sIWcNIzXjYvzc3OmeRHYICXreKhetDYf4Zufypr8A48Z/XZLzbMqIka6uoR+2dH58nksg==" + }, "discord-api-types": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.30.0.tgz", - "integrity": "sha512-wYst0jrT8EJs2tVlwUTQ2xT0oWMjUrRMpFTkNY3NMleWyQNHgWaKhqFfxdLPdC2im9IuR5EsxcEgjhf/npeftw==" + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.5.tgz", + "integrity": "sha512-dvO5M52v7m7Dy96+XUnzXNsQ/0npsYpU6dL205kAtEDueswoz3aU3bh1UMoK4cQmcGtB1YRyLKqp+DXi05lzFg==" } } }, @@ -2758,12 +2788,12 @@ "dev": true }, "eslint": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz", - "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.18.0.tgz", + "integrity": "sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.2.3", + "@eslint/eslintrc": "^1.3.0", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -2781,7 +2811,7 @@ "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", - "globals": "^13.6.0", + "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -2888,7 +2918,7 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, "file-entry-cache": { @@ -2937,12 +2967,12 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "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=", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", "dev": true }, "gauge": { @@ -3007,7 +3037,7 @@ "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, "http-cache-semantics": { "version": "4.1.0", @@ -3038,7 +3068,7 @@ "humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "optional": true, "requires": { "ms": "^2.0.0" @@ -3072,7 +3102,7 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "devOptional": true }, "indent-string": { @@ -3095,7 +3125,7 @@ "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "requires": { "once": "^1.3.0", "wrappy": "1" @@ -3115,7 +3145,7 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, "is-fullwidth-code-point": { @@ -3135,13 +3165,13 @@ "is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "optional": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "devOptional": true }, "js-yaml": { @@ -3162,7 +3192,7 @@ "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=", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "levn": { @@ -3255,9 +3285,9 @@ } }, "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.3.tgz", + "integrity": "sha512-N0BOsdFAlNRfmwMhjAsLVWOk7Ljmeb39iqFlsV1At+jqRhSUP9yeof8FyJu4imaJiSUp8vQebWD/guZwGQC8iA==", "requires": { "yallist": "^4.0.0" } @@ -3345,7 +3375,7 @@ "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, "negotiator": { @@ -3447,12 +3477,12 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "requires": { "wrappy": "1" } @@ -3492,7 +3522,7 @@ "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=" + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, "path-key": { "version": "3.1.1", @@ -3514,7 +3544,7 @@ "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "optional": true }, "promise-retry": { @@ -3558,7 +3588,7 @@ "retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "optional": true }, "retry-as-promised": { @@ -3624,7 +3654,7 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "shebang-command": { "version": "2.0.0", @@ -3663,9 +3693,9 @@ } }, "socks-proxy-agent": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz", - "integrity": "sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", "optional": true, "requires": { "agent-base": "^6.0.2", @@ -3750,18 +3780,18 @@ "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "toposort-class": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", - "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" + "integrity": "sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==" }, "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "ts-mixer": { "version": "6.0.1", @@ -3818,7 +3848,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "uuid": { "version": "8.3.2", @@ -3839,12 +3869,12 @@ "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "requires": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -3884,12 +3914,12 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "ws": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", - "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", + "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", "requires": {} }, "yallist": { diff --git a/package.json b/package.json index d8585a1..2bbeeb8 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,10 @@ { - "name": "progressbar-ruler", + "name": "processes", "version": "1.0.0", "description": "", "main": "main.js", "scripts": { - "test": "node main.js" + "start": "node main.js" }, "keywords": [], "author": "5jiji", @@ -13,7 +13,7 @@ "@discordjs/builders": "0.13.0", "@discordjs/rest": "0.4.1", "discord-api-types": "0.33.0", - "discord.js": "^13.7.0", + "discord.js": "^13.8.1", "sequelize": "6.19.1", "sqlite3": "^5.0.8" }, From b4d15aa57109710c4aeea7ca012874572e3260fa Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 26 Jun 2022 16:13:41 +0200 Subject: [PATCH 116/236] New Command! --- commands/info.js | 59 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 18 deletions(-) diff --git a/commands/info.js b/commands/info.js index 8399ee5..1e0ba0f 100644 --- a/commands/info.js +++ b/commands/info.js @@ -7,14 +7,14 @@ module.exports = { .setDescription("Get information about something") .addSubcommand(sc => sc .setName("server") - .setDescription("Get Information about the server")) - .addSubcommand(sc => sc + .setDescription("Get Information about the server")), + /*.addSubcommand(sc => sc .setName("user") .setDescription("Get information about a user") .addUserOption(o => o .setName("user") .setDescription("The user to get information") - .setRequired(true))), + .setRequired(true))),*/ async execute(interaction) { const sc = interaction.options.getSubcommand() const replyEmbed = new MessageEmbed() @@ -31,29 +31,52 @@ module.exports = { else if (sc === "server") { const guild = interaction.guild; await guild.fetch() - + let owner = await guild.fetchOwner() let threads = await guild.channels.fetchActiveThreads() - let voiceCollection = await guild.channels.fetch() - let v = 0 - for (vc in voiceCollection) { - if (vc.type === 2) { - v=v+1 + let channelCollection = await guild.channels.fetch() + let member = await guild.members.fetch() + + let voice = 0 + let text = 0 + channelCollection.forEach(e => { + if (e.type === "GUILD_VOICE") { + voice=voice+1 } - } + if (e.type === "GUILD_TEXT") { + text=text+1 + } + }) - let member = await guild.members.fetch() + let emoji = await guild.emojis.fetch() + + let emojiCount = 0 + emoji.forEach(e => { + emojiCount=emojiCount+1 + }) + let roles = await guild.roles.fetch() + let rolesCount = 0 + roles.forEach(e => { + rolesCount=rolesCount+1 + }) + + let date = new Date(guild.createdAt) - if (guild.iconURL) {replyEmbed.setThumbnail(guild.iconURL({ format: "png", size: 4096 }))} + let icon = guild.iconURL + if (icon) {replyEmbed.setThumbnail(guild.iconURL({ format: "png", size: 4096 }))} + replyEmbed.setAuthor({name: `${guild.name}`, iconURL: icon}) replyEmbed.setColor(`#${Math.floor(Math.random()*16777215).toString(16)}`) replyEmbed.addFields( - {name: "**Owner**", value: owner.user.tag, inline: true}, - {name: "**Active Treads**", value: threads.threads.size, inline: true}, - {name: "**Text channels**", value: guild.channels.channelCountWithoutThreads, inline: true}, - {name: "**Voice channels**", value: 5}, - {name: "**Members**", value: member.size, inline: true}, - {name: "**Roles**", value: 5, inline: true}, + {name: "**Owner**", value: `${owner.user.tag}`, inline: true}, + {name: "**Active threads**", value: `${threads.threads.size}`, inline: true}, + {name: "**Text channels**", value: `${text}`, inline: true}, + {name: "**Voice channels**", value: `${voice}`, inline: true}, + {name: "**Members**", value: `${member.size}`, inline: true}, + {name: "**Roles**", value: `${rolesCount}`, inline: true}, + {name: "**Created at**", value: ``, inline:true}, + {name: "**N° Emojis**", value: `${emojiCount}`, inline: true}, + {name: "ID", value: `${guild.id}`, inline: true}, ); await interaction.reply({ embeds: [replyEmbed], ephemeral: true}); From 85ba7338267a67070cf3756cea0d2dd1a832f150 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 26 Jun 2022 16:52:41 +0200 Subject: [PATCH 117/236] Subcommand of get added! --- Tmp/log.txt | 2 ++ commands/get.js | 26 +++++++++++++++++++++----- main.js | 6 +++--- 3 files changed, 26 insertions(+), 8 deletions(-) create mode 100644 Tmp/log.txt diff --git a/Tmp/log.txt b/Tmp/log.txt new file mode 100644 index 0000000..af33506 --- /dev/null +++ b/Tmp/log.txt @@ -0,0 +1,2 @@ +https://cdn.discordapp.com/emojis/990619614956384358.png for XKZObH2l_400x400 +https://cdn.discordapp.com/emojis/990619656765190225.png for PbServer \ No newline at end of file diff --git a/commands/get.js b/commands/get.js index 86fd827..d2f2deb 100644 --- a/commands/get.js +++ b/commands/get.js @@ -1,4 +1,5 @@ const { SlashCommandBuilder } = require('@discordjs/builders') +const { GuildEmojiManager } = require('discord.js') const { MessageAttachment } = require('discord.js') const { CreateAndWrite } = require('../Util/someFun.js') @@ -8,7 +9,7 @@ module.exports = { .setDescription("Get something") .addSubcommand(sc => sc .setName('ricon') - .setDescription("Getting All Icons of All Roles") + .setDescription("Getting all icons of all roles") .addStringOption(o => o .setName("format") .setDescription("In what format do you want the icons?") @@ -21,11 +22,14 @@ module.exports = { .setRequired(true))) .addSubcommand(sc => sc .setName('rcolor') - .setDescription("Getting All Colors of All Roles") + .setDescription("Getting all Colors of all roles") .addBooleanOption(o => o .setName("hex") .setDescription("Do you want to get a hex value?") - .setRequired(true))), + .setRequired(true))) + .addSubcommand(sc => sc + .setName("emojis") + .setDescription("Getting all emojis from a server")), async execute(interaction) { await interaction.deferReply({ephemeral: true}) const sc = interaction.options.getSubcommand() @@ -53,10 +57,11 @@ module.exports = { } } else if (sc === 'rcolor') { + const guildRoles = await interaction.guild.roles.fetch() const hex = interaction.options.getBoolean("hex") let ArrColor = [] - guildRole.forEach(e => { + guildRoles.forEach(e => { let name = e.name let color if (hex) color = e.hexColor @@ -65,12 +70,23 @@ module.exports = { if (color === String && color !== '#000000' || color === Number && color !== 0) ArrColor.push(`${color} for ${name}`) }) if (ArrColor) { - CreateAndWrite('/Tmp/log.txt', ArrColor.join("")) + CreateAndWrite('/Tmp/log.txt', ArrColor.join("\n")) interaction.followUp({ files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}) } else if (!ArrColor) { interaction.followUp("No role found to have color") } } + else if (sc === "emojis") { + await interaction.guild.fetch() + let emojis = await interaction.guild.emojis.fetch() + let emojiArr = [] + emojis.forEach(e => { + emojiArr.push(`${e.url} for ${e.name}`) + }) + CreateAndWrite('/Tmp/log.txt', emojiArr.join("\n")) + + interaction.followUp({ files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}) + } } } \ No newline at end of file diff --git a/main.js b/main.js index 6238810..ee3a2a7 100644 --- a/main.js +++ b/main.js @@ -3,7 +3,7 @@ const path = require('node:path'); const { Client, Collection } = require('discord.js'); const { token } = require('./config.json'); -client = new Client({intents: 2, presence: {status: 'idle'}}); +client = new Client({ intents: 2, presence: { status: 'idle' } }); client.db = require('./Util/database') client.commands = new Collection(); @@ -33,9 +33,9 @@ client.on("interactionCreate", async interaction => { await command.execute(interaction); } catch (error) { console.error(error); - if (!(interaction.replied)) { + try { await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true }) - } else { + } catch { await interaction.followUp({ content: 'There was an error while executing this command!', ephemeral: true }) } } From 01a074fc472434eb3320b6156069a6f641603eb6 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 26 Jun 2022 16:54:16 +0200 Subject: [PATCH 118/236] Better like that... --- .gitignore | 3 ++- Tmp/log.txt | 2 -- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 900c846..e0f8e8e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ config.json node_modules/ jsconfig.json -database.sqlite \ No newline at end of file +database.sqlite +Tmp/ \ No newline at end of file diff --git a/Tmp/log.txt b/Tmp/log.txt index af33506..e69de29 100644 --- a/Tmp/log.txt +++ b/Tmp/log.txt @@ -1,2 +0,0 @@ -https://cdn.discordapp.com/emojis/990619614956384358.png for XKZObH2l_400x400 -https://cdn.discordapp.com/emojis/990619656765190225.png for PbServer \ No newline at end of file From 4734e4cad9047bb0e40fddc780611b479654369e Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 26 Jun 2022 16:57:35 +0200 Subject: [PATCH 119/236] Forgot the fallback :skull: --- commands/get.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/commands/get.js b/commands/get.js index d2f2deb..17e0f70 100644 --- a/commands/get.js +++ b/commands/get.js @@ -85,8 +85,12 @@ module.exports = { emojiArr.push(`${e.url} for ${e.name}`) }) CreateAndWrite('/Tmp/log.txt', emojiArr.join("\n")) - - interaction.followUp({ files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}) + if (emojiArr) { + interaction.followUp({ files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}) + } + else if (!emojiArr) { + interaction.followUp("No emojis found") + } } } } \ No newline at end of file From c0390effe93834b69f61fe8cc432857841dc5c6c Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 29 Jun 2022 18:55:17 +0200 Subject: [PATCH 120/236] Better slowmode command --- commands/get.js | 3 +++ commands/slowmode.js | 26 ++++++++++++-------------- config.json.template | 6 +++--- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/commands/get.js b/commands/get.js index 17e0f70..43c8bf4 100644 --- a/commands/get.js +++ b/commands/get.js @@ -81,10 +81,13 @@ module.exports = { await interaction.guild.fetch() let emojis = await interaction.guild.emojis.fetch() let emojiArr = [] + emojis.forEach(e => { emojiArr.push(`${e.url} for ${e.name}`) }) + CreateAndWrite('/Tmp/log.txt', emojiArr.join("\n")) + if (emojiArr) { interaction.followUp({ files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}) } diff --git a/commands/slowmode.js b/commands/slowmode.js index 7fdef35..0df9ad4 100644 --- a/commands/slowmode.js +++ b/commands/slowmode.js @@ -1,5 +1,6 @@ const { SlashCommandBuilder } = require('@discordjs/builders') const { MessageEmbed } = require('discord.js'); +const { ChannelType } = require("discord-api-types/payloads/v10") module.exports = { data: new SlashCommandBuilder() @@ -8,7 +9,8 @@ module.exports = { .addChannelOption(o => o .setName("channel") .setDescription("What channel do you want to apply slowmode to?") - .setRequired(true)) + .setRequired(true) + .addChannelTypes(ChannelType.GuildText)) .addStringOption(o => o .setName('unit') .setDescription('the unit of time') @@ -41,23 +43,19 @@ module.exports = { else if (unit == "hours") length = Math.floor(length * 60 * 60) if (length > 21600) { - return interaction.reply("You set the slowmode to more then 6 hours, it's imposible for me to execute that...") + replyEmbed.setColor("#FF0000") + replyEmbed.setDescription("You set the slowmode to more then 6 hours, it's imposible for me to execute that...") + return interaction.reply({ embeds: [replyEmbed] }) } - - if (channel.type === "GUILD_TEXT") { + else if (length < 21600) { + channel.setRateLimitPerUser(length, reason); - replyEmbed.setDescription(`Set **${RealLen} ${unit}** slowmode in ${channel} for "**${reason}**"`) + replyEmbed.setColor("#00FF00") if (reason === "No reason provided") replyEmbed.setDescription(`Set **${RealLen} ${unit}** slowmode in ${channel}`) else if (reason !== "No reason provided") replyEmbed.setDescription(`Set **${RealLen} ${unit}** slowmode in ${channel} for "**${reason}**"`) - interaction.reply(`Set **${RealLen} ${unit}** slowmode in ${channel} for "**${reason}**"`) - } else if (channel.type === "GUILD_NEWS") { - replyEmbed.setDescription(`The specified channel (<#${channel.id}>) is a news channel, i do not want to set a slowmode there`) - interaction.reply({embed: [replyEmbed], ephemeral: true}) - } else if (channel.type !== "GUILD_TEXT" && channel.type !== "GUILD_NEWS") { - replyEmbed.setDescription(`The specified channel (<#${channel.id}>) isn't a text channel, I can't set a slowmode there.`) - replyEmbed.setColor("#FF0000") - interaction.reply({ embeds: [replyEmbed], ephemeral: true }) - } + + interaction.reply({ embeds: [replyEmbed] }) } + } } diff --git a/config.json.template b/config.json.template index 01f93ff..e1cf9c3 100644 --- a/config.json.template +++ b/config.json.template @@ -1,7 +1,7 @@ { "Token":"The token of the bot", - "clienTId":"The id of the bot", + "clientId":"The id of the bot", "guildId":"The id of the discord server", "sqlPass":"A password, can be empty", - "logcha":"The id of a log channel" -} \ No newline at end of file + "logCha":"The id of a log channel" +} From 03dc3197a410c05ba2ab1af2d94ec74cd9ecc3e6 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 2 Jul 2022 18:39:43 +0200 Subject: [PATCH 121/236] Useless, but still cool to have --- commands/get.js | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/commands/get.js b/commands/get.js index 43c8bf4..b38772c 100644 --- a/commands/get.js +++ b/commands/get.js @@ -7,6 +7,9 @@ module.exports = { data: new SlashCommandBuilder() .setName('get') .setDescription("Get something") + .addSubcommand(sc => sc + .setName('rname') + .setDescription('Getting all role name')) .addSubcommand(sc => sc .setName('ricon') .setDescription("Getting all icons of all roles") @@ -34,7 +37,26 @@ module.exports = { await interaction.deferReply({ephemeral: true}) const sc = interaction.options.getSubcommand() - if (sc === "ricon") { + if (sc === 'rname') { + const guildRoles = await interaction.guild.roles.fetch() + + let ArrName = [] + guildRoles.forEach(e => { + if (e.name !== "@everyone") { + ArrName.push(e.name) + } + }) + + if (ArrName) { + CreateAndWrite('/Tmp/log.txt', ArrName.join("\n")) + interaction.followUp({files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}) + } + else if (!ArrName) { + interaction.followUp("Why does not even a single role exist?") + } + + } + else if (sc === "ricon") { const guildRoles = await interaction.guild.roles.fetch() const format = interaction.options.getString("format") const size = interaction.options.getNumber("size") From 9940dc28655904d4b19aad09b837aa8cb790cb48 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 2 Jul 2022 23:32:40 +0200 Subject: [PATCH 122/236] A lot of ; nothing else --- commands/ban.js | 30 +++++++-------- commands/create.js | 4 +- commands/get.js | 88 ++++++++++++++++++++------------------------ commands/info.js | 63 ++++++++++++++++--------------- commands/kick.js | 20 +++++----- commands/list.js | 88 ++++++++++++++++++++++---------------------- commands/lock.js | 35 ++++++++---------- commands/slowmode.js | 26 ++++++------- commands/timeout.js | 49 +++++++++++------------- commands/unban.js | 12 +++--- commands/unlock.js | 8 ++-- commands/warn.js | 28 +++++++------- 12 files changed, 217 insertions(+), 234 deletions(-) diff --git a/commands/ban.js b/commands/ban.js index 993c8fd..11da593 100644 --- a/commands/ban.js +++ b/commands/ban.js @@ -21,39 +21,39 @@ module.exports = { .setName("time") .setDescription("How long to ban this member?")), async execute(interaction) { - const member = interaction.options.getMember("member", true) - const guild = interaction.guild - const db = interaction.client.db.Cases - const reason = interaction.options.getString("reason", true) - const days = interaction.options.getNumber("time") || 0 - const joke = interaction.options.getBoolean("joke", true) + const member = interaction.options.getMember("member", true); + const guild = interaction.guild; + const db = interaction.client.db.Cases; + const reason = interaction.options.getString("reason", true); + const days = interaction.options.getNumber("time") || 0; + const joke = interaction.options.getBoolean("joke", true); if (!(member instanceof GuildMember)) { - await guild.members.fetch(member) - } + await guild.members.fetch(member); + }; - if (member.id === interaction.client.user.id) return interaction.reply("❌ Why would you ban me? 😢") + if (member.id === interaction.client.user.id) return interaction.reply("❌ Why would you ban me? 😢"); const dmEmbed = new MessageEmbed() .setColor("#FF0000") - .setDescription(`You have been banned for: ${reason}`) + .setDescription(`You have been banned for: ${reason}`); const replyEmbed = new MessageEmbed() .setColor("#00FF00") .setDescription(`**${member.user.tag} has been banned for:** ${reason}`); await member.user.send({ embeds: [dmEmbed] }) if (!joke) { - await member.ban({ days: days, reason: reason }) + await member.ban({ days: days, reason: reason }); } - await interaction.reply({ embeds: [replyEmbed] }) + await interaction.reply({ embeds: [replyEmbed] }); if (!joke) { db.create({ Executor: interaction.member.user.id, userID: member.user.id, reason: reason, type: "ban" - }) - } + }); + }; } -}; \ No newline at end of file +} \ No newline at end of file diff --git a/commands/create.js b/commands/create.js index 916fa84..faab056 100644 --- a/commands/create.js +++ b/commands/create.js @@ -16,10 +16,10 @@ module.exports = { server.channels.create(name, "text"); } catch (err) { - interaction.reply(`\`${err}\``) + interaction.reply(`\`${err}\``); } finally { - interaction.reply("No error!") + interaction.reply("No error!"); } */ interaction.reply("This command is *not* necessary, as it will just create a channel, if you want it, delete the \\\\* and \\*\\ that are on the create.js file in the commands directory") diff --git a/commands/get.js b/commands/get.js index b38772c..a845570 100644 --- a/commands/get.js +++ b/commands/get.js @@ -1,7 +1,6 @@ const { SlashCommandBuilder } = require('@discordjs/builders') -const { GuildEmojiManager } = require('discord.js') -const { MessageAttachment } = require('discord.js') const { CreateAndWrite } = require('../Util/someFun.js') +const { GuildEmojiManager, MessageAttachment } = require('discord.js') module.exports = { data: new SlashCommandBuilder() @@ -34,88 +33,79 @@ module.exports = { .setName("emojis") .setDescription("Getting all emojis from a server")), async execute(interaction) { - await interaction.deferReply({ephemeral: true}) - const sc = interaction.options.getSubcommand() + await interaction.deferReply({ ephemeral: true }); + const sc = interaction.options.getSubcommand(); if (sc === 'rname') { - const guildRoles = await interaction.guild.roles.fetch() + const guildRoles = await interaction.guild.roles.fetch(); - let ArrName = [] + let ArrName = []; guildRoles.forEach(e => { - if (e.name !== "@everyone") { - ArrName.push(e.name) - } - }) + if (e.name !== "@everyone") ArrName.push(e.name); + }); if (ArrName) { - CreateAndWrite('/Tmp/log.txt', ArrName.join("\n")) - interaction.followUp({files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}) - } - else if (!ArrName) { - interaction.followUp("Why does not even a single role exist?") + CreateAndWrite('/Tmp/log.txt', ArrName.join("\n")); + interaction.followUp({files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}); } - + else if (!ArrName) interaction.followUp("Why does not even a single role exist?"); + } else if (sc === "ricon") { - const guildRoles = await interaction.guild.roles.fetch() - const format = interaction.options.getString("format") - const size = interaction.options.getNumber("size") - let ArrayURL = [] + const guildRoles = await interaction.guild.roles.fetch(); + const format = interaction.options.getString("format"); + const size = interaction.options.getNumber("size"); + let ArrayURL = []; guildRoles.forEach(e => { - if (e.iconURL()) { - let icon = e.iconURL({ format: format, size: size }) - let name = e.name - ArrayURL.push(`${icon} for ${name}`) - } + if (e.iconURL()) ArrayURL.push(`${e.iconURL({ format: format, size: size })} for ${e.name}`); }); if (ArrayURL) { - CreateAndWrite('/Tmp/log.txt', ArrayURL.join("\n")) - interaction.followUp({files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}) + CreateAndWrite('/Tmp/log.txt', ArrayURL.join("\n")); + interaction.followUp({files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}); } else if (!ArrayURL) { - interaction.followUp("No role found with an icon") + interaction.followUp("No role found with an icon"); } } else if (sc === 'rcolor') { - const guildRoles = await interaction.guild.roles.fetch() - const hex = interaction.options.getBoolean("hex") - let ArrColor = [] + const guildRoles = await interaction.guild.roles.fetch(); + const hex = interaction.options.getBoolean("hex"); + let ArrColor = []; guildRoles.forEach(e => { - let name = e.name let color - if (hex) color = e.hexColor - else if (!hex) color = e.color + if (hex) color = e.hexColor; else color = e.color; + + if (color === String && color !== '#000000' || color === Number && color !== 0) ArrColor.push(`${color} for ${e.name}`); + }); - if (color === String && color !== '#000000' || color === Number && color !== 0) ArrColor.push(`${color} for ${name}`) - }) if (ArrColor) { - CreateAndWrite('/Tmp/log.txt', ArrColor.join("\n")) - interaction.followUp({ files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}) + CreateAndWrite('/Tmp/log.txt', ArrColor.join("\n")); + interaction.followUp({ files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}); } else if (!ArrColor) { - interaction.followUp("No role found to have color") - } + interaction.followUp("No role found to have color"); + }; } else if (sc === "emojis") { - await interaction.guild.fetch() - let emojis = await interaction.guild.emojis.fetch() - let emojiArr = [] + await interaction.guild.fetch(); + let emojis = await interaction.guild.emojis.fetch(); + let emojiArr = []; emojis.forEach(e => { - emojiArr.push(`${e.url} for ${e.name}`) - }) + emojiArr.push(`${e.url} for ${e.name}`); + }); - CreateAndWrite('/Tmp/log.txt', emojiArr.join("\n")) + CreateAndWrite('/Tmp/log.txt', emojiArr.join("\n")); if (emojiArr) { - interaction.followUp({ files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}) + interaction.followUp({ files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}); } else if (!emojiArr) { - interaction.followUp("No emojis found") - } + interaction.followUp("No emojis found"); + }; } } } \ No newline at end of file diff --git a/commands/info.js b/commands/info.js index 1e0ba0f..7d98a19 100644 --- a/commands/info.js +++ b/commands/info.js @@ -16,57 +16,60 @@ module.exports = { .setDescription("The user to get information") .setRequired(true))),*/ async execute(interaction) { - const sc = interaction.options.getSubcommand() - const replyEmbed = new MessageEmbed() + const sc = interaction.options.getSubcommand(); + const replyEmbed = new MessageEmbed(); if (sc === "user") { - const member = interaction.options.getMember("user") - + const member = interaction.options.getMember("user"); + if (!(member instanceof GuildMember)) { - await interaction.guild.members.fetch(member) - } + await interaction.guild.members.fetch(member); + }; + + let Avatar = member.displayAvatarURL({extension: "png",size: 4096}); - replyEmbed.setColor("") + replyEmbed.setAuthor({name: member.user.tag, iconURL: Avatar}); + replyEmbed.setColor(`#${Math.floor(Math.random()*16777215).toString(16)}`); + replyEmbed.setThumbnail(Avatar); } else if (sc === "server") { const guild = interaction.guild; - await guild.fetch() + await guild.fetch(); - let owner = await guild.fetchOwner() - let threads = await guild.channels.fetchActiveThreads() - let channelCollection = await guild.channels.fetch() - let member = await guild.members.fetch() + let owner = await guild.fetchOwner(); + let threads = await guild.channels.fetchActiveThreads(); + let channelCollection = await guild.channels.fetch(); + let member = await guild.members.fetch(); - let voice = 0 - let text = 0 + let voice = 0; + let text = 0; channelCollection.forEach(e => { if (e.type === "GUILD_VOICE") { - voice=voice+1 - } - if (e.type === "GUILD_TEXT") { - text=text+1 + voice=voice+1; } + else if (e.type === "GUILD_TEXT") { + text=text+1; + }; }) - let emoji = await guild.emojis.fetch() - - let emojiCount = 0 + let emoji = await guild.emojis.fetch(); + let emojiCount = 0; emoji.forEach(e => { - emojiCount=emojiCount+1 + emojiCount=emojiCount+1; }) - let roles = await guild.roles.fetch() - let rolesCount = 0 + let roles = await guild.roles.fetch(); + let rolesCount = 0; roles.forEach(e => { rolesCount=rolesCount+1 }) - let date = new Date(guild.createdAt) + let date = new Date(guild.createdAt); - let icon = guild.iconURL - if (icon) {replyEmbed.setThumbnail(guild.iconURL({ format: "png", size: 4096 }))} - replyEmbed.setAuthor({name: `${guild.name}`, iconURL: icon}) - replyEmbed.setColor(`#${Math.floor(Math.random()*16777215).toString(16)}`) + let icon = guild.iconURL; + if (icon) {replyEmbed.setThumbnail(guild.iconURL({ format: "png", size: 4096 }))}; + replyEmbed.setAuthor({name: `${guild.name}`, iconURL: icon}); + replyEmbed.setColor(`#${Math.floor(Math.random()*16777215).toString(16)}`); replyEmbed.addFields( {name: "**Owner**", value: `${owner.user.tag}`, inline: true}, {name: "**Active threads**", value: `${threads.threads.size}`, inline: true}, @@ -80,6 +83,6 @@ module.exports = { ); await interaction.reply({ embeds: [replyEmbed], ephemeral: true}); - } + }; } } \ No newline at end of file diff --git a/commands/kick.js b/commands/kick.js index caeb9a4..47ad7ce 100644 --- a/commands/kick.js +++ b/commands/kick.js @@ -18,29 +18,29 @@ module.exports = { .setDescription("Why should this user be kicked?") .setRequired(true)), async execute(interaction) { - let member = interaction.options.getMember("user") - const reason = interaction.options.getString("reason") - const replyEmbed = new MessageEmbed().setColor("#00FF00") + let member = interaction.options.getMember("user"); + const reason = interaction.options.getString("reason"); + const replyEmbed = new MessageEmbed().setColor("#00FF00"); - if (member.id === interaction.client.user.id) return interaction.reply("❌ Why would you kick me? 😢") + if (member.id === interaction.client.user.id) return interaction.reply("❌ Why would you kick me? 😢"); if (!joke) { if (member.kickable) { member.kick({ reason: reason }) .then(() => { if (reason !== "No reason provided") { - replyEmbed.setDescription(`${user.tag} has been kicked with the reason ${reason}`) + replyEmbed.setDescription(`${user.tag} has been kicked with the reason ${reason}`); } else if (reason === "No reason provided") { - replyEmbed.setDescription(`${user.tag} has been kicked`) - } - }).catch(error => { + replyEmbed.setDescription(`${user.tag} has been kicked`); + }; + }) + .catch(error => { console.error(error); replyEmbed.setDescription('There was an error while executing this command!'); interaction.reply({ embeds: [replyEmbed], ephemeral: true }); }); } } - interaction.reply({ embeds: [replyEmbed] }) - + interaction.reply({ embeds: [replyEmbed] }); } } \ No newline at end of file diff --git a/commands/list.js b/commands/list.js index f9497e0..7e7a565 100644 --- a/commands/list.js +++ b/commands/list.js @@ -24,21 +24,21 @@ module.exports = { .setName("user") .setDescription("The user to list kicks (Id)"))), async execute(interaction) { - const subcommand = interaction.options.getSubcommand() + const subcommand = interaction.options.getSubcommand(); if (subcommand === "warns") { - await interaction.deferReply({ ephemeral: true }) - let IdUser = interaction.options.getString("user") - let UserExecutor = interaction.user + await interaction.deferReply({ ephemeral: true }); + let IdUser = interaction.options.getString("user"); + let UserExecutor = interaction.user; if (IdUser) { - let permV = await interaction.guild.members.fetch(UserExecutor) + let permV = await interaction.guild.members.fetch(UserExecutor); if (!permV.permissions.FLAGS.has(Permissions.FLAGS.KICK_MEMBERS)) { - return interaction.reply("I'm sorry Dave, but i'm afraied i can't do that\nYou do not have the permission to do that") - } + return interaction.reply("I'm sorry Dave, but i'm afraied i can't do that\nYou do not have the permission to do that"); + }; } else if (!IdUser) { - IdUser = interaction.user.id - } + IdUser = interaction.user.id; + }; db = interaction.client.db.Cases warnDB = await db.findAll({ @@ -47,32 +47,32 @@ module.exports = { type: "warn" }, attributes: ['id', 'type', 'userID', 'reason', 'Executor'] - }) - let list = "" + }); + let list = ""; for (let i = 0; i < warnDB.length; i++) { - list += `${warnDB[i].reason} - *insert date here*\n` + list += `${warnDB[i].reason} - *insert date here*\n`; } - console.log(list) + console.log(list); if (list !== "") { - interaction.followUp({ content: list }) + interaction.followUp({ content: list }); } else if (list === "") { - interaction.followUp({ content: "There is no warn" }) - } + interaction.followUp({ content: "There is no warn" }); + }; } else if (subcommand === "bans") { - await interaction.deferReply({ ephemeral: true }) - let IdUser = interaction.options.getString("user") + await interaction.deferReply({ ephemeral: true }); + let IdUser = interaction.options.getString("user"); if (IdUser) { - let permV = await interaction.guild.members.fetch(UserExecutor) + let permV = await interaction.guild.members.fetch(UserExecutor); if (!permV.permissions.FLAGS.has(Permissions.FLAGS.BAN_MEMBERS)) { - return interaction.reply("I'm sorry Dave, but i'm afraied i can't do that\nYou do not have the permission to do that") - } + return interaction.reply("I'm sorry Dave, but i'm afraied i can't do that\nYou do not have the permission to do that"); + }; } else if (!IdUser) { - IdUser = interaction.user.id - } + IdUser = interaction.user.id; + }; db = interaction.client.db.Cases banDB = await db.findAll({ @@ -81,33 +81,33 @@ module.exports = { type: "bans" }, attributes: ['id', 'type', 'userID', 'reason', 'Executor'] - }) - let list = "" + }); + let list = ""; for (let i = 0; i < warnDB.length; i++) { - list += `${warnDB[i].reason} - *insert date here*\n` + list += `${warnDB[i].reason} - *insert date here*\n`; } - console.log(list) + console.log(list); if (list !== "") { - interaction.followUp({ content: list }) + interaction.followUp({ content: list }); } else if (list === "") { - interaction.followUp({ content: "There is no warn" }) - } + interaction.followUp({ content: "There is no warn" }); + }; } else if (subcommand === "kicks") { - await interaction.deferReply({ ephemeral: true }) - let IdUser = interaction.options.getString("user") + await interaction.deferReply({ ephemeral: true }); + let IdUser = interaction.options.getString("user"); if (IdUser) { - let permV = await interaction.guild.members.fetch(UserExecutor) + let permV = await interaction.guild.members.fetch(UserExecutor); if (!permV.permissions.FLAGS.has(Permissions.FLAGS.KICK_MEMBERS)) { - return interaction.reply("I'm sorry Dave, but i'm afraied i can't do that\nYou do not have the permission to do that") + return interaction.reply("I'm sorry Dave, but i'm afraied i can't do that\nYou do not have the permission to do that"); } } else if (!IdUser) { - IdUser = interaction.user.id - } + IdUser = interaction.user.id; + }; db = interaction.client.db.Cases banDB = await db.findAll({ @@ -116,19 +116,19 @@ module.exports = { type: "kick" }, attributes: ['id', 'type', 'userID', 'reason', 'Executor'] - }) - let list = "" + }); + let list = ""; for (let i = 0; i < warnDB.length; i++) { - list += `${warnDB[i].reason} - *insert date here*\n` + list += `${warnDB[i].reason} - *insert date here*\n`; } - console.log(list) + console.log(list); if (list !== "") { - interaction.followUp({ content: list }) + interaction.followUp({ content: list }); } else if (list === "") { - interaction.followUp({ content: "There is no warn" }) - } - } + interaction.followUp({ content: "There is no warn" }); + }; + }; } } diff --git a/commands/lock.js b/commands/lock.js index 37890a2..93bd2b2 100644 --- a/commands/lock.js +++ b/commands/lock.js @@ -1,5 +1,5 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); -const { guildId } = require("../config.json") +const { guildId } = require("../config.json"); const { MessageEmbed } = require('discord.js'); module.exports = { @@ -9,30 +9,27 @@ module.exports = { .addChannelOption(o => o .setName("channel") .setDescription("The channel to lock") + .addChannelTypes(0) .setRequired(true)) .addStringOption(o => o .setName("reason") .setDescription("Why should this channel be locked?")), async execute(interaction) { let channel = interaction.options.getChannel("channel"); - let reason = interaction.options.getString("reason") - const replyEmbed = new MessageEmbed() - - if (!reason) reason = "No reason provided" + let reason = interaction.options.getString("reason"); + const replyEmbed = new MessageEmbed(); - if (channel.type === "GUILD_NEWS") { - interaction.reply("No"); - return - } else if (channel.type === "GUILD_TEXT") { - channel.permissionOverwrites.edit(guildId, { - SEND_MESSAGES: false, - SEND_MESSAGES_IN_THREADS: false, - CREATE_PUBLIC_THREADS: false, - CREATE_PRIVATE_THREADS: false, - }, { reason: reason, type: 0 }) - replyEmbed.setColor("#00FF00") - replyEmbed.setDescription("Channel locked") - interaction.reply({ embeds:[replyEmbed] }) - } + if (!reason) reason = "No reason provided"; + + channel.permissionOverwrites.edit(guildId, { + SEND_MESSAGES: false, + SEND_MESSAGES_IN_THREADS: false, + CREATE_PUBLIC_THREADS: false, + CREATE_PRIVATE_THREADS: false, + }, { reason: reason, type: 0 }); + + replyEmbed.setColor("#00FF00"); + replyEmbed.setDescription("Channel locked"); + interaction.reply({ embeds: [replyEmbed] }); } } \ No newline at end of file diff --git a/commands/slowmode.js b/commands/slowmode.js index 0df9ad4..3487684 100644 --- a/commands/slowmode.js +++ b/commands/slowmode.js @@ -29,33 +29,33 @@ module.exports = { const RealLen = interaction.options.getInteger('duration'); const reason = interaction.options.getString('reason') || "No reason provided"; - const replyEmbed = new MessageEmbed() + const replyEmbed = new MessageEmbed(); let length = RealLen; if (RealLen === 0) { channel.setRateLimitPerUser(length, reason); - replyEmbed.setDescription(`No slowmode set in ${channel} for "**${reason}**"`) - replyEmbed.setColor('#00FF00') - interaction.reply({ embeds: [replyEmbed]}) + replyEmbed.setDescription(`No slowmode set in ${channel} for "**${reason}**"`); + replyEmbed.setColor('#00FF00'); + interaction.reply({ embeds: [replyEmbed]}); } - if (unit == "minutes") length = Math.floor(length * 60) - else if (unit == "hours") length = Math.floor(length * 60 * 60) + if (unit == "minutes") length = Math.floor(length * 60); + else if (unit == "hours") length = Math.floor(length * 60 * 60); if (length > 21600) { - replyEmbed.setColor("#FF0000") - replyEmbed.setDescription("You set the slowmode to more then 6 hours, it's imposible for me to execute that...") - return interaction.reply({ embeds: [replyEmbed] }) + replyEmbed.setColor("#FF0000"); + replyEmbed.setDescription("You set the slowmode to more then 6 hours, it's imposible for me to execute that..."); + return interaction.reply({ embeds: [replyEmbed] }); } else if (length < 21600) { channel.setRateLimitPerUser(length, reason); - replyEmbed.setColor("#00FF00") - if (reason === "No reason provided") replyEmbed.setDescription(`Set **${RealLen} ${unit}** slowmode in ${channel}`) - else if (reason !== "No reason provided") replyEmbed.setDescription(`Set **${RealLen} ${unit}** slowmode in ${channel} for "**${reason}**"`) + replyEmbed.setColor("#00FF00"); + if (reason === "No reason provided") replyEmbed.setDescription(`Set **${RealLen} ${unit}** slowmode in ${channel}`); + else if (reason !== "No reason provided") replyEmbed.setDescription(`Set **${RealLen} ${unit}** slowmode in ${channel} for "**${reason}**"`); - interaction.reply({ embeds: [replyEmbed] }) + interaction.reply({ embeds: [replyEmbed] }); } } } diff --git a/commands/timeout.js b/commands/timeout.js index c2daf6b..02738af 100644 --- a/commands/timeout.js +++ b/commands/timeout.js @@ -1,5 +1,5 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); -const { Modal, MessageEmbed } = require('discord.js'); +const { MessageEmbed } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() @@ -22,44 +22,39 @@ module.exports = { .setName("reason") .setDescription('Why should this user be timed out?')), async execute(interaction) { - const member = interaction.options.getMember('user') - const RealLen = interaction.options.getInteger('duration') - let length = interaction.options.getInteger('duration') - const unit = interaction.options.getString('unit') - let reason = interaction.options.getString('reason') || "No reason provided" + const member = interaction.options.getMember('user'); + const RealLen = interaction.options.getInteger('duration'); + let length = interaction.options.getInteger('duration'); + const unit = interaction.options.getString('unit'); + let reason = interaction.options.getString('reason') || "No reason provided"; const replyEmbed = new MessageEmbed(); if (member.id === interaction.client.user.id) { - if (!reason || reason === "No reason provided")return interaction.reply(`Timed out undefined for ${RealLen} ${unit}`) - else if (reason || reason !== "No reason provided") return interaction.reply(`Timed out undefined for ${RealLen} ${unit} for **${reason}.**`)} + if (!reason || reason === "No reason provided")return interaction.reply(`Timed out undefined for ${RealLen} ${unit}`); + else if (reason || reason !== "No reason provided") return interaction.reply(`Timed out undefined for ${RealLen} ${unit} for **${reason}.**`)}; - if (unit == "seconds") { - length = Math.floor(length * 1000) - } else if (unit == "minutes") { - length = Math.floor(length * 60 * 1000) - } else if (unit == "hours") { - length = Math.floor(length * 60 * 60 * 1000) - } else if (unit == "days") { - length = Math.floor(length * 24 * 60 * 60 * 1000) - } + if (unit == "seconds") length = Math.floor(length * 1000); + else if (unit == "minutes") length = Math.floor(length * 60 * 1000); + else if (unit == "hours") length = Math.floor(length * 60 * 60 * 1000); + else if (unit == "days") length = Math.floor(length * 24 * 60 * 60 * 1000); if (length > 2.419e+9) { - replyEmbed.setColor("#FF0000") - replyEmbed.setDescription(`**I cannot timeout ${user.tag} for that long! You provided a time longer than 28 days!**`) - await interaction.reply({embeds:[replyEmbed]}) + replyEmbed.setColor("#FF0000"); + replyEmbed.setDescription(`**I cannot timeout ${user.tag} for that long! You provided a time longer than 28 days!**`); + await interaction.reply({embeds:[replyEmbed]}); } else { member.timeout(length, reason + " | Timeout by " + interaction.member.user.tag) .then(async () => { - replyEmbed.setDescription(`Timed out ${member} for **${RealLen} ${unit}** for **"${reason}".**`) - replyEmbed.setColor("#00FF00") - await interaction.reply({embeds:[replyEmbed]}) + replyEmbed.setDescription(`Timed out ${member} for **${RealLen} ${unit}** for **"${reason}".**`); + replyEmbed.setColor("#00FF00"); + await interaction.reply({embeds:[replyEmbed]}); }) .catch(async error => { - console.log(error) - replyEmbed.setDescription(`**I cannot timeout ${member.tag}! They have staff permissions!**`) - replyEmbed.setColor("#FF0000") - await interaction.reply({embeds: [replyEmbed], ephemeral: true}) + console.log(error); + replyEmbed.setDescription(`**I cannot timeout ${member.tag}! They have admin permissions!**`); + replyEmbed.setColor("#FF0000"); + await interaction.reply({embeds: [replyEmbed], ephemeral: true}); }) } }, diff --git a/commands/unban.js b/commands/unban.js index 24a99af..012dc90 100644 --- a/commands/unban.js +++ b/commands/unban.js @@ -14,21 +14,19 @@ module.exports = { async execute(interaction) { let member = interaction.options.getMember("user"); let reason = interaction.options.getString("reason"); - const replyEmbed = new MessageEmbed() - if (!reason) reason = "No reason provided" + const replyEmbed = new MessageEmbed(); + if (!reason) reason = "No reason provided"; await member.unban(); if (reason === String) { - replyEmbed.setColor("#00FF00") - replyEmbed.setDescription(`${user.tag} has been unbanned with the reason ${reason}`) + replyEmbed.setColor("#00FF00"); + replyEmbed.setDescription(`${user.tag} has been unbanned with the reason ${reason}`); } else if (reason !== String) { replyEmbed.setDescription(`${user.tag} has been unbanned`); - replyEmbed.setColor("#00FF00") + replyEmbed.setColor("#00FF00"); } - interaction.reply({embeds:[replyEmbed]}); - }, }; \ No newline at end of file diff --git a/commands/unlock.js b/commands/unlock.js index a71f7e9..d791e4b 100644 --- a/commands/unlock.js +++ b/commands/unlock.js @@ -16,9 +16,9 @@ module.exports = { async execute(interaction) { const replyEmbed = new MessageEmbed() let channel = interaction.options.getChannel("channel"); - let reason = interaction.options.getString("reason") + let reason = interaction.options.getString("reason"); - if (!reason) reason = "No reason provided" + if (!reason) reason = "No reason provided"; if (channel.type === "GUILD_NEWS") { interaction.reply("No"); @@ -31,8 +31,8 @@ module.exports = { CREATE_PRIVATE_THREADS: true, }, { reason: reason, type: 0 }) .setDescription("Channel unlocked") - .setColor("#00FF00") - interaction.reply({embeds: [replyEmbed]}) + .setColor("#00FF00"); + interaction.reply({embeds: [replyEmbed]}); } } } \ No newline at end of file diff --git a/commands/warn.js b/commands/warn.js index da97976..bae0714 100644 --- a/commands/warn.js +++ b/commands/warn.js @@ -18,20 +18,20 @@ module.exports = { .setDescription("Is this command a joke?")) , async execute(interaction) { - const user = interaction.options.getUser("user") - const reason = interaction.options.getString("reason") - const joke = interaction.options.getBoolean("joke") - const db = interaction.client.db.Cases - const replyEmbed = new MessageEmbed().setColor("#00FF00") - const dmEmbed = new MessageEmbed().setColor("#FF0000") + const user = interaction.options.getUser("user"); + const reason = interaction.options.getString("reason"); + const joke = interaction.options.getBoolean("joke"); + const db = interaction.client.db.Cases; + const replyEmbed = new MessageEmbed().setColor("#00FF00"); + const dmEmbed = new MessageEmbed().setColor("#FF0000"); - if (user.id = interaction.client.id) return interaction.reply("I just deleted my own warn <:troll:869197146786766849>") + if (user.id = interaction.client.id) return interaction.reply("I just deleted my own warn <:troll:869197146786766849>"); - replyEmbed.setDescription(`Warned ${user.tag}: ${reason}`) - dmEmbed.setDescription(`You have been warned for: ${reason}`) + replyEmbed.setDescription(`Warned ${user.tag}: ${reason}`); + dmEmbed.setDescription(`You have been warned for: ${reason}`); - interaction.reply({ embeds: [replyEmbed] }) - user.send({ embeds: [dmEmbed] }) + interaction.reply({ embeds: [replyEmbed] }); + user.send({ embeds: [dmEmbed] }); if (!joke) { db.create({ @@ -39,7 +39,7 @@ module.exports = { reason: reason, Executor: interaction.member.user.tag, userID: user.id - }) - } + }); + }; } -} +}; \ No newline at end of file From 84ce9e67f07a51a843ecc48a021f9bdd81b8c3be Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 3 Jul 2022 00:56:01 +0200 Subject: [PATCH 123/236] some fixes + /get stickers added --- commands/get.js | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/commands/get.js b/commands/get.js index a845570..fe6f839 100644 --- a/commands/get.js +++ b/commands/get.js @@ -1,6 +1,6 @@ const { SlashCommandBuilder } = require('@discordjs/builders') const { CreateAndWrite } = require('../Util/someFun.js') -const { GuildEmojiManager, MessageAttachment } = require('discord.js') +const { MessageAttachment } = require('discord.js') module.exports = { data: new SlashCommandBuilder() @@ -31,7 +31,10 @@ module.exports = { .setRequired(true))) .addSubcommand(sc => sc .setName("emojis") - .setDescription("Getting all emojis from a server")), + .setDescription("Getting all emojis of a server")) + .addSubcommand(sc => sc + .setName('stickers') + .setDescription('Getting all stickers of a server')), async execute(interaction) { await interaction.deferReply({ ephemeral: true }); const sc = interaction.options.getSubcommand(); @@ -100,12 +103,30 @@ module.exports = { CreateAndWrite('/Tmp/log.txt', emojiArr.join("\n")); - if (emojiArr) { - interaction.followUp({ files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}); + if (emojiArr.length) { + interaction.followUp({ files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')] }); } - else if (!emojiArr) { + else if (!emojiArr.length) { interaction.followUp("No emojis found"); }; } + else if (sc === "stickers") { + await interaction.guild.fetch(); + let stickers = await interaction.guild.stickers.fetch(); + let stickersArr = []; + + stickers.forEach(e => { + stickersArr.push(`${e.url} for ${e.name}`); + }); + + CreateAndWrite('/Tmp/log.txt', stickersArr.join("\n")); + + if (stickersArr.length) { + interaction.followUp({ files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')] }); + } + else if (!stickersArr.length) { + interaction.followUp("No stickers found"); + }; + }; } } \ No newline at end of file From a67df757b8548d8fafdfbe031bdae463847dfc7e Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 4 Jul 2022 17:37:32 +0200 Subject: [PATCH 124/236] Changed the way to get files, and some other things --- commands/{ => Misc}/create.js | 0 commands/{ => Misc}/get.js | 0 commands/{ => Misc}/info.js | 0 commands/{ => Misc}/list.js | 0 commands/{ => Moderation}/ban.js | 0 commands/{ => Moderation}/kick.js | 0 commands/{ => Moderation}/lock.js | 3 +- commands/{ => Moderation}/slowmode.js | 0 commands/{ => Moderation}/timeout.js | 0 commands/{ => Moderation}/unban.js | 0 commands/{ => Moderation}/unlock.js | 6 +-- commands/{ => Moderation}/warn.js | 0 main.js | 73 +++++++++++++++++++++------ 13 files changed, 60 insertions(+), 22 deletions(-) rename commands/{ => Misc}/create.js (100%) rename commands/{ => Misc}/get.js (100%) rename commands/{ => Misc}/info.js (100%) rename commands/{ => Misc}/list.js (100%) rename commands/{ => Moderation}/ban.js (100%) rename commands/{ => Moderation}/kick.js (100%) rename commands/{ => Moderation}/lock.js (91%) rename commands/{ => Moderation}/slowmode.js (100%) rename commands/{ => Moderation}/timeout.js (100%) rename commands/{ => Moderation}/unban.js (100%) rename commands/{ => Moderation}/unlock.js (88%) rename commands/{ => Moderation}/warn.js (100%) diff --git a/commands/create.js b/commands/Misc/create.js similarity index 100% rename from commands/create.js rename to commands/Misc/create.js diff --git a/commands/get.js b/commands/Misc/get.js similarity index 100% rename from commands/get.js rename to commands/Misc/get.js diff --git a/commands/info.js b/commands/Misc/info.js similarity index 100% rename from commands/info.js rename to commands/Misc/info.js diff --git a/commands/list.js b/commands/Misc/list.js similarity index 100% rename from commands/list.js rename to commands/Misc/list.js diff --git a/commands/ban.js b/commands/Moderation/ban.js similarity index 100% rename from commands/ban.js rename to commands/Moderation/ban.js diff --git a/commands/kick.js b/commands/Moderation/kick.js similarity index 100% rename from commands/kick.js rename to commands/Moderation/kick.js diff --git a/commands/lock.js b/commands/Moderation/lock.js similarity index 91% rename from commands/lock.js rename to commands/Moderation/lock.js index 93bd2b2..027fea1 100644 --- a/commands/lock.js +++ b/commands/Moderation/lock.js @@ -1,5 +1,4 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); -const { guildId } = require("../config.json"); const { MessageEmbed } = require('discord.js'); module.exports = { @@ -21,7 +20,7 @@ module.exports = { if (!reason) reason = "No reason provided"; - channel.permissionOverwrites.edit(guildId, { + channel.permissionOverwrites.edit(interaction.guildId, { SEND_MESSAGES: false, SEND_MESSAGES_IN_THREADS: false, CREATE_PUBLIC_THREADS: false, diff --git a/commands/slowmode.js b/commands/Moderation/slowmode.js similarity index 100% rename from commands/slowmode.js rename to commands/Moderation/slowmode.js diff --git a/commands/timeout.js b/commands/Moderation/timeout.js similarity index 100% rename from commands/timeout.js rename to commands/Moderation/timeout.js diff --git a/commands/unban.js b/commands/Moderation/unban.js similarity index 100% rename from commands/unban.js rename to commands/Moderation/unban.js diff --git a/commands/unlock.js b/commands/Moderation/unlock.js similarity index 88% rename from commands/unlock.js rename to commands/Moderation/unlock.js index d791e4b..26ff2b1 100644 --- a/commands/unlock.js +++ b/commands/Moderation/unlock.js @@ -1,5 +1,4 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); -const { guildId } = require("../config.json") const { MessageEmbed } = require('discord.js'); module.exports = { @@ -21,10 +20,9 @@ module.exports = { if (!reason) reason = "No reason provided"; if (channel.type === "GUILD_NEWS") { - interaction.reply("No"); - return + return interaction.reply("No"); } else if (channel.type === "GUILD_TEXT") { - channel.permissionOverwrites.edit(guildId, { + channel.permissionOverwrites.edit(interaction.guildId, { SEND_MESSAGES: true, SEND_MESSAGES_IN_THREADS: true, CREATE_PUBLIC_THREADS: true, diff --git a/commands/warn.js b/commands/Moderation/warn.js similarity index 100% rename from commands/warn.js rename to commands/Moderation/warn.js diff --git a/main.js b/main.js index ee3a2a7..f330ca1 100644 --- a/main.js +++ b/main.js @@ -1,26 +1,67 @@ const fs = require('node:fs'); -const path = require('node:path'); const { Client, Collection } = require('discord.js'); const { token } = require('./config.json'); -client = new Client({ intents: 2, presence: { status: 'idle' } }); +client = new Client({ intents: 33282, presence: { status: 'idle' }}); client.db = require('./Util/database') client.commands = new Collection(); -const commandsPath = path.join(__dirname, 'commands'); -const commandFiles = fs.readdirSync(commandsPath).filter(file => file.endsWith('.js')); +const commandFolders = fs.readdirSync(`${__dirname}/commands`); -for (const file of commandFiles) { - const filePath = path.join(commandsPath, file); - const command = require(filePath); - client.commands.set(command.data.name, command); +for (const folder of commandFolders) { + const commandFiles = fs.readdirSync(`${__dirname}/commands/${folder}`).filter(file => file.endsWith(".js")); + console.log(`Next commands are loading from "${folder}"`); + + for (const file of commandFiles) { + try { + const command = require(`${__dirname}/commands/${folder}/${file}`); + client.commands.set(command.data.name, command); + console.log(`Command "${command.data.name}" has been loaded`); + } catch (err) { + console.error(err); + } + } +} + +console.log("All command have been loaded"); + +client.messages = new Collection(); +const messageFolders = fs.readdirSync(`${__dirname}/messages`); + +for (const folder of messageFolders) { + const messagesFiles = fs.readdirSync(`${__dirname}/messages/${folder}`).filter(file => file.endsWith(".js")); + console.log(`Next messages are loading from "${folder}"`) + + for (const file of messagesFiles) { + try { + const message = require(`${__dirname}/messages/${folder}/${file}`); + client.messages.set(message.message, message); + console.log(`Message "${message.message}" has been loaded`); + } catch (err) { + console.error(err); + } + } } +console.log("All message has been loaded"); + client.once('ready', () => { - client.db.Cases.sync() + client.db.Cases.sync(); console.log(`Login as ${client.user.tag}`); }) +client.on('messageCreate', async messages => { + console.log(messages.content); + const message = client.messages.get(messages.content); + + if (!message) return; + + try { + await message.execute(messages); + } catch (err) { + console.error(err); + } +}) client.on("interactionCreate", async interaction => { if (!interaction.isCommand()) return; @@ -31,14 +72,14 @@ client.on("interactionCreate", async interaction => { try { await command.execute(interaction); - } catch (error) { - console.error(error); + } catch (err) { + console.error(err); try { - await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true }) + await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true }); } catch { - await interaction.followUp({ content: 'There was an error while executing this command!', ephemeral: true }) - } - } -}) + await interaction.followUp({ content: 'There was an error while executing this command!', ephemeral: true }); + }; + }; +}); client.login(token); \ No newline at end of file From dd4cef247ce485aaa9b616e7b29ebf3769d3b445 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 5 Jul 2022 10:36:35 +0200 Subject: [PATCH 125/236] Bad referance... --- commands/Misc/get.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/Misc/get.js b/commands/Misc/get.js index fe6f839..88e211e 100644 --- a/commands/Misc/get.js +++ b/commands/Misc/get.js @@ -1,5 +1,5 @@ const { SlashCommandBuilder } = require('@discordjs/builders') -const { CreateAndWrite } = require('../Util/someFun.js') +const { CreateAndWrite } = require('../../Util/someFun.js') const { MessageAttachment } = require('discord.js') module.exports = { From 8511a9ea353eaabcfbf038bef86383bf457e3f59 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 5 Jul 2022 11:10:25 +0200 Subject: [PATCH 126/236] New option for most subcommand --- commands/Misc/get.js | 52 ++++++++++++++++++++++++++++++++------------ 1 file changed, 38 insertions(+), 14 deletions(-) diff --git a/commands/Misc/get.js b/commands/Misc/get.js index 88e211e..fb16e1e 100644 --- a/commands/Misc/get.js +++ b/commands/Misc/get.js @@ -18,10 +18,13 @@ module.exports = { .addChoices({name: 'webp',value: 'webp'}, {name: 'png', value: 'png'}, {name: 'jpg', value: 'jpg'}, {name: 'jpeg', value: 'jpeg'}) .setRequired(true)) .addNumberOption(o => o - .setName('size') - .setDescription('At what size do you want the icon to be? (pixel)') - .addChoices({name: '16',value: 16},{name: '32',value: 32},{name: '56',value: 56},{name: '64',value: 64},{name: '96',value: 96},{name: '128',value: 128},{name: '256',value: 256},{name: '300',value: 300},{name: '512',value: 512},{name: '600',value: 600},{name: '1024',value: 1024},{name: '2048',value: 2048},{name: '4096',value: 4096}) - .setRequired(true))) + .setName('size') + .setDescription('At what size do you want the icon to be? (pixel)') + .addChoices({name: '16',value: 16},{name: '32',value: 32},{name: '56',value: 56},{name: '64',value: 64},{name: '96',value: 96},{name: '128',value: 128},{name: '256',value: 256},{name: '300',value: 300},{name: '512',value: 512},{name: '600',value: 600},{name: '1024',value: 1024},{name: '2048',value: 2048},{name: '4096',value: 4096}) + .setRequired(true)) + .addBooleanOption(o => o + .setName('name') + .setDescription('If you also want to get the name of the role (default: true)'))) .addSubcommand(sc => sc .setName('rcolor') .setDescription("Getting all Colors of all roles") @@ -31,10 +34,16 @@ module.exports = { .setRequired(true))) .addSubcommand(sc => sc .setName("emojis") - .setDescription("Getting all emojis of a server")) + .setDescription("Getting all emojis of a server") + .addBooleanOption(o => o + .setName('name') + .setDescription('If you also want to get the name of the emojis (default: true)'))) .addSubcommand(sc => sc .setName('stickers') - .setDescription('Getting all stickers of a server')), + .setDescription('Getting all stickers of a server') + .addBooleanOption(o => o + .setName('name') + .setDescription('If you also want to get the name of the stickers (default: true)'))), async execute(interaction) { await interaction.deferReply({ ephemeral: true }); const sc = interaction.options.getSubcommand(); @@ -58,14 +67,20 @@ module.exports = { const guildRoles = await interaction.guild.roles.fetch(); const format = interaction.options.getString("format"); const size = interaction.options.getNumber("size"); + const name = interaction.options.getBoolean('name'); + if (name === null) name = true; let ArrayURL = []; guildRoles.forEach(e => { - if (e.iconURL()) ArrayURL.push(`${e.iconURL({ format: format, size: size })} for ${e.name}`); + if (e.iconURL()) { + if (name) ArrayURL.push(`${e.iconURL({ format: format, size: size })} for ${e.name}`); + else if (!name) ArrayURL.push(`${e.iconURL({ format: format, size: size })}`); + }; }); if (ArrayURL) { - CreateAndWrite('/Tmp/log.txt', ArrayURL.join("\n")); + if (name) CreateAndWrite('/Tmp/log.txt', ArrayURL.join("\n")); + else if (!name) CreateAndWrite('/Tmp/log.txt', ArrayURL.join(' ')); interaction.followUp({files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}); } else if (!ArrayURL) { @@ -95,15 +110,19 @@ module.exports = { else if (sc === "emojis") { await interaction.guild.fetch(); let emojis = await interaction.guild.emojis.fetch(); + let name = interaction.options.getBoolean('name'); + if (name === null) name = true; let emojiArr = []; emojis.forEach(e => { - emojiArr.push(`${e.url} for ${e.name}`); + if (name) emojiArr.push(`${e.url} for ${e.name}`); + else if (!name) emojiArr.push(`${e.url}`); }); - CreateAndWrite('/Tmp/log.txt', emojiArr.join("\n")); - if (emojiArr.length) { + if (name) CreateAndWrite('/Tmp/log.txt', emojiArr.join("\n")); + else if (!name) CreateAndWrite('/Tmp/log.txt', emojiArr.join(' ')); + interaction.followUp({ files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')] }); } else if (!emojiArr.length) { @@ -113,15 +132,20 @@ module.exports = { else if (sc === "stickers") { await interaction.guild.fetch(); let stickers = await interaction.guild.stickers.fetch(); + let name = interaction.options.getBoolean('name'); + if (name === null) name = true; let stickersArr = []; stickers.forEach(e => { - stickersArr.push(`${e.url} for ${e.name}`); + if (name) stickersArr.push(`${e.url} for ${e.name}`); + else if (!name) stickersArr.push(`${e.url}`); }); - CreateAndWrite('/Tmp/log.txt', stickersArr.join("\n")); - + if (stickersArr.length) { + if (name) CreateAndWrite('/Tmp/log.txt', stickersArr.join("\n")); + else if (!name) CreateAndWrite('Tmp/log.txt', stickersArr.join(' ')) + interaction.followUp({ files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')] }); } else if (!stickersArr.length) { From a73986130c577af8b7d926c32500711d0156cf17 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 5 Jul 2022 11:18:58 +0200 Subject: [PATCH 127/236] If you update main.js for having folder in commands, you should change deploy command too --- deploy-commands.js | 16 ++++++++++++---- main.js | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/deploy-commands.js b/deploy-commands.js index febaf05..6e6c1ac 100644 --- a/deploy-commands.js +++ b/deploy-commands.js @@ -4,11 +4,19 @@ const { token, clientId, guildId } = require('./config.json'); const fs = require('node:fs'); const commands = []; -const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js')); +const commandFolders = fs.readdirSync(`${__dirname}/commands`); -for (const file of commandFiles) { - const command = require(`./commands/${file}`); - commands.push(command.data.toJSON()); +for (const folder of commandFolders) { + const commandFiles = fs.readdirSync(`${__dirname}/commands/${folder}`).filter(file => file.endsWith(".js")); + + for (const file of commandFiles) { + try { + const command = require(`${__dirname}/commands/${folder}/${file}`); + commands.push(command.data.toJSON()); + } catch (err) { + console.error(err); + } + } } const rest = new REST({ version: '9' }).setToken(token); diff --git a/main.js b/main.js index f330ca1..484d8cb 100644 --- a/main.js +++ b/main.js @@ -77,7 +77,7 @@ client.on("interactionCreate", async interaction => { try { await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true }); } catch { - await interaction.followUp({ content: 'There was an error while executing this command!', ephemeral: true }); + await interaction.followUp('There was an error while executing this command!'); }; }; }); From 875f80233aca1c330d17c1efb3c503eb0505ec93 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 6 Jul 2022 10:08:47 +0200 Subject: [PATCH 128/236] New readme file --- README.md | 14 +++++++------- commands/Misc/template.txt | 13 +++++++++++++ config.json.template | 6 +++--- main.js | 4 +++- 4 files changed, 26 insertions(+), 11 deletions(-) create mode 100644 commands/Misc/template.txt diff --git a/README.md b/README.md index 20f56e7..5319a5a 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,10 @@ This is a moderation bot for the Progressbar95 Fan Discord Server. This bot is made with the Node.js runtime. -1. Install Node.js 17 and Git. -2. Run `git clone https://github.com/5jiji/Progressbar-Ruler`. -3. Copy `config.json.template` to `config.json` and fill in the variables. -4. Run `npm i` to install the required modules. -5. Invite the bot with this link: `https://discord.com/oauth2/authorize?client_id=[ClientID]&permissions=8&scope=bot%20applications.commands` (replace `[ClientID]` with the bot's ID) -6. Register the slash commands with `node deploy-commands.js`. -7. Start the bot with `node .`. The database will automatically be created for you. \ No newline at end of file +1. Install Node.js 17. +2. Download the latest release [here](https://github.com/Progressbar-Discord-Server/Processes/releases) +2. Copy `config.json.template` to `config.json` and fill in the variables. +3. Run `npm i` to install the required modules. +4. Register the slash commands with `node deploy-commands.js`. +5. Start the bot with `node .`. The database will automatically be created for you. +6. Invite the bot with the link the console send \ No newline at end of file diff --git a/commands/Misc/template.txt b/commands/Misc/template.txt new file mode 100644 index 0000000..47db50f --- /dev/null +++ b/commands/Misc/template.txt @@ -0,0 +1,13 @@ +//This file is a template for creating your own command + + +const { SlashCommandBuilder } = require("@discordjs/builders") + +module.exports = { + data: new SlashCommandBuilder() + .setName("the name of your command") + .setDescription("the description of your command"), + async execute(interaction) { + interaction.reply("*code of the command here!*") + } +} \ No newline at end of file diff --git a/config.json.template b/config.json.template index e1cf9c3..7f32c13 100644 --- a/config.json.template +++ b/config.json.template @@ -2,6 +2,6 @@ "Token":"The token of the bot", "clientId":"The id of the bot", "guildId":"The id of the discord server", - "sqlPass":"A password, can be empty", - "logCha":"The id of a log channel" -} + "logCha":"The id of a log channel", + "sqlPass":"A password for the database, can be empty" +} \ No newline at end of file diff --git a/main.js b/main.js index 484d8cb..804387c 100644 --- a/main.js +++ b/main.js @@ -1,6 +1,6 @@ const fs = require('node:fs'); const { Client, Collection } = require('discord.js'); -const { token } = require('./config.json'); +const { token, clientId } = require('./config.json'); client = new Client({ intents: 33282, presence: { status: 'idle' }}); client.db = require('./Util/database') @@ -82,4 +82,6 @@ client.on("interactionCreate", async interaction => { }; }); +console.log(`https://discord.com/oauth2/authorize?client_id=${clientId}&permissions=1644971949567&scope=bot%20applications.commands`) + client.login(token); \ No newline at end of file From 9660b82a40159bd4e3cd28efb3bae045e74ee4be Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 6 Jul 2022 17:03:00 +0200 Subject: [PATCH 129/236] Good thing incoming --- commands/Misc/template.txt | 1 - commands/Moderation/ban.js | 6 ++--- commands/Moderation/lock.js | 22 +++++++++---------- commands/Moderation/slowmode.js | 8 +++---- commands/Moderation/unlock.js | 28 ++++++++++------------- main.js | 39 +++++++++++++++++++-------------- messages/Fun/AtSomeone.js | 19 ++++++++++++++++ 7 files changed, 71 insertions(+), 52 deletions(-) create mode 100644 messages/Fun/AtSomeone.js diff --git a/commands/Misc/template.txt b/commands/Misc/template.txt index 47db50f..f8a17d8 100644 --- a/commands/Misc/template.txt +++ b/commands/Misc/template.txt @@ -1,6 +1,5 @@ //This file is a template for creating your own command - const { SlashCommandBuilder } = require("@discordjs/builders") module.exports = { diff --git a/commands/Moderation/ban.js b/commands/Moderation/ban.js index 11da593..3a32f6c 100644 --- a/commands/Moderation/ban.js +++ b/commands/Moderation/ban.js @@ -41,13 +41,10 @@ module.exports = { .setColor("#00FF00") .setDescription(`**${member.user.tag} has been banned for:** ${reason}`); - await member.user.send({ embeds: [dmEmbed] }) + await member.user.send({ embeds: [dmEmbed] }); if (!joke) { await member.ban({ days: days, reason: reason }); - } - await interaction.reply({ embeds: [replyEmbed] }); - if (!joke) { db.create({ Executor: interaction.member.user.id, userID: member.user.id, @@ -55,5 +52,6 @@ module.exports = { type: "ban" }); }; + await interaction.reply({ embeds: [replyEmbed] }); } } \ No newline at end of file diff --git a/commands/Moderation/lock.js b/commands/Moderation/lock.js index 027fea1..5a92ad7 100644 --- a/commands/Moderation/lock.js +++ b/commands/Moderation/lock.js @@ -1,34 +1,34 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); const { MessageEmbed } = require('discord.js'); +const { ChannelType } = require('discord-api-types/v10'); module.exports = { data: new SlashCommandBuilder() .setName('lock') - .setDescription("lock a channel") + .setDescription("Lock a channel") .addChannelOption(o => o .setName("channel") .setDescription("The channel to lock") - .addChannelTypes(0) + .addChannelTypes(ChannelType.GuildText) .setRequired(true)) .addStringOption(o => o .setName("reason") .setDescription("Why should this channel be locked?")), async execute(interaction) { let channel = interaction.options.getChannel("channel"); - let reason = interaction.options.getString("reason"); - const replyEmbed = new MessageEmbed(); - - if (!reason) reason = "No reason provided"; - + let reason = interaction.options.getString("reason") || "No reason provided"; + channel.permissionOverwrites.edit(interaction.guildId, { SEND_MESSAGES: false, SEND_MESSAGES_IN_THREADS: false, CREATE_PUBLIC_THREADS: false, CREATE_PRIVATE_THREADS: false, }, { reason: reason, type: 0 }); - - replyEmbed.setColor("#00FF00"); - replyEmbed.setDescription("Channel locked"); - interaction.reply({ embeds: [replyEmbed] }); + + const replyEmbed = new MessageEmbed() + .setColor("#00FF00") + .setDescription("Channel locked"); + + interaction.reply({ embeds: [replyEmbed] }); } } \ No newline at end of file diff --git a/commands/Moderation/slowmode.js b/commands/Moderation/slowmode.js index 3487684..ad468be 100644 --- a/commands/Moderation/slowmode.js +++ b/commands/Moderation/slowmode.js @@ -1,11 +1,11 @@ const { SlashCommandBuilder } = require('@discordjs/builders') const { MessageEmbed } = require('discord.js'); -const { ChannelType } = require("discord-api-types/payloads/v10") +const { ChannelType } = require("discord-api-types/v10") module.exports = { data: new SlashCommandBuilder() .setName('slowmode') - .setDescription("set a slowmode in a channel") + .setDescription("Set a slowmode in a channel") .addChannelOption(o => o .setName("channel") .setDescription("What channel do you want to apply slowmode to?") @@ -13,12 +13,12 @@ module.exports = { .addChannelTypes(ChannelType.GuildText)) .addStringOption(o => o .setName('unit') - .setDescription('the unit of time') + .setDescription('The unit of time') .setRequired(true) .addChoices({ name: 'seconds', value: 'seconds' }, { name: 'minutes', value: 'minutes' }, { name: 'hours', value: 'hours' })) .addIntegerOption(o => o .setName("duration") - .setDescription('the duration') + .setDescription('The duration') .setRequired(true)) .addStringOption(o => o .setName("reason") diff --git a/commands/Moderation/unlock.js b/commands/Moderation/unlock.js index 26ff2b1..3078528 100644 --- a/commands/Moderation/unlock.js +++ b/commands/Moderation/unlock.js @@ -1,13 +1,15 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); const { MessageEmbed } = require('discord.js'); +const { ChannelType } = require('discord-api-types/v10') module.exports = { data: new SlashCommandBuilder() .setName('unlock') - .setDescription("unlock a channel") + .setDescription("Unlock a channel") .addChannelOption(o => o .setName("channel") - .setDescription("the channel to lock") + .setDescription("The channel to lock") + .addChannelTypes(ChannelType.GuildText) .setRequired(true)) .addStringOption(o => o .setName("reason") @@ -15,22 +17,16 @@ module.exports = { async execute(interaction) { const replyEmbed = new MessageEmbed() let channel = interaction.options.getChannel("channel"); - let reason = interaction.options.getString("reason"); + let reason = interaction.options.getString("reason") || "No reason provided"; - if (!reason) reason = "No reason provided"; - - if (channel.type === "GUILD_NEWS") { - return interaction.reply("No"); - } else if (channel.type === "GUILD_TEXT") { - channel.permissionOverwrites.edit(interaction.guildId, { - SEND_MESSAGES: true, - SEND_MESSAGES_IN_THREADS: true, - CREATE_PUBLIC_THREADS: true, - CREATE_PRIVATE_THREADS: true, - }, { reason: reason, type: 0 }) + channel.permissionOverwrites.edit(interaction.guildId, { + SEND_MESSAGES: true, + SEND_MESSAGES_IN_THREADS: true, + CREATE_PUBLIC_THREADS: true, + CREATE_PRIVATE_THREADS: true, + }, { reason: reason, type: 0 }) .setDescription("Channel unlocked") .setColor("#00FF00"); - interaction.reply({embeds: [replyEmbed]}); - } + interaction.reply({ embeds: [replyEmbed] }); } } \ No newline at end of file diff --git a/main.js b/main.js index 804387c..8489b2c 100644 --- a/main.js +++ b/main.js @@ -3,7 +3,7 @@ const { Client, Collection } = require('discord.js'); const { token, clientId } = require('./config.json'); client = new Client({ intents: 33282, presence: { status: 'idle' }}); -client.db = require('./Util/database') +client.db = require('./Util/database'); client.commands = new Collection(); const commandFolders = fs.readdirSync(`${__dirname}/commands`); @@ -19,10 +19,9 @@ for (const folder of commandFolders) { console.log(`Command "${command.data.name}" has been loaded`); } catch (err) { console.error(err); - } - } -} - + }; + }; +}; console.log("All command have been loaded"); client.messages = new Collection(); @@ -30,7 +29,7 @@ const messageFolders = fs.readdirSync(`${__dirname}/messages`); for (const folder of messageFolders) { const messagesFiles = fs.readdirSync(`${__dirname}/messages/${folder}`).filter(file => file.endsWith(".js")); - console.log(`Next messages are loading from "${folder}"`) + console.log(`Next messages are loading from "${folder}"`); for (const file of messagesFiles) { try { @@ -39,19 +38,27 @@ for (const folder of messageFolders) { console.log(`Message "${message.message}" has been loaded`); } catch (err) { console.error(err); - } - } -} - + }; + }; +}; console.log("All message has been loaded"); -client.once('ready', () => { +client.once('ready', async () => { client.db.Cases.sync(); + let guilds = await client.guilds.fetch() + + guilds.forEach(async guild => { + let guildFetched = await guild.fetch() + await guildFetched.channels.fetch() + console.log(`Channels of ${guildFetched.name} loaded`) + }); + console.log(`Login as ${client.user.tag}`); -}) +}); client.on('messageCreate', async messages => { - console.log(messages.content); + if (messages.author.id === client.user.id) return; + console.log(messages.content) const message = client.messages.get(messages.content); if (!message) return; @@ -60,8 +67,8 @@ client.on('messageCreate', async messages => { await message.execute(messages); } catch (err) { console.error(err); - } -}) + }; +}); client.on("interactionCreate", async interaction => { if (!interaction.isCommand()) return; @@ -82,6 +89,6 @@ client.on("interactionCreate", async interaction => { }; }); -console.log(`https://discord.com/oauth2/authorize?client_id=${clientId}&permissions=1644971949567&scope=bot%20applications.commands`) +console.log(`https://discord.com/oauth2/authorize?client_id=${clientId}&permissions=1644971949567&scope=bot%20applications.commands`); client.login(token); \ No newline at end of file diff --git a/messages/Fun/AtSomeone.js b/messages/Fun/AtSomeone.js new file mode 100644 index 0000000..556386f --- /dev/null +++ b/messages/Fun/AtSomeone.js @@ -0,0 +1,19 @@ +const { GuildMember } = require('discord.js'); +const { AtSomeone } = require('../../config.json') || false; + +module.exports = { + message: '@someone', + async execute(message) { + if (AtSomeone) { + let memberList = await message.guild.members.fetch({ force: true }); + let member = memberList.random(); + + if (!(member instanceof GuildMember)) { + await message.guild.members.fetch(member); + } + + console.log(member) + message.channel.send(`<@${member.user.id}>`); + } + } +} \ No newline at end of file From 8f647d309c55285febd1494cbf9cdd5f2edd4e06 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 6 Jul 2022 17:11:28 +0200 Subject: [PATCH 130/236] FORGOT TO DELETE THAT FRICKING CONSOLE.LOG --- main.js | 1 - 1 file changed, 1 deletion(-) diff --git a/main.js b/main.js index 8489b2c..daf7dec 100644 --- a/main.js +++ b/main.js @@ -58,7 +58,6 @@ client.once('ready', async () => { client.on('messageCreate', async messages => { if (messages.author.id === client.user.id) return; - console.log(messages.content) const message = client.messages.get(messages.content); if (!message) return; From c30e6908a9b7655e6c90497e25776c74ee643196 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 6 Jul 2022 18:01:25 +0200 Subject: [PATCH 131/236] Go on, i do some big work today uh --- commands/Moderation/ban.js | 56 +++++++++++++++++++++++----------- commands/Moderation/timeout.js | 14 ++++++--- main.js | 2 +- 3 files changed, 49 insertions(+), 23 deletions(-) diff --git a/commands/Moderation/ban.js b/commands/Moderation/ban.js index 3a32f6c..49f46b6 100644 --- a/commands/Moderation/ban.js +++ b/commands/Moderation/ban.js @@ -1,5 +1,6 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); const { MessageEmbed, GuildMember } = require('discord.js'); +const { logCha } = require('../../config.json') module.exports = { data: new SlashCommandBuilder() @@ -21,6 +22,7 @@ module.exports = { .setName("time") .setDescription("How long to ban this member?")), async execute(interaction) { + interaction.deferReply() const member = interaction.options.getMember("member", true); const guild = interaction.guild; const db = interaction.client.db.Cases; @@ -31,27 +33,45 @@ module.exports = { if (!(member instanceof GuildMember)) { await guild.members.fetch(member); }; - - if (member.id === interaction.client.user.id) return interaction.reply("❌ Why would you ban me? 😢"); - + + if (member.id === interaction.client.user.id) return interaction.followUp("❌ Why would you ban me? 😢"); + + const dmEmbed = new MessageEmbed() - .setColor("#FF0000") + .setColor("#f04a47") .setDescription(`You have been banned for: ${reason}`); const replyEmbed = new MessageEmbed() - .setColor("#00FF00") + .setColor("#43b582") .setDescription(`**${member.user.tag} has been banned for:** ${reason}`); + const logEmbed = new MessageEmbed() + .setColor("#f04a47") + .addFields( + {name: '**User**', value: `${member}`, inline: true }, + {name: '**Moderator**', value: `${interaction.member}`, inline: true}, + {name: '**Reason**', value: `${reason}`, inline: true} + ) + + await member.user.send({ embeds: [dmEmbed] }); + + if (!joke) { + try { + await member.ban({ days: days, reason: reason }); + } catch (err) { + console.error(err) + return interaction.followUp('Erf, i can\'t do that') + } + + db.create({ + Executor: interaction.user.id, + userID: member.user.id, + reason: reason, + type: "ban" + }); + + }; + let logChannel = await guild.channels.fetch(logCha) + logChannel.send({ embeds: [logEmbed] }) - await member.user.send({ embeds: [dmEmbed] }); - if (!joke) { - await member.ban({ days: days, reason: reason }); - - db.create({ - Executor: interaction.member.user.id, - userID: member.user.id, - reason: reason, - type: "ban" - }); - }; - await interaction.reply({ embeds: [replyEmbed] }); - } + await interaction.followUp({ embeds: [replyEmbed] }); + } } \ No newline at end of file diff --git a/commands/Moderation/timeout.js b/commands/Moderation/timeout.js index 02738af..dee1011 100644 --- a/commands/Moderation/timeout.js +++ b/commands/Moderation/timeout.js @@ -1,5 +1,5 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); -const { MessageEmbed } = require('discord.js'); +const { MessageEmbed, GuildMember } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() @@ -17,6 +17,8 @@ module.exports = { .addIntegerOption(o => o .setName("duration") .setDescription('How long should this user be timed out for? (max 28 days)') + .setMaxValue(60) + .setMinValue(1) .setRequired(true)) .addStringOption(o => o .setName("reason") @@ -29,6 +31,10 @@ module.exports = { let reason = interaction.options.getString('reason') || "No reason provided"; const replyEmbed = new MessageEmbed(); + if (!(member instanceof GuildMember)) { + await interaction.guild.member.fetch(member) + } + if (member.id === interaction.client.user.id) { if (!reason || reason === "No reason provided")return interaction.reply(`Timed out undefined for ${RealLen} ${unit}`); else if (reason || reason !== "No reason provided") return interaction.reply(`Timed out undefined for ${RealLen} ${unit} for **${reason}.**`)}; @@ -41,17 +47,17 @@ module.exports = { if (length > 2.419e+9) { replyEmbed.setColor("#FF0000"); replyEmbed.setDescription(`**I cannot timeout ${user.tag} for that long! You provided a time longer than 28 days!**`); - await interaction.reply({embeds:[replyEmbed]}); + await interaction.reply({ embeds:[replyEmbed] }); } else { - member.timeout(length, reason + " | Timeout by " + interaction.member.user.tag) + member.timeout(length, reason + " | Timeout by " + interaction.member.user) .then(async () => { replyEmbed.setDescription(`Timed out ${member} for **${RealLen} ${unit}** for **"${reason}".**`); replyEmbed.setColor("#00FF00"); await interaction.reply({embeds:[replyEmbed]}); }) .catch(async error => { - console.log(error); + console.error(error); replyEmbed.setDescription(`**I cannot timeout ${member.tag}! They have admin permissions!**`); replyEmbed.setColor("#FF0000"); await interaction.reply({embeds: [replyEmbed], ephemeral: true}); diff --git a/main.js b/main.js index daf7dec..166ac9a 100644 --- a/main.js +++ b/main.js @@ -50,7 +50,7 @@ client.once('ready', async () => { guilds.forEach(async guild => { let guildFetched = await guild.fetch() await guildFetched.channels.fetch() - console.log(`Channels of ${guildFetched.name} loaded`) + console.log(`Channels of ${guildFetched.name} loaded (${guildFetched.id})`) }); console.log(`Login as ${client.user.tag}`); From eeee899172f847eb92ee95e7431260271f575723 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 6 Jul 2022 19:35:13 +0200 Subject: [PATCH 132/236] Get compresed, main --- Util/GetJSFile.js | 65 +++++++++++++++++ config.json.template | 1 + events/Interaction/InteractionCreate.js | 22 ++++++ events/client/ready.js | 16 +++++ events/message/MessageCreate.js | 16 +++++ main.js | 94 ++----------------------- 6 files changed, 127 insertions(+), 87 deletions(-) create mode 100644 Util/GetJSFile.js create mode 100644 events/Interaction/InteractionCreate.js create mode 100644 events/client/ready.js create mode 100644 events/message/MessageCreate.js diff --git a/Util/GetJSFile.js b/Util/GetJSFile.js new file mode 100644 index 0000000..decd2a7 --- /dev/null +++ b/Util/GetJSFile.js @@ -0,0 +1,65 @@ +const fs = require('node:fs') + +async function GetCommandFile(Where) { + const Folder = fs.readdirSync(`${__dirname}/../commands`) + + for (const folder of Folder) { + const commandFiles = fs.readdirSync(`${__dirname}/../commands/${folder}`).filter(file => file.endsWith(".js")); + console.log(`Next commands are loading from "${folder}"`); + + for (const file of commandFiles) { + try { + const command = require(`${__dirname}/../commands/${folder}/${file}`); + Where.set(command.data.name, command); + console.log(` Command "${command.data.name}" has been loaded`); + } catch (err) { + console.error(err); + }; + }; + }; +}; + +async function GetMessageFile(Where) { + const Folder = fs.readdirSync(`${__dirname}/../messages`) + + for (const folder of Folder) { + const messagesFiles = fs.readdirSync(`${__dirname}/../messages/${folder}`).filter(file => file.endsWith(".js")); + console.log(`Next messages are loading from "${folder}"`); + + for (const file of messagesFiles) { + try { + const message = require(`${__dirname}/../messages/${folder}/${file}`); + Where.set(message.message, message); + console.log(` Message "${message.message}" has been loaded`); + } catch (err) { + console.error(err); + }; + }; + }; +}; + +async function GetEventFile(client) { + const Folder = fs.readdirSync(`${__dirname}/../events`); + + for (const folder of Folder) { + const eventFiles = fs.readdirSync(`${__dirname}/../events/${folder}`).filter(file => file.endsWith(".js")); + console.log(`Next Events are loading from "${folder}"`); + + for (const file of eventFiles) { + try { + const event = require(`${__dirname}/../events/${folder}/${file}`); + if (event.on) { + client.on(event.name, event.execute); + } + else if (!event.on) { + client.once(event.name, event.execute); + }; + console.log(` Event ${event.name} has been loaded`) + } catch (err) { + console.error(err); + }; + }; + }; +}; + +module.exports = { GetCommandFile, GetMessageFile, GetEventFile } \ No newline at end of file diff --git a/config.json.template b/config.json.template index 7f32c13..9eed04c 100644 --- a/config.json.template +++ b/config.json.template @@ -3,5 +3,6 @@ "clientId":"The id of the bot", "guildId":"The id of the discord server", "logCha":"The id of a log channel", + "starBoardCha":"The Starboard channel" "sqlPass":"A password for the database, can be empty" } \ No newline at end of file diff --git a/events/Interaction/InteractionCreate.js b/events/Interaction/InteractionCreate.js new file mode 100644 index 0000000..d1be7ea --- /dev/null +++ b/events/Interaction/InteractionCreate.js @@ -0,0 +1,22 @@ +module.exports = { + name: '', + on: true, + async execute(interaction) { + if (!interaction.isCommand()) return; + + const command = client.commands.get(interaction.commandName); + + if (!command) return; + + try { + await command.execute(interaction); + } catch (err) { + console.error(err); + try { + await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true }); + } catch { + await interaction.followUp('There was an error while executing this command!'); + }; + }; + } +} \ No newline at end of file diff --git a/events/client/ready.js b/events/client/ready.js new file mode 100644 index 0000000..0244c49 --- /dev/null +++ b/events/client/ready.js @@ -0,0 +1,16 @@ +module.exports = { + name: 'ready', + on: false, + async execute() { + client.db.Cases.sync(); + let guilds = await client.guilds.fetch() + + guilds.forEach(async guild => { + let guildFetched = await guild.fetch() + await guildFetched.channels.fetch() + console.log(`Channels of ${guildFetched.name} loaded (${guildFetched.id})`) + }); + + console.log(`Login as ${client.user.tag}`); + } +} \ No newline at end of file diff --git a/events/message/MessageCreate.js b/events/message/MessageCreate.js new file mode 100644 index 0000000..0c0feee --- /dev/null +++ b/events/message/MessageCreate.js @@ -0,0 +1,16 @@ +module.exports = { + name: "messageCreate", + on: true, + async execute(messages) { + if (messages.author.id === client.user.id) return; + const message = client.messages.get(messages.content); + + if (!message) return; + + try { + await message.execute(messages); + } catch (err) { + console.error(err); + }; + } +} \ No newline at end of file diff --git a/main.js b/main.js index 130d09a..f8a2eac 100644 --- a/main.js +++ b/main.js @@ -1,5 +1,5 @@ -const fs = require('node:fs'); const { Client, Collection } = require('discord.js'); +const { GetCommandFile, GetMessageFile, GetEventFile } = require('./Util/GetJSFile.js') const { token, clientId } = require('./config.json'); client = new Client({ intents: 33282, presence: { status: 'idle' }}); @@ -7,97 +7,17 @@ client.db = require('./Util/database'); // initiation of all slash commands client.commands = new Collection(); -const commandFolders = fs.readdirSync(`${__dirname}/commands`); -for (const folder of commandFolders) { - const commandFiles = fs.readdirSync(`${__dirname}/commands/${folder}`).filter(file => file.endsWith(".js")); - console.log(`Next commands are loading from "${folder}"`); - - for (const file of commandFiles) { - try { - const command = require(`${__dirname}/commands/${folder}/${file}`); - client.commands.set(command.data.name, command); - console.log(`Command "${command.data.name}" has been loaded`); - } catch (err) { - console.error(err); - }; - }; -}; -console.log("All command have been loaded"); +GetCommandFile(client.commands); +console.log(" All Commands have been loaded"); client.messages = new Collection(); -const messageFolders = fs.readdirSync(`${__dirname}/messages`); - -for (const folder of messageFolders) { - const messagesFiles = fs.readdirSync(`${__dirname}/messages/${folder}`).filter(file => file.endsWith(".js")); - console.log(`Next messages are loading from "${folder}"`); - - for (const file of messagesFiles) { - try { - const message = require(`${__dirname}/messages/${folder}/${file}`); - client.messages.set(message.message, message); - console.log(`Message "${message.message}" has been loaded`); - } catch (err) { - console.error(err); - }; - }; -}; -console.log("All message has been loaded"); - -client.once('ready', async () => { - client.db.Cases.sync(); - let guilds = await client.guilds.fetch() - - guilds.forEach(async guild => { - let guildFetched = await guild.fetch() - await guildFetched.channels.fetch() - console.log(`Channels of ${guildFetched.name} loaded (${guildFetched.id})`) - }); - - console.log(`Login as ${client.user.tag}`); -}); - -client.on('messageCreate', async messages => { - if (messages.author.id === client.user.id) return; - const message = client.messages.get(messages.content); - - if (!message) return; - - try { - await message.execute(messages); - } catch (err) { - console.error(err); - }; -}); - -client.on("messageReactionAdd", async (reaction, user) => { - - try { - add(reaction, user); - } - catch (err) { - console.error(err); - } -}) - -client.on("interactionCreate", async interaction => { - if (!interaction.isCommand()) return; - - const command = client.commands.get(interaction.commandName); - if (!command) return; +GetMessageFile(client.messages); +console.log(" All Messages has been loaded"); - try { - await command.execute(interaction); - } catch (err) { - console.error(err); - try { - await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true }); - } catch { - await interaction.followUp('There was an error while executing this command!'); - }; - }; -}); +GetEventFile(client) +console.log(' All Events has been loaded') console.log(`https://discord.com/oauth2/authorize?client_id=${clientId}&permissions=1644971949567&scope=bot%20applications.commands`); From 4a101c024b22ec06cc82e7bf87962e88c5062459 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 6 Jul 2022 21:14:46 +0200 Subject: [PATCH 133/236] First iteration of the starboard! --- events/message/StarBoard.js | 23 +++++++++++++++++++++++ main.js | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 events/message/StarBoard.js diff --git a/events/message/StarBoard.js b/events/message/StarBoard.js new file mode 100644 index 0000000..d4739a4 --- /dev/null +++ b/events/message/StarBoard.js @@ -0,0 +1,23 @@ +const { starBoardCha } = require('../../config.json') +const { MessageEmbed } = require('discord.js'); + +module.exports = { + name: 'messageReactionAdd', + on: true, + async execute(reaction, user) { + const message = reaction.message; + let count = reaction.count; + if (message.author.id === user.id) count=count-1; + if (message.channel.id === starBoardCha || reaction.emoji.name !== '⭐' || count !== 1) return; + + const starEmbed = new MessageEmbed() + .setColor('#337fd5') + .setAuthor({name: message.author.tag, iconURL: message.author.displayAvatarURL({extension: 'png', size: 4096})}) + .setThumbnail() + .setDescription(`${message.content}`) + .addField("_ _", `[https://discord.com/channels/${message.guild.id}/${message.channel.id}/${message.id}](Click to jump to message!)`) + + let starCha = await message.client.guilds.cache.get('974018133021048882').channels.fetch(starBoardCha) + starCha.send({ content: `⭐ **${reaction.count}** | ${message.channel}`, embeds: [starEmbed] }) + } +} \ No newline at end of file diff --git a/main.js b/main.js index f8a2eac..ebaf0ef 100644 --- a/main.js +++ b/main.js @@ -2,7 +2,7 @@ const { Client, Collection } = require('discord.js'); const { GetCommandFile, GetMessageFile, GetEventFile } = require('./Util/GetJSFile.js') const { token, clientId } = require('./config.json'); -client = new Client({ intents: 33282, presence: { status: 'idle' }}); +client = new Client({ intents: 34306, presence: { status: 'idle' }}); client.db = require('./Util/database'); // initiation of all slash commands From 95d74d3241452cd03032a976e84ce5e0adf94950 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 6 Jul 2022 22:48:55 +0200 Subject: [PATCH 134/236] Some changes --- Util/GetJSFile.js | 12 +++++----- Util/database.js | 32 ++++++++++++++++++++++----- commands/{Misc => Moderation}/list.js | 6 ++--- config.json.template | 1 + events/client/ready.js | 5 +++++ main.js | 9 ++++---- 6 files changed, 46 insertions(+), 19 deletions(-) rename commands/{Misc => Moderation}/list.js (94%) diff --git a/Util/GetJSFile.js b/Util/GetJSFile.js index decd2a7..9c056e3 100644 --- a/Util/GetJSFile.js +++ b/Util/GetJSFile.js @@ -5,13 +5,13 @@ async function GetCommandFile(Where) { for (const folder of Folder) { const commandFiles = fs.readdirSync(`${__dirname}/../commands/${folder}`).filter(file => file.endsWith(".js")); - console.log(`Next commands are loading from "${folder}"`); + console.log(` Next commands are loading from "${folder}"`); for (const file of commandFiles) { try { const command = require(`${__dirname}/../commands/${folder}/${file}`); Where.set(command.data.name, command); - console.log(` Command "${command.data.name}" has been loaded`); + console.log(` Command "${command.data.name}" has been loaded`); } catch (err) { console.error(err); }; @@ -24,13 +24,13 @@ async function GetMessageFile(Where) { for (const folder of Folder) { const messagesFiles = fs.readdirSync(`${__dirname}/../messages/${folder}`).filter(file => file.endsWith(".js")); - console.log(`Next messages are loading from "${folder}"`); + console.log(` Next messages are loading from "${folder}"`); for (const file of messagesFiles) { try { const message = require(`${__dirname}/../messages/${folder}/${file}`); Where.set(message.message, message); - console.log(` Message "${message.message}" has been loaded`); + console.log(` Message "${message.message}" has been loaded`); } catch (err) { console.error(err); }; @@ -43,7 +43,7 @@ async function GetEventFile(client) { for (const folder of Folder) { const eventFiles = fs.readdirSync(`${__dirname}/../events/${folder}`).filter(file => file.endsWith(".js")); - console.log(`Next Events are loading from "${folder}"`); + console.log(` Next Events are loading from "${folder}"`); for (const file of eventFiles) { try { @@ -54,7 +54,7 @@ async function GetEventFile(client) { else if (!event.on) { client.once(event.name, event.execute); }; - console.log(` Event ${event.name} has been loaded`) + console.log(` Event ${event.name} has been loaded`) } catch (err) { console.error(err); }; diff --git a/Util/database.js b/Util/database.js index 253d8ee..a77eeb5 100644 --- a/Util/database.js +++ b/Util/database.js @@ -2,25 +2,47 @@ const Sequelize = require('sequelize'); const { sqlPass } = require('../config.json') // Once the database system will be changed, even minor change, pls change the 'password' entry to sqlPass -const sequelize = new Sequelize('database', 'user', 'password', { +const sequelize = new Sequelize('database', 'user', sqlPass, { host: 'localhost', dialect: 'sqlite', logging: false, storage: 'database.sqlite' }) +const Star = sequelize.define('message', { + messageId: { + type: Sequelize.TEXT, + unique: true, + }, + messageIdBot: { + type: Sequelize.TEXT, + defaultValue: null, + unique: true, + }, + StaredItself: { + type: Sequelize.BOOLEAN, + defaultValue: false, + }, + NumberStar: { + type: Sequelize.NUMBER, + defaultValue: 0, + } +}) + const Cases = sequelize.define('cases', { - userID:{ + userID: { type: Sequelize.NUMBER, }, reason: { type: Sequelize.TEXT, - defaultValue: "No reason provided" + defaultValue: "No reason provided", + }, + Executor: { + type: Sequelize.NUMBER, }, - Executor: Sequelize.NUMBER, type: { type: Sequelize.STRING, } }); -module.exports = { Cases } \ No newline at end of file +module.exports = { Cases, Star } \ No newline at end of file diff --git a/commands/Misc/list.js b/commands/Moderation/list.js similarity index 94% rename from commands/Misc/list.js rename to commands/Moderation/list.js index 7e7a565..88a43e5 100644 --- a/commands/Misc/list.js +++ b/commands/Moderation/list.js @@ -92,7 +92,7 @@ module.exports = { interaction.followUp({ content: list }); } else if (list === "") { - interaction.followUp({ content: "There is no warn" }); + interaction.followUp({ content: "There is no bans" }); }; } else if (subcommand === "kicks") { @@ -127,8 +127,8 @@ module.exports = { interaction.followUp({ content: list }); } else if (list === "") { - interaction.followUp({ content: "There is no warn" }); + interaction.followUp({ content: "There is no kicks" }); }; }; } -} +}; diff --git a/config.json.template b/config.json.template index 9eed04c..7ed3c1e 100644 --- a/config.json.template +++ b/config.json.template @@ -4,5 +4,6 @@ "guildId":"The id of the discord server", "logCha":"The id of a log channel", "starBoardCha":"The Starboard channel" + "showLink": "Showing the link for inviting the bot, set 'false' to desactivate it", "sqlPass":"A password for the database, can be empty" } \ No newline at end of file diff --git a/events/client/ready.js b/events/client/ready.js index 0244c49..2831bd4 100644 --- a/events/client/ready.js +++ b/events/client/ready.js @@ -1,3 +1,5 @@ +const { showLink } = require('../../config.json') + module.exports = { name: 'ready', on: false, @@ -10,6 +12,9 @@ module.exports = { await guildFetched.channels.fetch() console.log(`Channels of ${guildFetched.name} loaded (${guildFetched.id})`) }); + if (showLink) { + console.log(`https://discord.com/oauth2/authorize?client_id=${clientId}&permissions=1644971949567&scope=bot%20applications.commands`); + } console.log(`Login as ${client.user.tag}`); } diff --git a/main.js b/main.js index ebaf0ef..4d32bef 100644 --- a/main.js +++ b/main.js @@ -1,24 +1,23 @@ const { Client, Collection } = require('discord.js'); const { GetCommandFile, GetMessageFile, GetEventFile } = require('./Util/GetJSFile.js') -const { token, clientId } = require('./config.json'); +const { token } = require('./config.json'); client = new Client({ intents: 34306, presence: { status: 'idle' }}); client.db = require('./Util/database'); // initiation of all slash commands client.commands = new Collection(); - +console.log('Initialization of / commands') GetCommandFile(client.commands); console.log(" All Commands have been loaded"); +console.log('Initialization of messages') client.messages = new Collection(); - GetMessageFile(client.messages); console.log(" All Messages has been loaded"); +console.log('Initialization of events') GetEventFile(client) console.log(' All Events has been loaded') -console.log(`https://discord.com/oauth2/authorize?client_id=${clientId}&permissions=1644971949567&scope=bot%20applications.commands`); - client.login(token); \ No newline at end of file From 9f722e12d9bdc2c795fb292f139faf20a4677d09 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 6 Jul 2022 23:09:07 +0200 Subject: [PATCH 135/236] Eh, doesn't want to work still... --- events/client/ready.js | 2 ++ events/message/StarBoard.js | 50 ++++++++++++++++++++++++++----------- 2 files changed, 37 insertions(+), 15 deletions(-) diff --git a/events/client/ready.js b/events/client/ready.js index 2831bd4..781fc89 100644 --- a/events/client/ready.js +++ b/events/client/ready.js @@ -5,6 +5,8 @@ module.exports = { on: false, async execute() { client.db.Cases.sync(); + client.db.Star.sync(); + let guilds = await client.guilds.fetch() guilds.forEach(async guild => { diff --git a/events/message/StarBoard.js b/events/message/StarBoard.js index d4739a4..af2544b 100644 --- a/events/message/StarBoard.js +++ b/events/message/StarBoard.js @@ -1,4 +1,4 @@ -const { starBoardCha } = require('../../config.json') +const { starBoardCha } = require('../../config.json'); const { MessageEmbed } = require('discord.js'); module.exports = { @@ -6,18 +6,38 @@ module.exports = { on: true, async execute(reaction, user) { const message = reaction.message; - let count = reaction.count; - if (message.author.id === user.id) count=count-1; - if (message.channel.id === starBoardCha || reaction.emoji.name !== '⭐' || count !== 1) return; - - const starEmbed = new MessageEmbed() - .setColor('#337fd5') - .setAuthor({name: message.author.tag, iconURL: message.author.displayAvatarURL({extension: 'png', size: 4096})}) - .setThumbnail() - .setDescription(`${message.content}`) - .addField("_ _", `[https://discord.com/channels/${message.guild.id}/${message.channel.id}/${message.id}](Click to jump to message!)`) - - let starCha = await message.client.guilds.cache.get('974018133021048882').channels.fetch(starBoardCha) - starCha.send({ content: `⭐ **${reaction.count}** | ${message.channel}`, embeds: [starEmbed] }) + if (message.channel.id === starBoardCha || reaction.emoji.name !== '⭐') return; + let db = reaction.client.db.Star; + + await db.findOrCreate({ where: { messageId: message.id } }); + + if (message.author.id === user.id) db.update({StaredItself: true}, {where: { messageId: message.id }}); + let dbInfo = db.findOne({ where: { messageId: message.id } }); + let count = dbInfo.NumberStar + 1; + db.update({ NumberStar: count }, { where: { messageId: message.id } }) + + if (dbInfo.StaredItself) count=count-1; + if (count !== 1) return; + + if (dbInfo.messageIdBot !== null) { + const starEmbed = new MessageEmbed() + .setColor('#337fd5') + .setAuthor({ name: message.author.tag, iconURL: message.author.displayAvatarURL({ extension: 'png', size: 4096 })}) + .setThumbnail() + .setDescription(`${message.content}`) + .addField("_ _", `[Click to jump to message!](https://discord.com/channels/${message.guild.id}/${message.channel.id}/${message.id})`); + + if (message.attachments) { + message.attachments.forEach(e => { + console.log(message.attachments.contentType); + if (message.attachments.contentType === "Image") { + starEmbed.setImage(e.url); + }; + }); + }; + + let starCha = await message.client.guilds.cache.get('974018133021048882').channels.fetch(starBoardCha); + starCha.send({ content: `⭐ **${count}** | ${message.channel}`, embeds: [starEmbed] }); + }; } -} \ No newline at end of file +}; \ No newline at end of file From 67244a0021134ab535f73c0d484d2b318abbe3dc Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Thu, 7 Jul 2022 14:24:29 +0200 Subject: [PATCH 136/236] Still doesn't work, but it's still *should* be better with this extra code (someone fix it pls) --- events/message/StarBoard.js | 52 ++++++++++++++++++++++--------------- messages/Fun/AtSomeone.js | 8 +++--- 2 files changed, 35 insertions(+), 25 deletions(-) diff --git a/events/message/StarBoard.js b/events/message/StarBoard.js index af2544b..847eb55 100644 --- a/events/message/StarBoard.js +++ b/events/message/StarBoard.js @@ -11,33 +11,43 @@ module.exports = { await db.findOrCreate({ where: { messageId: message.id } }); - if (message.author.id === user.id) db.update({StaredItself: true}, {where: { messageId: message.id }}); - let dbInfo = db.findOne({ where: { messageId: message.id } }); - let count = dbInfo.NumberStar + 1; + // if (message.author.id === user.id) db.update({StaredItself: true}, {where: { messageId: message.id }}); + let dbInfo = db.findOne({ where: { messageId: message.id }, attributes: ['messageId', 'messageIdBot', 'StaredItself', 'StaredItself'] }); + let count = reaction.count; db.update({ NumberStar: count }, { where: { messageId: message.id } }) if (dbInfo.StaredItself) count=count-1; - if (count !== 1) return; + if (count < 1) return; - if (dbInfo.messageIdBot !== null) { - const starEmbed = new MessageEmbed() - .setColor('#337fd5') - .setAuthor({ name: message.author.tag, iconURL: message.author.displayAvatarURL({ extension: 'png', size: 4096 })}) - .setThumbnail() - .setDescription(`${message.content}`) - .addField("_ _", `[Click to jump to message!](https://discord.com/channels/${message.guild.id}/${message.channel.id}/${message.id})`); + const starEmbed = new MessageEmbed() + .setColor('#337fd5') + .setAuthor({ name: message.author.tag, iconURL: message.author.displayAvatarURL({ extension: 'png', size: 4096 })}) + .setThumbnail() + .setDescription(`${message.content}`) + .addField("_ _", `[Click to jump to message!](https://discord.com/channels/${message.guild.id}/${message.channel.id}/${message.id})`); - if (message.attachments) { - message.attachments.forEach(e => { - console.log(message.attachments.contentType); - if (message.attachments.contentType === "Image") { - starEmbed.setImage(e.url); - }; - }); - }; + if (message.attachments) { + message.attachments.forEach(e => { + console.log(message.attachments.contentType); + if (message.attachments.contentType === "Image") { + starEmbed.setImage(e.url); + }; + }); + }; - let starCha = await message.client.guilds.cache.get('974018133021048882').channels.fetch(starBoardCha); - starCha.send({ content: `⭐ **${count}** | ${message.channel}`, embeds: [starEmbed] }); + let starCha = await message.client.guilds.cache.get('974018133021048882').channels.fetch(starBoardCha); + + console.log(dbInfo.messageIdBot) + if (dbInfo.messageIdBot === undefined) { + let MessageSent = await starCha.send({ content: `⭐ **${count}** | ${message.channel}`, embeds: [starEmbed] }); + db.update({messageIdBot: MessageSent.id}, { where: {messageId: message.id} }); + } + + else if (dbInfo.messageIdBot !== undefined) { + let MessageUpdate = await starCha.messages.fetch(dbInfo.messageIdBot); + MessageUpdate.forEach(e => { + e.edit({ content: `⭐ **${count}** | ${message.channel}`, embeds: [starEmbed] }); + }); }; } }; \ No newline at end of file diff --git a/messages/Fun/AtSomeone.js b/messages/Fun/AtSomeone.js index 556386f..2054c45 100644 --- a/messages/Fun/AtSomeone.js +++ b/messages/Fun/AtSomeone.js @@ -12,8 +12,8 @@ module.exports = { await message.guild.members.fetch(member); } - console.log(member) - message.channel.send(`<@${member.user.id}>`); - } + let messageSent = message.channel.send(`<@${member.user.id}>`); + messageSent.delete() + }; } -} \ No newline at end of file +}; \ No newline at end of file From 54bcd0a43ce25bcbb3b09c526c8a4d9e8589b3dd Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Thu, 21 Jul 2022 17:14:15 +0200 Subject: [PATCH 137/236] New command: Role --- commands/Moderation/role.js | 88 +++++ events/Interaction/InteractionCreate.js | 10 +- package-lock.json | 428 +++++++++++++++++------- package.json | 3 +- 4 files changed, 397 insertions(+), 132 deletions(-) create mode 100644 commands/Moderation/role.js diff --git a/commands/Moderation/role.js b/commands/Moderation/role.js new file mode 100644 index 0000000..a5e56ed --- /dev/null +++ b/commands/Moderation/role.js @@ -0,0 +1,88 @@ +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') + +module.exports = { + data: new SlashCommandBuilder() + .setName('role') + .setDescription('Give role to users') + .addSubcommand(sc => sc + .setName('give') + .setDescription('Give a role to a user') + .addUserOption(o => o + .setName('user') + .setDescription("The user to which give the role") + .setRequired(true)) + .addRoleOption(o => o + .setName('role') + .setDescription("The role to give to the user") + .setRequired(true))) + .addSubcommand(sc => sc + .setName('remove') + .setDescription("Remove a role from a user") + .addUserOption(o => o + .setName("user") + .setDescription('The user to remove the role') + .setRequired(true)) + .addRoleOption(o => o + .setName('role') + .setDescription("The role to remove from the user") + .setRequired(true))) + .addSubcommand(sc => sc + .setName('create') + .setDescription('Create a role') + .addStringOption(o => o + .setName('name') + .setDescription("The name of the role") + .setRequired(true)) + .addStringOption(o => o + .setName('color') + .setDescription("The color of the role (in base 16, #ffffff, without the #)") + .setMinLength(6) + .setMaxLength(6))) + .addSubcommand(sc => sc + .setName('edit') + .setDescription("Edit a role") + .addRoleOption(o => o + .setName('role') + .setDescription("The role to edit") + .setRequired(true)) + .addStringOption(o => o + .setName('name') + .setDescription('The new name of the role')) + .addStringOption(o => o + .setName('color') + .setDescription('The new color of the role') + .setMaxLength(6) + .setMinLength(6))), + async execute(interaction) { + const sc = interaction.options.getSubcommand() + + if (sc === "give") { + const user = interaction.options.getMember('user'); + const role = interaction.options.getRole('role'); + + user.roles.add(role); + } + else if (sc === "remove") { + const user = interaction.options.getMember('user'); + const role = interaction.options.getRole('role'); + + user.roles.remove(role); + } + else if (sc === "create") { + const name = interaction.options.getString('name'); + const color = '#' + interaction.options.getString('color'); + + if (name && color !== '#null') interaction.guild.roles.create({ name: name, color: color }); + else if (name && color === '#null') interaction.guild.roles.create({ name: name }) + } + else if (sc === "edit") { + const role = interaction.options.getRole('role'); + const name = interaction.options.getString('name'); + const color = '#' + interaction.options.getString('color'); + + if (name && color !== '#null') interaction.guild.roles.edit(role, { name: name, color: color }); + else if (name && color === '#null') interaction.guild.roles.edit(role, { name: name }); + else if (!name && color !== '#null') interaction.guild.roles.edit(role, { color: color }) + }; + } +}; \ No newline at end of file diff --git a/events/Interaction/InteractionCreate.js b/events/Interaction/InteractionCreate.js index d1be7ea..effd2c5 100644 --- a/events/Interaction/InteractionCreate.js +++ b/events/Interaction/InteractionCreate.js @@ -1,8 +1,10 @@ +const { InteractionType } = require('discord.js') + module.exports = { - name: '', + name: 'interactionCreate', on: true, async execute(interaction) { - if (!interaction.isCommand()) return; + if (interaction.type !== InteractionType.ApplicationCommand) return; const command = client.commands.get(interaction.commandName); @@ -13,9 +15,9 @@ module.exports = { } catch (err) { console.error(err); try { - await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true }); + await interaction.reply({ content: `There was an error while executing this command!\n\`\`\`${err} \`\`\``, ephemeral: true }); } catch { - await interaction.followUp('There was an error while executing this command!'); + await interaction.followUp({content: `There was an error while executing this command!\n\`\`\` ${err} \`\`\``, ephemeral: true}); }; }; } diff --git a/package-lock.json b/package-lock.json index 3cb1efd..9319b05 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,17 @@ { - "name": "progressbar-ruler", + "name": "processes", "version": "1.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "progressbar-ruler", + "name": "processes", "version": "1.0.0", "license": "ISC", "dependencies": { - "@discordjs/builders": "0.13.0", "@discordjs/rest": "0.4.1", "discord-api-types": "0.33.0", - "discord.js": "^13.7.0", + "discord.js": "^14.0.3", "sequelize": "6.19.1", "sqlite3": "^5.0.8" }, @@ -21,25 +20,24 @@ } }, "node_modules/@discordjs/builders": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.13.0.tgz", - "integrity": "sha512-4L9y26KRNNU8Y7J78SRUN1Uhava9D8jfit/YqEaKi8gQRc7PdqKqk2poybo6RXaiyt/BgKYPfcjxT7WvzGfYCA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.0.0.tgz", + "integrity": "sha512-8y91ZfpOHubiGJu5tVyGI9tQCEyHZDTeqUWVcJd0dq7B96xIf84S0L4fwmD1k9zTe1eqEFSk0gc7BpY+FKn7Ww==", "dependencies": { - "@sapphire/shapeshift": "^2.0.0", - "@sindresorhus/is": "^4.6.0", - "discord-api-types": "^0.31.1", + "@sapphire/shapeshift": "^3.5.1", + "discord-api-types": "^0.36.2", "fast-deep-equal": "^3.1.3", "ts-mixer": "^6.0.1", - "tslib": "^2.3.1" + "tslib": "^2.4.0" }, "engines": { "node": ">=16.9.0" } }, "node_modules/@discordjs/builders/node_modules/discord-api-types": { - "version": "0.31.2", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.31.2.tgz", - "integrity": "sha512-gpzXTvFVg7AjKVVJFH0oJGC0q0tO34iJGSHZNz9u3aqLxlD6LfxEs9wWVVikJqn9gra940oUTaPFizCkRDcEiA==" + "version": "0.36.3", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.36.3.tgz", + "integrity": "sha512-bz/NDyG0KBo/tY14vSkrwQ/n3HKPf87a0WFW/1M9+tXYK+vp5Z5EksawfCWo2zkAc6o7CClc0eff1Pjrqznlwg==" }, "node_modules/@discordjs/collection": { "version": "0.7.0", @@ -161,20 +159,24 @@ } }, "node_modules/@sapphire/async-queue": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.3.1.tgz", - "integrity": "sha512-FFTlPOWZX1kDj9xCAsRzH5xEJfawg1lNoYAA+ecOWJMHOfiZYb1uXOI3ne9U4UILSEPwfE68p3T9wUHwIQfR0g==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.3.2.tgz", + "integrity": "sha512-rUpMLATsoAMnlN3gecAcr9Ecnw1vG7zi5Xr+IX22YzRzi1k9PF9vKzoT8RuEJbiIszjcimu3rveqUnvwDopz8g==", "engines": { "node": ">=v14.0.0", "npm": ">=7.0.0" } }, "node_modules/@sapphire/shapeshift": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-2.2.0.tgz", - "integrity": "sha512-UEnKgMlQyI0yY/q+lCMX0VJft9y86IsesgbIQj6e62FBYSaMVr+IaMNpi4z45Q14VnuMACbK0yrbHISNqgUYcQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.5.1.tgz", + "integrity": "sha512-7JFsW5IglyOIUQI1eE0g6h06D/Far6HqpcowRScgCiLSqTf3hhkPWCWotVTtVycnDCMYIwPeaw6IEPBomKC8pA==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "lodash.uniqwith": "^4.5.0" + }, "engines": { - "node": ">=v15.0.0", + "node": ">=v14.0.0", "npm": ">=7.0.0" } }, @@ -187,16 +189,10 @@ "npm": ">=7.0.0" } }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" }, "node_modules/@tootallnate/once": { "version": "1.1.2", @@ -595,54 +591,55 @@ "integrity": "sha512-RS1dMM6xuMhdHwQJ0T+XuCD7v1tKnyZ89Eq6q/DbOJWMbIh3ihgAzDhcF70QsFCtk9a5Gn9XU29S7eoEXuwQ5w==" }, "node_modules/discord.js": { - "version": "13.8.1", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.8.1.tgz", - "integrity": "sha512-jOsD+4tEZWWx0RHVyH+FBcqoTrsL+d5Mm5p+ULQOdU0qSaxhLNkWYig+yDHNZoND7nlkXX3qi+BW+gO5erWylg==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.0.3.tgz", + "integrity": "sha512-wH/VQl4CqN8/+dcXEtYis1iurqxGlDpEe0O4CqH5FGqZGIjVpTdtK0STXXx7bVNX8MT/0GvLZLkmO/5gLDWZVg==", "dependencies": { - "@discordjs/builders": "^0.14.0", - "@discordjs/collection": "^0.7.0", - "@sapphire/async-queue": "^1.3.1", - "@types/node-fetch": "^2.6.1", + "@discordjs/builders": "^1.0.0", + "@discordjs/collection": "^1.0.0", + "@discordjs/rest": "^1.0.0", + "@sapphire/snowflake": "^3.2.2", "@types/ws": "^8.5.3", - "discord-api-types": "^0.33.3", - "form-data": "^4.0.0", - "node-fetch": "^2.6.1", - "ws": "^8.7.0" + "discord-api-types": "^0.36.2", + "fast-deep-equal": "^3.1.3", + "lodash.snakecase": "^4.1.1", + "tslib": "^2.4.0", + "undici": "^5.8.0", + "ws": "^8.8.1" }, "engines": { - "node": ">=16.6.0", - "npm": ">=7.0.0" + "node": ">=16.9.0" } }, - "node_modules/discord.js/node_modules/@discordjs/builders": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.14.0.tgz", - "integrity": "sha512-+fqLIqa9wN3R+kvlld8sgG0nt04BAZxdCDP4t2qZ9TJsquLWA+xMtT8Waibb3d4li4AQS+IOfjiHAznv/dhHgQ==", - "dependencies": { - "@sapphire/shapeshift": "^3.1.0", - "@sindresorhus/is": "^4.6.0", - "discord-api-types": "^0.33.3", - "fast-deep-equal": "^3.1.3", - "ts-mixer": "^6.0.1", - "tslib": "^2.4.0" - }, + "node_modules/discord.js/node_modules/@discordjs/collection": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.0.0.tgz", + "integrity": "sha512-nAxDQYE5dNAzEGQ7HU20sujDsG5vLowUKCEqZkKUIlrXERZFTt/60zKUj/g4+AVCGeq+pXC5hivMaNtiC+PY5Q==", "engines": { "node": ">=16.9.0" } }, - "node_modules/discord.js/node_modules/@sapphire/shapeshift": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.3.1.tgz", - "integrity": "sha512-PB2e5JHWIMRz9HiN/sIWcNIzXjYvzc3OmeRHYICXreKhetDYf4Zufypr8A48Z/XZLzbMqIka6uoR+2dH58nksg==", + "node_modules/discord.js/node_modules/@discordjs/rest": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.0.0.tgz", + "integrity": "sha512-uDAvnE0P2a8axMdD4C51EGjvCRQ2HZk2Yxf6vHWZgIqG87D8DGKMPwmquIxrrB07MjV+rwci2ObU+mGhGP+bJg==", + "dependencies": { + "@discordjs/collection": "^1.0.0", + "@sapphire/async-queue": "^1.3.2", + "@sapphire/snowflake": "^3.2.2", + "discord-api-types": "^0.36.2", + "file-type": "^17.1.2", + "tslib": "^2.4.0", + "undici": "^5.7.0" + }, "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" + "node": ">=16.9.0" } }, "node_modules/discord.js/node_modules/discord-api-types": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.5.tgz", - "integrity": "sha512-dvO5M52v7m7Dy96+XUnzXNsQ/0npsYpU6dL205kAtEDueswoz3aU3bh1UMoK4cQmcGtB1YRyLKqp+DXi05lzFg==" + "version": "0.36.3", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.36.3.tgz", + "integrity": "sha512-bz/NDyG0KBo/tY14vSkrwQ/n3HKPf87a0WFW/1M9+tXYK+vp5Z5EksawfCWo2zkAc6o7CClc0eff1Pjrqznlwg==" }, "node_modules/doctrine": { "version": "3.0.0", @@ -888,6 +885,22 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-type": { + "version": "17.1.2", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.2.tgz", + "integrity": "sha512-3thBUSfa9YEUEGO/NAAiQGvjujZxZiJTF6xNwyDn6kB0NcEtwMn5ttkGG9jGwm/Nt/t8U1bpBNqyBNZCz4F4ig==", + "dependencies": { + "readable-web-to-node-stream": "^3.0.2", + "strtok3": "^7.0.0-alpha.7", + "token-types": "^5.0.0-alpha.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, "node_modules/flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -1080,6 +1093,25 @@ "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": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -1246,6 +1278,16 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" + }, + "node_modules/lodash.uniqwith": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniqwith/-/lodash.uniqwith-4.5.0.tgz", + "integrity": "sha512-7lYL8bLopMoy4CTICbxygAUq6CdRJ36vFc80DucPueUee+d5NBRxz3FdT9Pes/HEx5mPoT9jwnsEJWz1N7uq7Q==" + }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -1436,9 +1478,9 @@ } }, "node_modules/moment": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz", - "integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==", + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", "engines": { "node": "*" } @@ -1671,6 +1713,18 @@ "node": ">=8" } }, + "node_modules/peek-readable": { + "version": "5.0.0-alpha.5", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0-alpha.5.tgz", + "integrity": "sha512-pJohF/tDwV3ntnT5+EkUo4E700q/j/OCDuPxtM+5/kFGjyOai/sK4/We4Cy1MB2OiTQliWU5DxPvYIKQAdPqAA==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/pg-connection-string": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", @@ -1726,6 +1780,21 @@ "node": ">= 6" } }, + "node_modules/readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "dependencies": { + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -2027,6 +2096,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strtok3": { + "version": "7.0.0-alpha.8", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0-alpha.8.tgz", + "integrity": "sha512-u+k19v+rTxBjGYxncRQjGvZYwYvEd0uP3D+uHKe/s4WB1eXS5ZwpZsTlBu5xSS4zEd89mTXECXg6WW3FSeV8cA==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^5.0.0-alpha.5" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -2061,6 +2146,22 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/token-types": { + "version": "5.0.0-alpha.2", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.0-alpha.2.tgz", + "integrity": "sha512-EsG9UxAW4M6VATrEEjhPFTKEUi1OiJqTUMIZOGBN49fGxYjZB36k0p7to3HZSmWRoHm1QfZgrg3e02fpqAt5fQ==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/toposort-class": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", @@ -2105,6 +2206,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/undici": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.8.0.tgz", + "integrity": "sha512-1F7Vtcez5w/LwH2G2tGnFIihuWUlc58YidwLiCv+jR2Z50x0tNXpRRw7eOIJ+GvqCqIkg9SB7NWAJ/T9TLfv8Q==", + "engines": { + "node": ">=12.18" + } + }, "node_modules/unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -2219,9 +2328,9 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", - "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", "engines": { "node": ">=10.0.0" }, @@ -2246,22 +2355,21 @@ }, "dependencies": { "@discordjs/builders": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.13.0.tgz", - "integrity": "sha512-4L9y26KRNNU8Y7J78SRUN1Uhava9D8jfit/YqEaKi8gQRc7PdqKqk2poybo6RXaiyt/BgKYPfcjxT7WvzGfYCA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.0.0.tgz", + "integrity": "sha512-8y91ZfpOHubiGJu5tVyGI9tQCEyHZDTeqUWVcJd0dq7B96xIf84S0L4fwmD1k9zTe1eqEFSk0gc7BpY+FKn7Ww==", "requires": { - "@sapphire/shapeshift": "^2.0.0", - "@sindresorhus/is": "^4.6.0", - "discord-api-types": "^0.31.1", + "@sapphire/shapeshift": "^3.5.1", + "discord-api-types": "^0.36.2", "fast-deep-equal": "^3.1.3", "ts-mixer": "^6.0.1", - "tslib": "^2.3.1" + "tslib": "^2.4.0" }, "dependencies": { "discord-api-types": { - "version": "0.31.2", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.31.2.tgz", - "integrity": "sha512-gpzXTvFVg7AjKVVJFH0oJGC0q0tO34iJGSHZNz9u3aqLxlD6LfxEs9wWVVikJqn9gra940oUTaPFizCkRDcEiA==" + "version": "0.36.3", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.36.3.tgz", + "integrity": "sha512-bz/NDyG0KBo/tY14vSkrwQ/n3HKPf87a0WFW/1M9+tXYK+vp5Z5EksawfCWo2zkAc6o7CClc0eff1Pjrqznlwg==" } } }, @@ -2369,24 +2477,28 @@ } }, "@sapphire/async-queue": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.3.1.tgz", - "integrity": "sha512-FFTlPOWZX1kDj9xCAsRzH5xEJfawg1lNoYAA+ecOWJMHOfiZYb1uXOI3ne9U4UILSEPwfE68p3T9wUHwIQfR0g==" + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.3.2.tgz", + "integrity": "sha512-rUpMLATsoAMnlN3gecAcr9Ecnw1vG7zi5Xr+IX22YzRzi1k9PF9vKzoT8RuEJbiIszjcimu3rveqUnvwDopz8g==" }, "@sapphire/shapeshift": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-2.2.0.tgz", - "integrity": "sha512-UEnKgMlQyI0yY/q+lCMX0VJft9y86IsesgbIQj6e62FBYSaMVr+IaMNpi4z45Q14VnuMACbK0yrbHISNqgUYcQ==" + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.5.1.tgz", + "integrity": "sha512-7JFsW5IglyOIUQI1eE0g6h06D/Far6HqpcowRScgCiLSqTf3hhkPWCWotVTtVycnDCMYIwPeaw6IEPBomKC8pA==", + "requires": { + "fast-deep-equal": "^3.1.3", + "lodash.uniqwith": "^4.5.0" + } }, "@sapphire/snowflake": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.2.2.tgz", "integrity": "sha512-ula2O0kpSZtX9rKXNeQMrHwNd7E4jPDJYUXmEGTFdMRfyfMw+FPyh04oKMjAiDuOi64bYgVkOV3MjK+loImFhQ==" }, - "@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" + "@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" }, "@tootallnate/once": { "version": "1.1.2", @@ -2701,43 +2813,46 @@ "integrity": "sha512-RS1dMM6xuMhdHwQJ0T+XuCD7v1tKnyZ89Eq6q/DbOJWMbIh3ihgAzDhcF70QsFCtk9a5Gn9XU29S7eoEXuwQ5w==" }, "discord.js": { - "version": "13.8.1", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.8.1.tgz", - "integrity": "sha512-jOsD+4tEZWWx0RHVyH+FBcqoTrsL+d5Mm5p+ULQOdU0qSaxhLNkWYig+yDHNZoND7nlkXX3qi+BW+gO5erWylg==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.0.3.tgz", + "integrity": "sha512-wH/VQl4CqN8/+dcXEtYis1iurqxGlDpEe0O4CqH5FGqZGIjVpTdtK0STXXx7bVNX8MT/0GvLZLkmO/5gLDWZVg==", "requires": { - "@discordjs/builders": "^0.14.0", - "@discordjs/collection": "^0.7.0", - "@sapphire/async-queue": "^1.3.1", - "@types/node-fetch": "^2.6.1", + "@discordjs/builders": "^1.0.0", + "@discordjs/collection": "^1.0.0", + "@discordjs/rest": "^1.0.0", + "@sapphire/snowflake": "^3.2.2", "@types/ws": "^8.5.3", - "discord-api-types": "^0.33.3", - "form-data": "^4.0.0", - "node-fetch": "^2.6.1", - "ws": "^8.7.0" + "discord-api-types": "^0.36.2", + "fast-deep-equal": "^3.1.3", + "lodash.snakecase": "^4.1.1", + "tslib": "^2.4.0", + "undici": "^5.8.0", + "ws": "^8.8.1" }, "dependencies": { - "@discordjs/builders": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.14.0.tgz", - "integrity": "sha512-+fqLIqa9wN3R+kvlld8sgG0nt04BAZxdCDP4t2qZ9TJsquLWA+xMtT8Waibb3d4li4AQS+IOfjiHAznv/dhHgQ==", + "@discordjs/collection": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.0.0.tgz", + "integrity": "sha512-nAxDQYE5dNAzEGQ7HU20sujDsG5vLowUKCEqZkKUIlrXERZFTt/60zKUj/g4+AVCGeq+pXC5hivMaNtiC+PY5Q==" + }, + "@discordjs/rest": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.0.0.tgz", + "integrity": "sha512-uDAvnE0P2a8axMdD4C51EGjvCRQ2HZk2Yxf6vHWZgIqG87D8DGKMPwmquIxrrB07MjV+rwci2ObU+mGhGP+bJg==", "requires": { - "@sapphire/shapeshift": "^3.1.0", - "@sindresorhus/is": "^4.6.0", - "discord-api-types": "^0.33.3", - "fast-deep-equal": "^3.1.3", - "ts-mixer": "^6.0.1", - "tslib": "^2.4.0" + "@discordjs/collection": "^1.0.0", + "@sapphire/async-queue": "^1.3.2", + "@sapphire/snowflake": "^3.2.2", + "discord-api-types": "^0.36.2", + "file-type": "^17.1.2", + "tslib": "^2.4.0", + "undici": "^5.7.0" } }, - "@sapphire/shapeshift": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.3.1.tgz", - "integrity": "sha512-PB2e5JHWIMRz9HiN/sIWcNIzXjYvzc3OmeRHYICXreKhetDYf4Zufypr8A48Z/XZLzbMqIka6uoR+2dH58nksg==" - }, "discord-api-types": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.5.tgz", - "integrity": "sha512-dvO5M52v7m7Dy96+XUnzXNsQ/0npsYpU6dL205kAtEDueswoz3aU3bh1UMoK4cQmcGtB1YRyLKqp+DXi05lzFg==" + "version": "0.36.3", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.36.3.tgz", + "integrity": "sha512-bz/NDyG0KBo/tY14vSkrwQ/n3HKPf87a0WFW/1M9+tXYK+vp5Z5EksawfCWo2zkAc6o7CClc0eff1Pjrqznlwg==" } } }, @@ -2930,6 +3045,16 @@ "flat-cache": "^3.0.4" } }, + "file-type": { + "version": "17.1.2", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.2.tgz", + "integrity": "sha512-3thBUSfa9YEUEGO/NAAiQGvjujZxZiJTF6xNwyDn6kB0NcEtwMn5ttkGG9jGwm/Nt/t8U1bpBNqyBNZCz4F4ig==", + "requires": { + "readable-web-to-node-stream": "^3.0.2", + "strtok3": "^7.0.0-alpha.7", + "token-types": "^5.0.0-alpha.2" + } + }, "flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -3083,6 +3208,11 @@ "safer-buffer": ">= 2.1.2 < 3.0.0" } }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, "ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -3216,6 +3346,16 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" + }, + "lodash.uniqwith": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniqwith/-/lodash.uniqwith-4.5.0.tgz", + "integrity": "sha512-7lYL8bLopMoy4CTICbxygAUq6CdRJ36vFc80DucPueUee+d5NBRxz3FdT9Pes/HEx5mPoT9jwnsEJWz1N7uq7Q==" + }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -3355,9 +3495,9 @@ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" }, "moment": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz", - "integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==" + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" }, "moment-timezone": { "version": "0.5.34", @@ -3530,6 +3670,11 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, + "peek-readable": { + "version": "5.0.0-alpha.5", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0-alpha.5.tgz", + "integrity": "sha512-pJohF/tDwV3ntnT5+EkUo4E700q/j/OCDuPxtM+5/kFGjyOai/sK4/We4Cy1MB2OiTQliWU5DxPvYIKQAdPqAA==" + }, "pg-connection-string": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", @@ -3573,6 +3718,14 @@ "util-deprecate": "^1.0.1" } }, + "readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "requires": { + "readable-stream": "^3.6.0" + } + }, "regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -3755,6 +3908,15 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, + "strtok3": { + "version": "7.0.0-alpha.8", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0-alpha.8.tgz", + "integrity": "sha512-u+k19v+rTxBjGYxncRQjGvZYwYvEd0uP3D+uHKe/s4WB1eXS5ZwpZsTlBu5xSS4zEd89mTXECXg6WW3FSeV8cA==", + "requires": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^5.0.0-alpha.5" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -3783,6 +3945,15 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "token-types": { + "version": "5.0.0-alpha.2", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.0-alpha.2.tgz", + "integrity": "sha512-EsG9UxAW4M6VATrEEjhPFTKEUi1OiJqTUMIZOGBN49fGxYjZB36k0p7to3HZSmWRoHm1QfZgrg3e02fpqAt5fQ==", + "requires": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + } + }, "toposort-class": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", @@ -3818,6 +3989,11 @@ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, + "undici": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.8.0.tgz", + "integrity": "sha512-1F7Vtcez5w/LwH2G2tGnFIihuWUlc58YidwLiCv+jR2Z50x0tNXpRRw7eOIJ+GvqCqIkg9SB7NWAJ/T9TLfv8Q==" + }, "unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -3917,9 +4093,9 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "ws": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", - "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", "requires": {} }, "yallist": { diff --git a/package.json b/package.json index 2bbeeb8..d8cc365 100644 --- a/package.json +++ b/package.json @@ -10,10 +10,9 @@ "author": "5jiji", "license": "ISC", "dependencies": { - "@discordjs/builders": "0.13.0", "@discordjs/rest": "0.4.1", "discord-api-types": "0.33.0", - "discord.js": "^13.8.1", + "discord.js": "^14.0.3", "sequelize": "6.19.1", "sqlite3": "^5.0.8" }, From 2d07e113eca19292ea4614522b13d3cd3652fe37 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Thu, 21 Jul 2022 17:22:06 +0200 Subject: [PATCH 138/236] Don't forget that for the bot on the server --- events/message/StarBoard.js | 3 ++- events/message/StarBoardPt2.js | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 events/message/StarBoardPt2.js diff --git a/events/message/StarBoard.js b/events/message/StarBoard.js index 847eb55..737102b 100644 --- a/events/message/StarBoard.js +++ b/events/message/StarBoard.js @@ -1,10 +1,11 @@ -const { starBoardCha } = require('../../config.json'); +const { starBoardCha, starBoard } = require('../../config.json'); const { MessageEmbed } = require('discord.js'); module.exports = { name: 'messageReactionAdd', on: true, async execute(reaction, user) { + if (!starBoard) return; const message = reaction.message; if (message.channel.id === starBoardCha || reaction.emoji.name !== '⭐') return; let db = reaction.client.db.Star; diff --git a/events/message/StarBoardPt2.js b/events/message/StarBoardPt2.js new file mode 100644 index 0000000..d40d2fd --- /dev/null +++ b/events/message/StarBoardPt2.js @@ -0,0 +1,19 @@ +const {starBoard} = require("../../config.json"); + +module.exports = { + name: 'messageReactionRemove', + on: true, + async execute(reaction, user) { + if (starBoard) return; + if (reaction.emoji.name !== '⭐') return; + + const db = reaction.client.db.Star; + const message = reaction.message; + let dbInfo = db.findOne({ where: { messageId: message.id }}); + + if (message.author.id === user.id) return db.update({StaredItself: false}, {where: { messageId: message.id }}); + + let count = dbInfo.NumberStar-1; + db.update({ NumberStar: count }, {where: {messageId: message.id}}) + } +}; \ No newline at end of file From b56d2c38ff64f944f46474d5331f20a559671b2b Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Fri, 22 Jul 2022 00:38:36 +0200 Subject: [PATCH 139/236] New feature: DOS IN CONSOLE! --- Util/Dos.js | 188 +++++++++++++++++++++++++++++++++ events/client/ready.js | 6 +- events/message/StarBoardPt2.js | 2 +- messages/Fun/AtSomeone.js | 19 ++-- messages/Misc/CrossPost.js | 15 +++ 5 files changed, 217 insertions(+), 13 deletions(-) create mode 100644 Util/Dos.js create mode 100644 messages/Misc/CrossPost.js diff --git a/Util/Dos.js b/Util/Dos.js new file mode 100644 index 0000000..b6bc5fb --- /dev/null +++ b/Util/Dos.js @@ -0,0 +1,188 @@ +const fs = require('node:fs') +const readline = require('readline'); +const { basename } = require('path'); + +async function ProcessDOS(client) { + const cmd = readline.createInterface(process.stdin, process.stdout); + + let drive = "S" + let dir = ["\\"] + let drvlabel = "SERVERS" + let depth = 0 + let curServer = null + let curC = null + let drvS = {} + let drvC = {} + let inRepl = false + drvS.rootdirs = client.guilds.cache + drvS.subdirs = null + drvC.rootdirs = fs.readdirSync(`${__dirname}/../commands`); + drvC.subdirs = null + //console.log(paths) + cmd.setPrompt(`${drive}:${dir.join("")}>`) + cmd.prompt(); + + cmd.on('line', async line => { + if (inRepl) return + switch (line.trim().split(" ")[0]) { + case 'exit': { + cmd.close() + process.exit(0) + } + case 'eval': { + try { + console.log(eval(line.substring(4))) + } catch (error) { + console.error(error) + } + break + } + case 'help': case 'man': { + console.log("Process DOS help") + console.log("Commands:\n") + console.log("eval Evaluates code") + console.log("status Changes the status of the bot") + console.log("send Sends a message on the specified channel") + console.log("dir Lists the current directory") + console.log("type Show the contents of a file") + console.log("cd [directory] Change directory") + console.log("cls Clears the screen") + console.log("echo Displays text on the screen") + console.log("help Displays this help") + console.log("exit Terminates the bot and console") + break + } + case 'status': { + if (line.trim() == "status") { client.user.setActivity() } + try { + let status = line.split(" ")[1] + let activity = line.split(" ")[2].toUpperCase() + let description = line.split(" ").slice(3).join(" ") + client.user.setActivity(description, { type: activity }); + client.user.setStatus(status); + } catch (error) { + console.log("Invalid status") + console.error(error) + } + break + } + case 'dir': case 'ls': { + console.log(`\n Volume in drive ${drive} is ${drvlabel}`) + console.log(` Volume Serial Number is 298A-E8CC`) + console.log(` Directory of ${drive}:${dir.join("")}\n`) + switch (drive) { + case 'S': { + if (depth == 0) { + drvS.rootdirs.forEach(i => { + console.log(i.name.padEnd(20) + " ") + }) + } else { + drvS.subdirs = client.guilds.cache.get(`${curServer}`) + drvS.subdirs.channels.cache.forEach(c => console.log(`${c.id} ${c.name.substring(0, 15).padEnd(16)} CHN`)) + } + } + break + case 'C': { + if (depth == 0) { + drvC.rootdirs.forEach(i => { + console.log(i.padEnd(20) + " ") + }) + } else { + drvC.subdirs = fs.readdirSync(`${__dirname}/../commands/${curC}`); + drvC.subdirs.forEach(c => console.log(`${c.substring(0, 15).padEnd(16)} FILE`)) + } + } + } + break + } + case 'cd': case 'cd..': { + let newDir = line.split(" ").slice(1).join(" ") + if (newDir == ".." || line.split(" ")[0] == "cd..") { + if (depth == 0) break + depth-- + dir.pop() + curServer = null + curC = null + break + } + switch (drive) { + case 'S': { + if (drvS.rootdirs.find(i => i.name === newDir)) { + dir.push(newDir) + depth++ + curServer = client.guilds.cache.find(guild => guild.name === newDir).id + } else { + console.log("Invalid directory") + } + break + } + case 'C': { + if (drvC.rootdirs.find(i => i === newDir)) { + dir.push(newDir) + depth++ + curC = newDir + } else { + console.log("Invalid directory") + } + } + } + break + } + case 'cls': { + console.log('\033c'); + break + } + case 'send': { + client.channels.cache.get(line.split(" ")[1]).send(line.split(" ").slice(2).join(" ")) + break + } + case 'echo': { + console.log(line.split(" ").slice(1).join("")) + break + } + case 'type': { + let file = line.split(" ").slice(1).join(" ") + if (!file) { console.log('Required parameter missing'); break } + cmd.setPrompt(" ") + switch (drive) { + case 'S': { + console.log('General failure reading drive S:') + console.log('Abort, Retry, Fail?a') + break + } + case 'C': + fs.readFile(`${__dirname}/../commands/${curC}/${file.toLowerCase()}`, 'utf8', (err, data) => { + if (err) { console.log(`File not found - ${file.toLowerCase()}`); return } + console.log(data) + + }) + } + console.log() + break + } + case 'c:': case 'C:': { + drive = 'C' + drvlabel = 'COMMANDS' + depth = 0 + dir = ["\\"] + break + } + case 'S:': case 's:': { + drive = 'S' + drvlabel = 'SERVERS' + depth = 0 + dir = ["\\"] + break + } + case '': break + default: console.log("Bad command or file name") + } + cmd.setPrompt(`${drive}:${dir.join("")}>`) + cmd.prompt(); + }) + cmd.on("SIGINT", () => { + cmd.prompt() + }); +}; + +module.exports = { ProcessDOS } \ No newline at end of file diff --git a/events/client/ready.js b/events/client/ready.js index 781fc89..22a40bf 100644 --- a/events/client/ready.js +++ b/events/client/ready.js @@ -1,4 +1,5 @@ const { showLink } = require('../../config.json') +const { ProcessDOS } = require('../../Util/Dos.js') module.exports = { name: 'ready', @@ -15,9 +16,10 @@ module.exports = { console.log(`Channels of ${guildFetched.name} loaded (${guildFetched.id})`) }); if (showLink) { - console.log(`https://discord.com/oauth2/authorize?client_id=${clientId}&permissions=1644971949567&scope=bot%20applications.commands`); + console.log(`https://discord.com/oauth2/authorize?client_id=${client.user.id}&permissions=1644971949567&scope=bot%20applications.commands`); } console.log(`Login as ${client.user.tag}`); + ProcessDOS(client) } -} \ No newline at end of file +}; \ No newline at end of file diff --git a/events/message/StarBoardPt2.js b/events/message/StarBoardPt2.js index d40d2fd..ac970e2 100644 --- a/events/message/StarBoardPt2.js +++ b/events/message/StarBoardPt2.js @@ -4,7 +4,7 @@ module.exports = { name: 'messageReactionRemove', on: true, async execute(reaction, user) { - if (starBoard) return; + if (!starBoard) return; if (reaction.emoji.name !== '⭐') return; const db = reaction.client.db.Star; diff --git a/messages/Fun/AtSomeone.js b/messages/Fun/AtSomeone.js index 2054c45..37ef90b 100644 --- a/messages/Fun/AtSomeone.js +++ b/messages/Fun/AtSomeone.js @@ -4,16 +4,15 @@ const { AtSomeone } = require('../../config.json') || false; module.exports = { message: '@someone', async execute(message) { - if (AtSomeone) { - let memberList = await message.guild.members.fetch({ force: true }); - let member = memberList.random(); + if (!AtSomeone) return; + let memberList = await message.guild.members.fetch({ force: true }); + let member = memberList.random(); - if (!(member instanceof GuildMember)) { - await message.guild.members.fetch(member); - } - - let messageSent = message.channel.send(`<@${member.user.id}>`); - messageSent.delete() - }; + if (!(member instanceof GuildMember)) { + await message.guild.members.fetch(member); + } + + let messageSent = message.channel.send(`<@${member.user.id}>`); + messageSent.delete() } }; \ No newline at end of file diff --git a/messages/Misc/CrossPost.js b/messages/Misc/CrossPost.js new file mode 100644 index 0000000..254de26 --- /dev/null +++ b/messages/Misc/CrossPost.js @@ -0,0 +1,15 @@ +const { ChannelType } = require('discord.js') + +module.exports = { + async code(messages) { + if (messages.author === "282286160494067712" && messages.channel.type === ChannelType.GuildNews) { + this.execute(messages) + } + }, + async execute(messages) { + messages.crosspost() + .then((message) => { + console.log(`Crossposted ${message.content.slice(4)}`); + }).catch(console.error); + } +} \ No newline at end of file From ff6a6fe9c10b05416cf7cb3aeb61d13e1aa102c7 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Fri, 22 Jul 2022 10:36:24 +0200 Subject: [PATCH 140/236] Updated command with discord js v14.0.3 --- Util/Dos.js | 4 ++-- commands/Misc/info.js | 4 ++-- commands/Moderation/ban.js | 8 ++++---- commands/Moderation/kick.js | 4 ++-- commands/Moderation/lock.js | 4 ++-- commands/Moderation/slowmode.js | 4 ++-- commands/Moderation/timeout.js | 4 ++-- commands/Moderation/unban.js | 2 +- commands/Moderation/unlock.js | 4 ++-- commands/Moderation/warn.js | 6 +++--- 10 files changed, 22 insertions(+), 22 deletions(-) diff --git a/Util/Dos.js b/Util/Dos.js index b6bc5fb..4e51c59 100644 --- a/Util/Dos.js +++ b/Util/Dos.js @@ -128,7 +128,7 @@ async function ProcessDOS(client) { } break } - case 'cls': { + case 'cls': case 'clear': { console.log('\033c'); break } @@ -140,7 +140,7 @@ async function ProcessDOS(client) { console.log(line.split(" ").slice(1).join("")) break } - case 'type': { + case 'type': case 'cat': { let file = line.split(" ").slice(1).join(" ") if (!file) { console.log('Required parameter missing'); break } cmd.setPrompt(" ") diff --git a/commands/Misc/info.js b/commands/Misc/info.js index 7d98a19..4f08993 100644 --- a/commands/Misc/info.js +++ b/commands/Misc/info.js @@ -1,5 +1,5 @@ const { SlashCommandBuilder } = require("@discordjs/builders") -const { GuildMember, MessageEmbed } = require("discord.js") +const { GuildMember, EmbedBuilder } = require("discord.js") module.exports = { data: new SlashCommandBuilder() @@ -17,7 +17,7 @@ module.exports = { .setRequired(true))),*/ async execute(interaction) { const sc = interaction.options.getSubcommand(); - const replyEmbed = new MessageEmbed(); + const replyEmbed = new EmbedBuilder(); if (sc === "user") { const member = interaction.options.getMember("user"); diff --git a/commands/Moderation/ban.js b/commands/Moderation/ban.js index 49f46b6..4e5b958 100644 --- a/commands/Moderation/ban.js +++ b/commands/Moderation/ban.js @@ -1,5 +1,5 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); -const { MessageEmbed, GuildMember } = require('discord.js'); +const { EmbedBuilder, GuildMember } = require('discord.js'); const { logCha } = require('../../config.json') module.exports = { @@ -37,13 +37,13 @@ module.exports = { if (member.id === interaction.client.user.id) return interaction.followUp("❌ Why would you ban me? 😢"); - const dmEmbed = new MessageEmbed() + const dmEmbed = new EmbedBuilder() .setColor("#f04a47") .setDescription(`You have been banned for: ${reason}`); - const replyEmbed = new MessageEmbed() + const replyEmbed = new EmbedBuilder() .setColor("#43b582") .setDescription(`**${member.user.tag} has been banned for:** ${reason}`); - const logEmbed = new MessageEmbed() + const logEmbed = new EmbedBuilder() .setColor("#f04a47") .addFields( {name: '**User**', value: `${member}`, inline: true }, diff --git a/commands/Moderation/kick.js b/commands/Moderation/kick.js index 47ad7ce..2eb592c 100644 --- a/commands/Moderation/kick.js +++ b/commands/Moderation/kick.js @@ -1,5 +1,5 @@ const { SlashCommandBuilder } = require('@discordjs/builders') -const { MessageEmbed } = require('discord.js'); +const { EmbedBuilder } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() @@ -20,7 +20,7 @@ module.exports = { async execute(interaction) { let member = interaction.options.getMember("user"); const reason = interaction.options.getString("reason"); - const replyEmbed = new MessageEmbed().setColor("#00FF00"); + const replyEmbed = new EmbedBuilder().setColor("#00FF00"); if (member.id === interaction.client.user.id) return interaction.reply("❌ Why would you kick me? 😢"); diff --git a/commands/Moderation/lock.js b/commands/Moderation/lock.js index 5a92ad7..c3275ca 100644 --- a/commands/Moderation/lock.js +++ b/commands/Moderation/lock.js @@ -1,5 +1,5 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); -const { MessageEmbed } = require('discord.js'); +const { EmbedBuilder } = require('discord.js'); const { ChannelType } = require('discord-api-types/v10'); module.exports = { @@ -25,7 +25,7 @@ module.exports = { CREATE_PRIVATE_THREADS: false, }, { reason: reason, type: 0 }); - const replyEmbed = new MessageEmbed() + const replyEmbed = new EmbedBuilder() .setColor("#00FF00") .setDescription("Channel locked"); diff --git a/commands/Moderation/slowmode.js b/commands/Moderation/slowmode.js index ad468be..b7d7f76 100644 --- a/commands/Moderation/slowmode.js +++ b/commands/Moderation/slowmode.js @@ -1,5 +1,5 @@ const { SlashCommandBuilder } = require('@discordjs/builders') -const { MessageEmbed } = require('discord.js'); +const { EmbedBuilder } = require('discord.js'); const { ChannelType } = require("discord-api-types/v10") module.exports = { @@ -29,7 +29,7 @@ module.exports = { const RealLen = interaction.options.getInteger('duration'); const reason = interaction.options.getString('reason') || "No reason provided"; - const replyEmbed = new MessageEmbed(); + const replyEmbed = new EmbedBuilder(); let length = RealLen; if (RealLen === 0) { diff --git a/commands/Moderation/timeout.js b/commands/Moderation/timeout.js index dee1011..8e4c68d 100644 --- a/commands/Moderation/timeout.js +++ b/commands/Moderation/timeout.js @@ -1,5 +1,5 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); -const { MessageEmbed, GuildMember } = require('discord.js'); +const { EmbedBuilder, GuildMember } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() @@ -29,7 +29,7 @@ module.exports = { let length = interaction.options.getInteger('duration'); const unit = interaction.options.getString('unit'); let reason = interaction.options.getString('reason') || "No reason provided"; - const replyEmbed = new MessageEmbed(); + const replyEmbed = new EmbedBuilder(); if (!(member instanceof GuildMember)) { await interaction.guild.member.fetch(member) diff --git a/commands/Moderation/unban.js b/commands/Moderation/unban.js index 012dc90..500ec74 100644 --- a/commands/Moderation/unban.js +++ b/commands/Moderation/unban.js @@ -14,7 +14,7 @@ module.exports = { async execute(interaction) { let member = interaction.options.getMember("user"); let reason = interaction.options.getString("reason"); - const replyEmbed = new MessageEmbed(); + const replyEmbed = new EmbedBuilder(); if (!reason) reason = "No reason provided"; await member.unban(); diff --git a/commands/Moderation/unlock.js b/commands/Moderation/unlock.js index 3078528..8f591d4 100644 --- a/commands/Moderation/unlock.js +++ b/commands/Moderation/unlock.js @@ -1,5 +1,5 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); -const { MessageEmbed } = require('discord.js'); +const { EmbedBuilder } = require('discord.js'); const { ChannelType } = require('discord-api-types/v10') module.exports = { @@ -15,7 +15,7 @@ module.exports = { .setName("reason") .setDescription("Why should this channel be unlocked?")), async execute(interaction) { - const replyEmbed = new MessageEmbed() + const replyEmbed = new EmbedBuilder() let channel = interaction.options.getChannel("channel"); let reason = interaction.options.getString("reason") || "No reason provided"; diff --git a/commands/Moderation/warn.js b/commands/Moderation/warn.js index bae0714..26b3121 100644 --- a/commands/Moderation/warn.js +++ b/commands/Moderation/warn.js @@ -1,5 +1,5 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); -const { MessageEmbed } = require('discord.js'); +const { EmbedBuilder } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() @@ -22,8 +22,8 @@ module.exports = { const reason = interaction.options.getString("reason"); const joke = interaction.options.getBoolean("joke"); const db = interaction.client.db.Cases; - const replyEmbed = new MessageEmbed().setColor("#00FF00"); - const dmEmbed = new MessageEmbed().setColor("#FF0000"); + const replyEmbed = new EmbedBuilder().setColor("#00FF00"); + const dmEmbed = new EmbedBuilder().setColor("#FF0000"); if (user.id = interaction.client.id) return interaction.reply("I just deleted my own warn <:troll:869197146786766849>"); From 41ccf2bca1c56887ff72d1c41c78cf9ada14b03c Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 25 Jul 2022 00:05:11 +0200 Subject: [PATCH 141/236] New DOS command: tail: Shows messages in the channel given --- Util/Dos.js | 16 ++++++++++++++-- commands/Moderation/lock.js | 16 ++++++++++------ 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/Util/Dos.js b/Util/Dos.js index 4e51c59..6bfdd55 100644 --- a/Util/Dos.js +++ b/Util/Dos.js @@ -44,6 +44,7 @@ async function ProcessDOS(client) { console.log("status Changes the status of the bot") console.log("send Sends a message on the specified channel") console.log("dir Lists the current directory") + console.log("tail [Amount-of-messages] Lists message in the channel given") console.log("type Show the contents of a file") console.log("cd [directory] Change directory") console.log("cls Clears the screen") @@ -97,7 +98,7 @@ async function ProcessDOS(client) { } case 'cd': case 'cd..': { let newDir = line.split(" ").slice(1).join(" ") - if (newDir == ".." || line.split(" ")[0] == "cd..") { + if (newDir === ".." || line.split(" ")[0] === "cd..") { if (depth == 0) break depth-- dir.pop() @@ -129,7 +130,7 @@ async function ProcessDOS(client) { break } case 'cls': case 'clear': { - console.log('\033c'); + console.clear(); break } case 'send': { @@ -140,6 +141,17 @@ async function ProcessDOS(client) { console.log(line.split(" ").slice(1).join("")) break } + case 'tail': { + if (drive === "C" || curServer == null) {console.log("Please, enter a server in the 'S' drive");break} + let channel = line.split(" ")[1] + if (!channel) {console.log('A channel id is required'); break} + let MessageAmount = line.split(" ")[2] || 10 + let Messages = await client.guilds.cache.get(curServer).channels.cache.get(channel).messages.fetch({limit: MessageAmount}) + Messages.forEach(e => { + console.log(`${e.author.tag.padEnd(20)}${e.content}`) + }) + break + } case 'type': case 'cat': { let file = line.split(" ").slice(1).join(" ") if (!file) { console.log('Required parameter missing'); break } diff --git a/commands/Moderation/lock.js b/commands/Moderation/lock.js index c3275ca..8fd7259 100644 --- a/commands/Moderation/lock.js +++ b/commands/Moderation/lock.js @@ -1,5 +1,4 @@ -const { SlashCommandBuilder } = require('@discordjs/builders'); -const { EmbedBuilder } = require('discord.js'); +const { SlashCommandBuilder, EmbedBuilder } = require('discord.js'); const { ChannelType } = require('discord-api-types/v10'); module.exports = { @@ -11,14 +10,19 @@ module.exports = { .setDescription("The channel to lock") .addChannelTypes(ChannelType.GuildText) .setRequired(true)) + .addRoleOption(o => o + .setName('role') + .setDescription("The role to lock access, can be @eveyone") + .setRequired(true)) .addStringOption(o => o .setName("reason") .setDescription("Why should this channel be locked?")), async execute(interaction) { - let channel = interaction.options.getChannel("channel"); - let reason = interaction.options.getString("reason") || "No reason provided"; - - channel.permissionOverwrites.edit(interaction.guildId, { + const channel = interaction.options.getChannel("channel"); + const reason = interaction.options.getString("reason") || "No reason provided"; + const role = interaction.options.getRole('role', true) + + channel.permissionOverwrites.edit(role.id, { SEND_MESSAGES: false, SEND_MESSAGES_IN_THREADS: false, CREATE_PUBLIC_THREADS: false, From 3eb8b9f4f869f1100f3da096d909bd63879857a7 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 25 Jul 2022 00:26:00 +0200 Subject: [PATCH 142/236] Tail: Now with message ids:tm: --- Util/Dos.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Util/Dos.js b/Util/Dos.js index 6bfdd55..99fcf0a 100644 --- a/Util/Dos.js +++ b/Util/Dos.js @@ -142,13 +142,13 @@ async function ProcessDOS(client) { break } case 'tail': { - if (drive === "C" || curServer == null) {console.log("Please, enter a server in the 'S' drive");break} + if (drive === "C" || curServer == null) {console.log("Please, enter a server in the 'S' drive"); break} let channel = line.split(" ")[1] if (!channel) {console.log('A channel id is required'); break} let MessageAmount = line.split(" ")[2] || 10 let Messages = await client.guilds.cache.get(curServer).channels.cache.get(channel).messages.fetch({limit: MessageAmount}) Messages.forEach(e => { - console.log(`${e.author.tag.padEnd(20)}${e.content}`) + console.log(`${e.id.padEnd(20)}${e.author.tag.padEnd(13)}${e.content}`) }) break } From 0b653b19acaf21b3cd14f313d5a168a1d405bb5b Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 25 Jul 2022 00:44:01 +0200 Subject: [PATCH 143/236] Forgot those with discordjs v14 :skull: --- commands/Misc/create.js | 2 +- commands/Misc/get.js | 3 +-- commands/Misc/info.js | 3 +-- commands/Misc/template.txt | 2 +- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/commands/Misc/create.js b/commands/Misc/create.js index faab056..8366326 100644 --- a/commands/Misc/create.js +++ b/commands/Misc/create.js @@ -1,4 +1,4 @@ -const { SlashCommandBuilder } = require('@discordjs/builders') +const { SlashCommandBuilder } = require('discord.js') module.exports = { data: new SlashCommandBuilder() diff --git a/commands/Misc/get.js b/commands/Misc/get.js index fb16e1e..5adffd0 100644 --- a/commands/Misc/get.js +++ b/commands/Misc/get.js @@ -1,6 +1,5 @@ -const { SlashCommandBuilder } = require('@discordjs/builders') const { CreateAndWrite } = require('../../Util/someFun.js') -const { MessageAttachment } = require('discord.js') +const { SlashCommandBuilder, MessageAttachment } = require('discord.js') module.exports = { data: new SlashCommandBuilder() diff --git a/commands/Misc/info.js b/commands/Misc/info.js index 4f08993..82b1b31 100644 --- a/commands/Misc/info.js +++ b/commands/Misc/info.js @@ -1,5 +1,4 @@ -const { SlashCommandBuilder } = require("@discordjs/builders") -const { GuildMember, EmbedBuilder } = require("discord.js") +const { SlashCommandBuilder, GuildMember, EmbedBuilder } = require("discord.js") module.exports = { data: new SlashCommandBuilder() diff --git a/commands/Misc/template.txt b/commands/Misc/template.txt index f8a17d8..9f00e42 100644 --- a/commands/Misc/template.txt +++ b/commands/Misc/template.txt @@ -1,6 +1,6 @@ //This file is a template for creating your own command -const { SlashCommandBuilder } = require("@discordjs/builders") +const { SlashCommandBuilder } = require("discord.js") module.exports = { data: new SlashCommandBuilder() From ca19ac9d5a1458055bb73c45f5ea2a096198b814 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 25 Jul 2022 00:50:20 +0200 Subject: [PATCH 144/236] Actually, they have all changed, i may have never saved them... --- commands/Moderation/ban.js | 3 +-- commands/Moderation/kick.js | 3 +-- commands/Moderation/list.js | 3 +-- commands/Moderation/slowmode.js | 3 +-- commands/Moderation/timeout.js | 3 +-- commands/Moderation/unban.js | 2 +- commands/Moderation/unlock.js | 10 +++++++--- commands/Moderation/warn.js | 3 +-- 8 files changed, 14 insertions(+), 16 deletions(-) diff --git a/commands/Moderation/ban.js b/commands/Moderation/ban.js index 4e5b958..1dc14b6 100644 --- a/commands/Moderation/ban.js +++ b/commands/Moderation/ban.js @@ -1,5 +1,4 @@ -const { SlashCommandBuilder } = require('@discordjs/builders'); -const { EmbedBuilder, GuildMember } = require('discord.js'); +const { SlashCommandBuilder, EmbedBuilder, GuildMember } = require('discord.js'); const { logCha } = require('../../config.json') module.exports = { diff --git a/commands/Moderation/kick.js b/commands/Moderation/kick.js index 2eb592c..66dbdf3 100644 --- a/commands/Moderation/kick.js +++ b/commands/Moderation/kick.js @@ -1,5 +1,4 @@ -const { SlashCommandBuilder } = require('@discordjs/builders') -const { EmbedBuilder } = require('discord.js'); +const { SlashCommandBuilder, EmbedBuilder } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() diff --git a/commands/Moderation/list.js b/commands/Moderation/list.js index 88a43e5..aa49266 100644 --- a/commands/Moderation/list.js +++ b/commands/Moderation/list.js @@ -1,5 +1,4 @@ -const { SlashCommandBuilder } = require('@discordjs/builders'); -const { User, Permissions } = require('discord.js'); +const { SlashCommandBuilder, User, Permissions } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() diff --git a/commands/Moderation/slowmode.js b/commands/Moderation/slowmode.js index b7d7f76..288a7de 100644 --- a/commands/Moderation/slowmode.js +++ b/commands/Moderation/slowmode.js @@ -1,5 +1,4 @@ -const { SlashCommandBuilder } = require('@discordjs/builders') -const { EmbedBuilder } = require('discord.js'); +const { SlashCommandBuilder, EmbedBuilder } = require('discord.js'); const { ChannelType } = require("discord-api-types/v10") module.exports = { diff --git a/commands/Moderation/timeout.js b/commands/Moderation/timeout.js index 8e4c68d..386a6e6 100644 --- a/commands/Moderation/timeout.js +++ b/commands/Moderation/timeout.js @@ -1,5 +1,4 @@ -const { SlashCommandBuilder } = require('@discordjs/builders'); -const { EmbedBuilder, GuildMember } = require('discord.js'); +const { SlashCommandBuilder, EmbedBuilder, GuildMember } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() diff --git a/commands/Moderation/unban.js b/commands/Moderation/unban.js index 500ec74..93cdbe1 100644 --- a/commands/Moderation/unban.js +++ b/commands/Moderation/unban.js @@ -1,4 +1,4 @@ -const { SlashCommandBuilder } = require('@discordjs/builders'); +const { SlashCommandBuilder } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() diff --git a/commands/Moderation/unlock.js b/commands/Moderation/unlock.js index 8f591d4..b015d5d 100644 --- a/commands/Moderation/unlock.js +++ b/commands/Moderation/unlock.js @@ -1,5 +1,4 @@ -const { SlashCommandBuilder } = require('@discordjs/builders'); -const { EmbedBuilder } = require('discord.js'); +const { SlashCommandBuilder, EmbedBuilder } = require('discord.js'); const { ChannelType } = require('discord-api-types/v10') module.exports = { @@ -11,6 +10,10 @@ module.exports = { .setDescription("The channel to lock") .addChannelTypes(ChannelType.GuildText) .setRequired(true)) + .addRoleOption(o => o + .setName('role') + .setDescription("The role to lock access, can be @eveyone") + .setRequired(true)) .addStringOption(o => o .setName("reason") .setDescription("Why should this channel be unlocked?")), @@ -18,8 +21,9 @@ module.exports = { const replyEmbed = new EmbedBuilder() let channel = interaction.options.getChannel("channel"); let reason = interaction.options.getString("reason") || "No reason provided"; + const role = interaction.options.getRole('role'); - channel.permissionOverwrites.edit(interaction.guildId, { + channel.permissionOverwrites.edit(role.id, { SEND_MESSAGES: true, SEND_MESSAGES_IN_THREADS: true, CREATE_PUBLIC_THREADS: true, diff --git a/commands/Moderation/warn.js b/commands/Moderation/warn.js index 26b3121..699a72e 100644 --- a/commands/Moderation/warn.js +++ b/commands/Moderation/warn.js @@ -1,5 +1,4 @@ -const { SlashCommandBuilder } = require('@discordjs/builders'); -const { EmbedBuilder } = require('discord.js'); +const { SlashCommandBuilder, EmbedBuilder } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() From b064752b4dda7d7e8070240bd92bbb50e98b8216 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Thu, 4 Aug 2022 10:24:39 +0200 Subject: [PATCH 145/236] Command 'get' now work --- Util/someFun.js | 2 +- commands/Misc/get.js | 202 ++++++++++++------------ events/Interaction/InteractionCreate.js | 4 +- events/client/ready.js | 8 +- events/message/MessageCreate.js | 6 +- 5 files changed, 114 insertions(+), 108 deletions(-) diff --git a/Util/someFun.js b/Util/someFun.js index 01c756c..db79ef2 100644 --- a/Util/someFun.js +++ b/Util/someFun.js @@ -1,7 +1,7 @@ const fs = require('fs') const Path = require('path') -function CreateAndWrite(path2, data) { +async function CreateAndWrite(path2, data) { fs.writeFile(Path.join(__dirname, '/..', path2), data, err => { if (err) throw err }) diff --git a/commands/Misc/get.js b/commands/Misc/get.js index 5adffd0..0eb5658 100644 --- a/commands/Misc/get.js +++ b/commands/Misc/get.js @@ -1,5 +1,6 @@ const { CreateAndWrite } = require('../../Util/someFun.js') -const { SlashCommandBuilder, MessageAttachment } = require('discord.js') +const { SlashCommandBuilder, AttachmentBuilder } = require('discord.js') +// const http = require("node:http") module.exports = { data: new SlashCommandBuilder() @@ -14,12 +15,12 @@ module.exports = { .addStringOption(o => o .setName("format") .setDescription("In what format do you want the icons?") - .addChoices({name: 'webp',value: 'webp'}, {name: 'png', value: 'png'}, {name: 'jpg', value: 'jpg'}, {name: 'jpeg', value: 'jpeg'}) + .addChoices({ name: 'webp', value: 'webp' }, { name: 'png', value: 'png' }, { name: 'jpg', value: 'jpg' }, { name: 'jpeg', value: 'jpeg' }) .setRequired(true)) .addNumberOption(o => o .setName('size') .setDescription('At what size do you want the icon to be? (pixel)') - .addChoices({name: '16',value: 16},{name: '32',value: 32},{name: '56',value: 56},{name: '64',value: 64},{name: '96',value: 96},{name: '128',value: 128},{name: '256',value: 256},{name: '300',value: 300},{name: '512',value: 512},{name: '600',value: 600},{name: '1024',value: 1024},{name: '2048',value: 2048},{name: '4096',value: 4096}) + .addChoices({ name: '16', value: 16 }, { name: '32', value: 32 }, { name: '56', value: 56 }, { name: '64', value: 64 }, { name: '96', value: 96 }, { name: '128', value: 128 }, { name: '256', value: 256 }, { name: '300', value: 300 }, { name: '512', value: 512 }, { name: '600', value: 600 }, { name: '1024', value: 1024 }, { name: '2048', value: 2048 }, { name: '4096', value: 4096 }) .setRequired(true)) .addBooleanOption(o => o .setName('name') @@ -47,109 +48,108 @@ module.exports = { await interaction.deferReply({ ephemeral: true }); const sc = interaction.options.getSubcommand(); - if (sc === 'rname') { - const guildRoles = await interaction.guild.roles.fetch(); - - let ArrName = []; - guildRoles.forEach(e => { - if (e.name !== "@everyone") ArrName.push(e.name); - }); - - if (ArrName) { - CreateAndWrite('/Tmp/log.txt', ArrName.join("\n")); - interaction.followUp({files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}); - } - else if (!ArrName) interaction.followUp("Why does not even a single role exist?"); - - } - else if (sc === "ricon") { - const guildRoles = await interaction.guild.roles.fetch(); - const format = interaction.options.getString("format"); - const size = interaction.options.getNumber("size"); - const name = interaction.options.getBoolean('name'); - if (name === null) name = true; - let ArrayURL = []; - - guildRoles.forEach(e => { - if (e.iconURL()) { - if (name) ArrayURL.push(`${e.iconURL({ format: format, size: size })} for ${e.name}`); - else if (!name) ArrayURL.push(`${e.iconURL({ format: format, size: size })}`); - }; - }); - - if (ArrayURL) { - if (name) CreateAndWrite('/Tmp/log.txt', ArrayURL.join("\n")); - else if (!name) CreateAndWrite('/Tmp/log.txt', ArrayURL.join(' ')); - interaction.followUp({files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}); + switch (sc) { + case "rname": { + const guildRoles = await interaction.guild.roles.fetch(); + + let ArrName = []; + guildRoles.forEach(e => { + if (e.name !== "@everyone") ArrName.push(e.name); + }); + + if (ArrName.length) { + CreateAndWrite('/Tmp/log.txt', ArrName.join("\n")); + interaction.followUp({ files: [new AttachmentBuilder('./Tmp/log.txt', 'result.txt')] }); + } + else if (!ArrName.length) interaction.followUp("Why does not even a single role exist?"); + break } - else if (!ArrayURL) { - interaction.followUp("No role found with an icon"); + case "ricon": { + const guildRoles = await interaction.guild.roles.fetch(); + const format = interaction.options.getString("format"); + const size = interaction.options.getNumber("size"); + let name = interaction.options.getBoolean('name'); + if (name === null) name = true; + let ArrayURL = []; + + guildRoles.forEach(e => { + if (e.iconURL()) { + if (name) ArrayURL.push(`${e.iconURL({ format: format, size: size })} for ${e.name}`); + else if (!name) ArrayURL.push(`${e.iconURL({ format: format, size: size })}`); + }; + }); + + console.log(ArrayURL) + if (ArrayURL.length) { + if (name) await CreateAndWrite('/Tmp/log.txt', ArrayURL.join("\n")); + else if (!name) await CreateAndWrite('/Tmp/log.txt', ArrayURL.join(' ')); + interaction.followUp({ files: [new AttachmentBuilder('./Tmp/log.txt', 'result.txt')] }); + } + else if (!ArrayURL.length) interaction.followUp("No role found with an icon"); + break } - } - else if (sc === 'rcolor') { - const guildRoles = await interaction.guild.roles.fetch(); - const hex = interaction.options.getBoolean("hex"); - let ArrColor = []; - - guildRoles.forEach(e => { - let color - if (hex) color = e.hexColor; else color = e.color; - - if (color === String && color !== '#000000' || color === Number && color !== 0) ArrColor.push(`${color} for ${e.name}`); - }); - - if (ArrColor) { - CreateAndWrite('/Tmp/log.txt', ArrColor.join("\n")); - interaction.followUp({ files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')]}); + case 'rcolor': { + const guildRoles = await interaction.guild.roles.fetch(); + const hex = interaction.options.getBoolean("hex"); + let ArrColor = []; + + guildRoles.forEach(e => { + let color + if (hex) color = e.hexColor; else color = e.color; + + if (hex && color !== '#000000' || !hex && color !== 0) ArrColor.push(`${color} for ${e.name}`); + }); + + if (ArrColor.length) { + CreateAndWrite('/Tmp/log.txt', ArrColor.join("\n")); + interaction.followUp({ files: [new AttachmentBuilder('./Tmp/log.txt', 'result.txt')] }); + } + else if (!ArrColor.length) interaction.followUp("No role found to have color"); + break } - else if (!ArrColor) { - interaction.followUp("No role found to have color"); - }; - } - else if (sc === "emojis") { - await interaction.guild.fetch(); - let emojis = await interaction.guild.emojis.fetch(); - let name = interaction.options.getBoolean('name'); - if (name === null) name = true; - let emojiArr = []; - - emojis.forEach(e => { - if (name) emojiArr.push(`${e.url} for ${e.name}`); - else if (!name) emojiArr.push(`${e.url}`); - }); - - if (emojiArr.length) { - if (name) CreateAndWrite('/Tmp/log.txt', emojiArr.join("\n")); - else if (!name) CreateAndWrite('/Tmp/log.txt', emojiArr.join(' ')); - - interaction.followUp({ files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')] }); + case "emojis": { + await interaction.guild.fetch(); + let emojis = await interaction.guild.emojis.fetch(); + let name = interaction.options.getBoolean('name'); + if (name === null) name = true; + let emojiArr = []; + + emojis.forEach(e => { + if (name) emojiArr.push(`${e.url} for ${e.name}`); + else if (!name) emojiArr.push(`${e.url}`); + }); + + if (emojiArr.length) { + if (name) CreateAndWrite('/Tmp/log.txt', emojiArr.join("\n")); + else if (!name) CreateAndWrite('/Tmp/log.txt', emojiArr.join(' ')); + + interaction.followUp({ files: [new AttachmentBuilder('./Tmp/log.txt', 'result.txt')] }); + } + else if (!emojiArr.length) interaction.followUp("No emojis found"); + break } - else if (!emojiArr.length) { - interaction.followUp("No emojis found"); + case "stickers": { + await interaction.guild.fetch(); + let stickers = await interaction.guild.stickers.fetch(); + let name = interaction.options.getBoolean('name'); + if (name === null) name = true; + let stickersArr = []; + + stickers.forEach(e => { + if (name) stickersArr.push(`${e.url} for ${e.name}`); + else if (!name) stickersArr.push(`${e.url}`); + }); + + + if (stickersArr.length) { + if (name) CreateAndWrite('/Tmp/log.txt', stickersArr.join("\n")); + else if (!name) CreateAndWrite('Tmp/log.txt', stickersArr.join(' ')) + + interaction.followUp({ files: [new AttachmentBuilder('./Tmp/log.txt', 'result.txt')] }); + } + else if (!stickersArr.length) interaction.followUp("No stickers found"); + break }; } - else if (sc === "stickers") { - await interaction.guild.fetch(); - let stickers = await interaction.guild.stickers.fetch(); - let name = interaction.options.getBoolean('name'); - if (name === null) name = true; - let stickersArr = []; - - stickers.forEach(e => { - if (name) stickersArr.push(`${e.url} for ${e.name}`); - else if (!name) stickersArr.push(`${e.url}`); - }); - - - if (stickersArr.length) { - if (name) CreateAndWrite('/Tmp/log.txt', stickersArr.join("\n")); - else if (!name) CreateAndWrite('Tmp/log.txt', stickersArr.join(' ')) - - interaction.followUp({ files: [new MessageAttachment('./Tmp/log.txt', 'result.txt')] }); - } - else if (!stickersArr.length) { - interaction.followUp("No stickers found"); - }; - }; } } \ No newline at end of file diff --git a/events/Interaction/InteractionCreate.js b/events/Interaction/InteractionCreate.js index effd2c5..e3d541e 100644 --- a/events/Interaction/InteractionCreate.js +++ b/events/Interaction/InteractionCreate.js @@ -17,7 +17,9 @@ module.exports = { try { await interaction.reply({ content: `There was an error while executing this command!\n\`\`\`${err} \`\`\``, ephemeral: true }); } catch { - await interaction.followUp({content: `There was an error while executing this command!\n\`\`\` ${err} \`\`\``, ephemeral: true}); + try { + await interaction.followUp({content: `There was an error while executing this command!\n\`\`\` ${err} \`\`\``, ephemeral: true}); + } catch {} }; }; } diff --git a/events/client/ready.js b/events/client/ready.js index 22a40bf..6a87215 100644 --- a/events/client/ready.js +++ b/events/client/ready.js @@ -1,10 +1,11 @@ const { showLink } = require('../../config.json') const { ProcessDOS } = require('../../Util/Dos.js') +const { PermissionsBitField } = require('discord.js'); module.exports = { name: 'ready', on: false, - async execute() { + async execute(client) { client.db.Cases.sync(); client.db.Star.sync(); @@ -16,7 +17,10 @@ module.exports = { console.log(`Channels of ${guildFetched.name} loaded (${guildFetched.id})`) }); if (showLink) { - console.log(`https://discord.com/oauth2/authorize?client_id=${client.user.id}&permissions=1644971949567&scope=bot%20applications.commands`); + console.log(client.generateInvite({ + permissions: PermissionsBitField.All, + scopes: ["applications.commands", "bot"] + })) } console.log(`Login as ${client.user.tag}`); diff --git a/events/message/MessageCreate.js b/events/message/MessageCreate.js index 0c0feee..12ec12a 100644 --- a/events/message/MessageCreate.js +++ b/events/message/MessageCreate.js @@ -4,9 +4,9 @@ module.exports = { async execute(messages) { if (messages.author.id === client.user.id) return; const message = client.messages.get(messages.content); - - if (!message) return; - + + if (!message) {client.messages.forEach(e => {if (e.code) e.code()}); return} + try { await message.execute(messages); } catch (err) { From 7506c81786cb89adec9f689f155a4243a132437f Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Thu, 4 Aug 2022 10:48:25 +0200 Subject: [PATCH 146/236] Some Fixes --- commands/Misc/get.js | 10 +++++----- events/message/MessageCreate.js | 2 +- messages/Misc/CrossPost.js | 1 + 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/commands/Misc/get.js b/commands/Misc/get.js index 0eb5658..81c39a2 100644 --- a/commands/Misc/get.js +++ b/commands/Misc/get.js @@ -59,7 +59,7 @@ module.exports = { if (ArrName.length) { CreateAndWrite('/Tmp/log.txt', ArrName.join("\n")); - interaction.followUp({ files: [new AttachmentBuilder('./Tmp/log.txt', 'result.txt')] }); + interaction.followUp({ files: [new AttachmentBuilder('/Tmp/log.txt', 'result.txt')] }); } else if (!ArrName.length) interaction.followUp("Why does not even a single role exist?"); break @@ -83,7 +83,7 @@ module.exports = { if (ArrayURL.length) { if (name) await CreateAndWrite('/Tmp/log.txt', ArrayURL.join("\n")); else if (!name) await CreateAndWrite('/Tmp/log.txt', ArrayURL.join(' ')); - interaction.followUp({ files: [new AttachmentBuilder('./Tmp/log.txt', 'result.txt')] }); + interaction.followUp({ files: [new AttachmentBuilder('/Tmp/log.txt', 'result.txt')] }); } else if (!ArrayURL.length) interaction.followUp("No role found with an icon"); break @@ -102,7 +102,7 @@ module.exports = { if (ArrColor.length) { CreateAndWrite('/Tmp/log.txt', ArrColor.join("\n")); - interaction.followUp({ files: [new AttachmentBuilder('./Tmp/log.txt', 'result.txt')] }); + interaction.followUp({ files: [new AttachmentBuilder('/Tmp/log.txt', 'result.txt')] }); } else if (!ArrColor.length) interaction.followUp("No role found to have color"); break @@ -123,7 +123,7 @@ module.exports = { if (name) CreateAndWrite('/Tmp/log.txt', emojiArr.join("\n")); else if (!name) CreateAndWrite('/Tmp/log.txt', emojiArr.join(' ')); - interaction.followUp({ files: [new AttachmentBuilder('./Tmp/log.txt', 'result.txt')] }); + interaction.followUp({ files: [new AttachmentBuilder('/Tmp/log.txt', 'result.txt')] }); } else if (!emojiArr.length) interaction.followUp("No emojis found"); break @@ -145,7 +145,7 @@ module.exports = { if (name) CreateAndWrite('/Tmp/log.txt', stickersArr.join("\n")); else if (!name) CreateAndWrite('Tmp/log.txt', stickersArr.join(' ')) - interaction.followUp({ files: [new AttachmentBuilder('./Tmp/log.txt', 'result.txt')] }); + interaction.followUp({ files: [new AttachmentBuilder('/Tmp/log.txt', 'result.txt')] }); } else if (!stickersArr.length) interaction.followUp("No stickers found"); break diff --git a/events/message/MessageCreate.js b/events/message/MessageCreate.js index 12ec12a..4c0ecb2 100644 --- a/events/message/MessageCreate.js +++ b/events/message/MessageCreate.js @@ -5,7 +5,7 @@ module.exports = { if (messages.author.id === client.user.id) return; const message = client.messages.get(messages.content); - if (!message) {client.messages.forEach(e => {if (e.code) e.code()}); return} + if (!message) {client.messages.forEach(e => {if (e.code) e.code(messages)}); return} try { await message.execute(messages); diff --git a/messages/Misc/CrossPost.js b/messages/Misc/CrossPost.js index 254de26..1453588 100644 --- a/messages/Misc/CrossPost.js +++ b/messages/Misc/CrossPost.js @@ -2,6 +2,7 @@ const { ChannelType } = require('discord.js') module.exports = { async code(messages) { + await messages.fetch() if (messages.author === "282286160494067712" && messages.channel.type === ChannelType.GuildNews) { this.execute(messages) } From 159bc9b85eb8d295f677230980e53979bbc2bf1d Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Thu, 4 Aug 2022 11:06:48 +0200 Subject: [PATCH 147/236] Maybe a better fix? --- Util/someFun.js | 3 +-- commands/Misc/get.js | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Util/someFun.js b/Util/someFun.js index db79ef2..0d0baeb 100644 --- a/Util/someFun.js +++ b/Util/someFun.js @@ -1,8 +1,7 @@ const fs = require('fs') -const Path = require('path') async function CreateAndWrite(path2, data) { - fs.writeFile(Path.join(__dirname, '/..', path2), data, err => { + fs.writeFile(`${__dirname}/..${path2}`, data, err => { if (err) throw err }) } diff --git a/commands/Misc/get.js b/commands/Misc/get.js index 81c39a2..796f4db 100644 --- a/commands/Misc/get.js +++ b/commands/Misc/get.js @@ -79,7 +79,6 @@ module.exports = { }; }); - console.log(ArrayURL) if (ArrayURL.length) { if (name) await CreateAndWrite('/Tmp/log.txt', ArrayURL.join("\n")); else if (!name) await CreateAndWrite('/Tmp/log.txt', ArrayURL.join(' ')); From 9f318cb619cab852502a37c714a561c2151e4bbf Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Fri, 5 Aug 2022 18:40:20 +0200 Subject: [PATCH 148/236] The get command now uses the pastebin API --- Tmp/log.txt | 0 Util/someFun.js | 9 ----- commands/Misc/get.js | 73 ++++++++++++++++++++++++----------- config.json.template | 3 +- package-lock.json | 91 ++++++++++++++++++++++++++++++++------------ package.json | 1 + 6 files changed, 120 insertions(+), 57 deletions(-) delete mode 100644 Tmp/log.txt delete mode 100644 Util/someFun.js diff --git a/Tmp/log.txt b/Tmp/log.txt deleted file mode 100644 index e69de29..0000000 diff --git a/Util/someFun.js b/Util/someFun.js deleted file mode 100644 index 0d0baeb..0000000 --- a/Util/someFun.js +++ /dev/null @@ -1,9 +0,0 @@ -const fs = require('fs') - -async function CreateAndWrite(path2, data) { - fs.writeFile(`${__dirname}/..${path2}`, data, err => { - if (err) throw err - }) -} - -module.exports = { CreateAndWrite } \ No newline at end of file diff --git a/commands/Misc/get.js b/commands/Misc/get.js index 796f4db..a3aceea 100644 --- a/commands/Misc/get.js +++ b/commands/Misc/get.js @@ -1,6 +1,23 @@ -const { CreateAndWrite } = require('../../Util/someFun.js') const { SlashCommandBuilder, AttachmentBuilder } = require('discord.js') -// const http = require("node:http") +const { PastebinDevKey } = require('../../config.json') +const axios = require('axios').default + +async function sendAsPastebin(data, interaction) { + axios({ + method: 'post', + url: 'https://pastebin.com/api/api_post.php', + data: `api_dev_key=${PastebinDevKey}&api_option=paste&api_paste_private=1&api_paste_expire_date=10M&api_paste_code=${data}` + }) + .then(r => { + interaction.followUp({content: r.data}) + }) + .catch(e => { + if (e.response) { + e.response + interaction.followUp({content: `ERROR: \`${e.response.status}, ${e.response.data}\``}) + } + }); +} module.exports = { data: new SlashCommandBuilder() @@ -15,12 +32,31 @@ module.exports = { .addStringOption(o => o .setName("format") .setDescription("In what format do you want the icons?") - .addChoices({ name: 'webp', value: 'webp' }, { name: 'png', value: 'png' }, { name: 'jpg', value: 'jpg' }, { name: 'jpeg', value: 'jpeg' }) + .addChoices( + { name: 'webp', value: 'webp' }, + { name: 'png', value: 'png' }, + { name: 'jpg', value: 'jpg' }, + { name: 'jpeg', value: 'jpeg' } + ) .setRequired(true)) .addNumberOption(o => o .setName('size') .setDescription('At what size do you want the icon to be? (pixel)') - .addChoices({ name: '16', value: 16 }, { name: '32', value: 32 }, { name: '56', value: 56 }, { name: '64', value: 64 }, { name: '96', value: 96 }, { name: '128', value: 128 }, { name: '256', value: 256 }, { name: '300', value: 300 }, { name: '512', value: 512 }, { name: '600', value: 600 }, { name: '1024', value: 1024 }, { name: '2048', value: 2048 }, { name: '4096', value: 4096 }) + .addChoices( + { name: '16', value: 16 }, + { name: '32', value: 32 }, + { name: '56', value: 56 }, + { name: '64', value: 64 }, + { name: '96', value: 96 }, + { name: '128', value: 128 }, + { name: '256', value: 256 }, + { name: '300', value: 300 }, + { name: '512', value: 512 }, + { name: '600', value: 600 }, + { name: '1024', value: 1024 }, + { name: '2048', value: 2048 }, + { name: '4096', value: 4096 } + ) .setRequired(true)) .addBooleanOption(o => o .setName('name') @@ -58,8 +94,7 @@ module.exports = { }); if (ArrName.length) { - CreateAndWrite('/Tmp/log.txt', ArrName.join("\n")); - interaction.followUp({ files: [new AttachmentBuilder('/Tmp/log.txt', 'result.txt')] }); + await sendAsPastebin(ArrName.join("\n"), interaction) } else if (!ArrName.length) interaction.followUp("Why does not even a single role exist?"); break @@ -78,11 +113,10 @@ module.exports = { else if (!name) ArrayURL.push(`${e.iconURL({ format: format, size: size })}`); }; }); - + if (ArrayURL.length) { - if (name) await CreateAndWrite('/Tmp/log.txt', ArrayURL.join("\n")); - else if (!name) await CreateAndWrite('/Tmp/log.txt', ArrayURL.join(' ')); - interaction.followUp({ files: [new AttachmentBuilder('/Tmp/log.txt', 'result.txt')] }); + if (name) sendAsPastebin(ArrayURL.join("\n"), interaction) + else if (!name) sendAsPastebin(ArrayURL.join(""), interaction) } else if (!ArrayURL.length) interaction.followUp("No role found with an icon"); break @@ -99,10 +133,7 @@ module.exports = { if (hex && color !== '#000000' || !hex && color !== 0) ArrColor.push(`${color} for ${e.name}`); }); - if (ArrColor.length) { - CreateAndWrite('/Tmp/log.txt', ArrColor.join("\n")); - interaction.followUp({ files: [new AttachmentBuilder('/Tmp/log.txt', 'result.txt')] }); - } + if (ArrColor.length) sendAsPastebin(ArrColor.join("\n"), interaction); else if (!ArrColor.length) interaction.followUp("No role found to have color"); break } @@ -119,12 +150,10 @@ module.exports = { }); if (emojiArr.length) { - if (name) CreateAndWrite('/Tmp/log.txt', emojiArr.join("\n")); - else if (!name) CreateAndWrite('/Tmp/log.txt', emojiArr.join(' ')); - - interaction.followUp({ files: [new AttachmentBuilder('/Tmp/log.txt', 'result.txt')] }); + if (name) sendAsPastebin(emojiArr.join("\n"), interaction); + else if (!name) sendAsPastebin(emojiArr.join(' '), interaction); } - else if (!emojiArr.length) interaction.followUp("No emojis found"); + else if (!emojiArr.length) interaction.followUp({content: "No emoji found"}) break } case "stickers": { @@ -141,10 +170,8 @@ module.exports = { if (stickersArr.length) { - if (name) CreateAndWrite('/Tmp/log.txt', stickersArr.join("\n")); - else if (!name) CreateAndWrite('Tmp/log.txt', stickersArr.join(' ')) - - interaction.followUp({ files: [new AttachmentBuilder('/Tmp/log.txt', 'result.txt')] }); + if (name) sendAsPastebin(stickersArr.join("\n"), interaction); + else if (!name) sendAsPastebin(stickersArr.join(' '), interaction) } else if (!stickersArr.length) interaction.followUp("No stickers found"); break diff --git a/config.json.template b/config.json.template index 7ed3c1e..b28408b 100644 --- a/config.json.template +++ b/config.json.template @@ -5,5 +5,6 @@ "logCha":"The id of a log channel", "starBoardCha":"The Starboard channel" "showLink": "Showing the link for inviting the bot, set 'false' to desactivate it", - "sqlPass":"A password for the database, can be empty" + "sqlPass": "A password for the database, can be empty", + "PastebinDevKey": "A key to the api of Pastebin" } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9319b05..f9d376b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "ISC", "dependencies": { "@discordjs/rest": "0.4.1", + "axios": "^0.27.2", "discord-api-types": "0.33.0", "discord.js": "^14.0.3", "sequelize": "6.19.1", @@ -387,6 +388,15 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, + "node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -886,12 +896,12 @@ } }, "node_modules/file-type": { - "version": "17.1.2", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.2.tgz", - "integrity": "sha512-3thBUSfa9YEUEGO/NAAiQGvjujZxZiJTF6xNwyDn6kB0NcEtwMn5ttkGG9jGwm/Nt/t8U1bpBNqyBNZCz4F4ig==", + "version": "17.1.6", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.6.tgz", + "integrity": "sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==", "dependencies": { "readable-web-to-node-stream": "^3.0.2", - "strtok3": "^7.0.0-alpha.7", + "strtok3": "^7.0.0-alpha.9", "token-types": "^5.0.0-alpha.2" }, "engines": { @@ -920,6 +930,25 @@ "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, + "node_modules/follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -1714,11 +1743,11 @@ } }, "node_modules/peek-readable": { - "version": "5.0.0-alpha.5", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0-alpha.5.tgz", - "integrity": "sha512-pJohF/tDwV3ntnT5+EkUo4E700q/j/OCDuPxtM+5/kFGjyOai/sK4/We4Cy1MB2OiTQliWU5DxPvYIKQAdPqAA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", + "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=14.16" }, "funding": { "type": "github", @@ -2097,15 +2126,15 @@ } }, "node_modules/strtok3": { - "version": "7.0.0-alpha.8", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0-alpha.8.tgz", - "integrity": "sha512-u+k19v+rTxBjGYxncRQjGvZYwYvEd0uP3D+uHKe/s4WB1eXS5ZwpZsTlBu5xSS4zEd89mTXECXg6WW3FSeV8cA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", + "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", "dependencies": { "@tokenizer/token": "^0.3.0", - "peek-readable": "^5.0.0-alpha.5" + "peek-readable": "^5.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=14.16" }, "funding": { "type": "github", @@ -2656,6 +2685,15 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, + "axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "requires": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -3046,12 +3084,12 @@ } }, "file-type": { - "version": "17.1.2", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.2.tgz", - "integrity": "sha512-3thBUSfa9YEUEGO/NAAiQGvjujZxZiJTF6xNwyDn6kB0NcEtwMn5ttkGG9jGwm/Nt/t8U1bpBNqyBNZCz4F4ig==", + "version": "17.1.6", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.6.tgz", + "integrity": "sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==", "requires": { "readable-web-to-node-stream": "^3.0.2", - "strtok3": "^7.0.0-alpha.7", + "strtok3": "^7.0.0-alpha.9", "token-types": "^5.0.0-alpha.2" } }, @@ -3071,6 +3109,11 @@ "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, + "follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" + }, "form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -3671,9 +3714,9 @@ "dev": true }, "peek-readable": { - "version": "5.0.0-alpha.5", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0-alpha.5.tgz", - "integrity": "sha512-pJohF/tDwV3ntnT5+EkUo4E700q/j/OCDuPxtM+5/kFGjyOai/sK4/We4Cy1MB2OiTQliWU5DxPvYIKQAdPqAA==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", + "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==" }, "pg-connection-string": { "version": "2.5.0", @@ -3909,12 +3952,12 @@ "dev": true }, "strtok3": { - "version": "7.0.0-alpha.8", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0-alpha.8.tgz", - "integrity": "sha512-u+k19v+rTxBjGYxncRQjGvZYwYvEd0uP3D+uHKe/s4WB1eXS5ZwpZsTlBu5xSS4zEd89mTXECXg6WW3FSeV8cA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", + "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", "requires": { "@tokenizer/token": "^0.3.0", - "peek-readable": "^5.0.0-alpha.5" + "peek-readable": "^5.0.0" } }, "supports-color": { diff --git a/package.json b/package.json index d8cc365..74c49bb 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "license": "ISC", "dependencies": { "@discordjs/rest": "0.4.1", + "axios": "^0.27.2", "discord-api-types": "0.33.0", "discord.js": "^14.0.3", "sequelize": "6.19.1", From add45ade91f2870fe85aed2255b726ca4c762268 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 6 Aug 2022 11:30:12 +0200 Subject: [PATCH 149/236] Some Little change --- Util/GetJSFile.js | 41 +++++++++++++++++++++++++-------- events/message/MessageCreate.js | 5 ++-- main.js | 6 ++--- messages/Misc/CrossPost.js | 3 ++- 4 files changed, 40 insertions(+), 15 deletions(-) diff --git a/Util/GetJSFile.js b/Util/GetJSFile.js index 9c056e3..361de86 100644 --- a/Util/GetJSFile.js +++ b/Util/GetJSFile.js @@ -2,16 +2,18 @@ const fs = require('node:fs') async function GetCommandFile(Where) { const Folder = fs.readdirSync(`${__dirname}/../commands`) + let special = "┌" for (const folder of Folder) { const commandFiles = fs.readdirSync(`${__dirname}/../commands/${folder}`).filter(file => file.endsWith(".js")); - console.log(` Next commands are loading from "${folder}"`); + console.log(` ${special} Next commands are loading from "${folder}"`); + special = "├" for (const file of commandFiles) { try { const command = require(`${__dirname}/../commands/${folder}/${file}`); Where.set(command.data.name, command); - console.log(` Command "${command.data.name}" has been loaded`); + console.log(` │ Command "${command.data.name}" has been loaded`); } catch (err) { console.error(err); }; @@ -21,17 +23,19 @@ async function GetCommandFile(Where) { async function GetMessageFile(Where) { const Folder = fs.readdirSync(`${__dirname}/../messages`) + let special = "┌" for (const folder of Folder) { const messagesFiles = fs.readdirSync(`${__dirname}/../messages/${folder}`).filter(file => file.endsWith(".js")); - console.log(` Next messages are loading from "${folder}"`); - + console.log(` ${special} Next messages are loading from "${folder}"`); + special = "├" + for (const file of messagesFiles) { - try { + try { const message = require(`${__dirname}/../messages/${folder}/${file}`); Where.set(message.message, message); - console.log(` Message "${message.message}" has been loaded`); - } catch (err) { + console.log(` │ Message "${message.message}" has been loaded`); + } catch (err) { console.error(err); }; }; @@ -40,10 +44,12 @@ async function GetMessageFile(Where) { async function GetEventFile(client) { const Folder = fs.readdirSync(`${__dirname}/../events`); + let special = "┌" for (const folder of Folder) { const eventFiles = fs.readdirSync(`${__dirname}/../events/${folder}`).filter(file => file.endsWith(".js")); - console.log(` Next Events are loading from "${folder}"`); + console.log(` ${special} Next Events are loading from "${folder}"`); + special = "├" for (const file of eventFiles) { try { @@ -54,7 +60,7 @@ async function GetEventFile(client) { else if (!event.on) { client.once(event.name, event.execute); }; - console.log(` Event ${event.name} has been loaded`) + console.log(` │ Event ${event.name} has been loaded`) } catch (err) { console.error(err); }; @@ -62,4 +68,21 @@ async function GetEventFile(client) { }; }; +async function GetJsFile() { + // initiation of all slash commands + client.commands = new Collection(); + console.log(' Initialization of / commands') + GetCommandFile(client.commands); + console.log(" └ All Commands have been loaded"); + + console.log('Initialization of messages') + client.messages = new Collection(); + GetMessageFile(client.messages); + console.log(" All Messages has been loaded"); + + console.log('Initialization of events') + GetEventFile(client) + console.log(' All Events has been loaded') +} + module.exports = { GetCommandFile, GetMessageFile, GetEventFile } \ No newline at end of file diff --git a/events/message/MessageCreate.js b/events/message/MessageCreate.js index 4c0ecb2..13ec850 100644 --- a/events/message/MessageCreate.js +++ b/events/message/MessageCreate.js @@ -3,9 +3,10 @@ module.exports = { on: true, async execute(messages) { if (messages.author.id === client.user.id) return; - const message = client.messages.get(messages.content); + client.messages.forEach(e => {if (e.code) e.code(messages)}) - if (!message) {client.messages.forEach(e => {if (e.code) e.code(messages)}); return} + const message = client.messages.get(messages.content); + if (!message) return; try { await message.execute(messages); diff --git a/main.js b/main.js index 4d32bef..e388242 100644 --- a/main.js +++ b/main.js @@ -9,15 +9,15 @@ client.db = require('./Util/database'); client.commands = new Collection(); console.log('Initialization of / commands') GetCommandFile(client.commands); -console.log(" All Commands have been loaded"); +console.log(" └ All Commands have been loaded"); console.log('Initialization of messages') client.messages = new Collection(); GetMessageFile(client.messages); -console.log(" All Messages has been loaded"); +console.log(" └ All Messages has been loaded"); console.log('Initialization of events') GetEventFile(client) -console.log(' All Events has been loaded') +console.log(' └ All Events has been loaded') client.login(token); \ No newline at end of file diff --git a/messages/Misc/CrossPost.js b/messages/Misc/CrossPost.js index 1453588..a72ec5a 100644 --- a/messages/Misc/CrossPost.js +++ b/messages/Misc/CrossPost.js @@ -1,10 +1,11 @@ const { ChannelType } = require('discord.js') module.exports = { + message: "CrossPost", async code(messages) { await messages.fetch() if (messages.author === "282286160494067712" && messages.channel.type === ChannelType.GuildNews) { - this.execute(messages) + this.execute(messages); } }, async execute(messages) { From 5fad7b305019f006cee7cf067d8130c349629cd3 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 8 Aug 2022 18:51:22 +0200 Subject: [PATCH 150/236] Update of the ban command --- Util/GetJSFile.js | 5 +++-- commands/Moderation/ban.js | 39 +++++++++++++++++++------------------- main.js | 19 +++---------------- 3 files changed, 25 insertions(+), 38 deletions(-) diff --git a/Util/GetJSFile.js b/Util/GetJSFile.js index 361de86..f87a0ca 100644 --- a/Util/GetJSFile.js +++ b/Util/GetJSFile.js @@ -1,4 +1,5 @@ const fs = require('node:fs') +const { Collection } = require('discord.js') async function GetCommandFile(Where) { const Folder = fs.readdirSync(`${__dirname}/../commands`) @@ -68,7 +69,7 @@ async function GetEventFile(client) { }; }; -async function GetJsFile() { +async function GetJsFile(client) { // initiation of all slash commands client.commands = new Collection(); console.log(' Initialization of / commands') @@ -85,4 +86,4 @@ async function GetJsFile() { console.log(' All Events has been loaded') } -module.exports = { GetCommandFile, GetMessageFile, GetEventFile } \ No newline at end of file +module.exports = { GetJsFile } \ No newline at end of file diff --git a/commands/Moderation/ban.js b/commands/Moderation/ban.js index 1dc14b6..d35d2ca 100644 --- a/commands/Moderation/ban.js +++ b/commands/Moderation/ban.js @@ -32,10 +32,14 @@ module.exports = { if (!(member instanceof GuildMember)) { await guild.members.fetch(member); }; - + + if (member.id === interaction.user.id) { + return interaction.followUp("Why do you want to ban yourself?"); + } + if (member.id === interaction.client.user.id) return interaction.followUp("❌ Why would you ban me? 😢"); - - + + if (member.bannable) { const dmEmbed = new EmbedBuilder() .setColor("#f04a47") .setDescription(`You have been banned for: ${reason}`); @@ -45,32 +49,27 @@ module.exports = { const logEmbed = new EmbedBuilder() .setColor("#f04a47") .addFields( - {name: '**User**', value: `${member}`, inline: true }, - {name: '**Moderator**', value: `${interaction.member}`, inline: true}, - {name: '**Reason**', value: `${reason}`, inline: true} - ) - + { name: '**User**', value: `${member}`, inline: true }, + { name: '**Moderator**', value: `${interaction.member}`, inline: true }, + { name: '**Reason**', value: `${reason}`, inline: true } + ); + await member.user.send({ embeds: [dmEmbed] }); if (!joke) { - try { - await member.ban({ days: days, reason: reason }); - } catch (err) { - console.error(err) - return interaction.followUp('Erf, i can\'t do that') - } - + await member.ban({ days: days, reason: reason }); db.create({ Executor: interaction.user.id, userID: member.user.id, reason: reason, type: "ban" }); - - }; - let logChannel = await guild.channels.fetch(logCha) - logChannel.send({ embeds: [logEmbed] }) - + let logChannel = await guild.channels.fetch(logCha) + logChannel.send({ embeds: [logEmbed] }) + } + await interaction.followUp({ embeds: [replyEmbed] }); } + else return interaction.followUp('Erf, i can\'t do that') + } } \ No newline at end of file diff --git a/main.js b/main.js index e388242..e73afc3 100644 --- a/main.js +++ b/main.js @@ -1,23 +1,10 @@ -const { Client, Collection } = require('discord.js'); -const { GetCommandFile, GetMessageFile, GetEventFile } = require('./Util/GetJSFile.js') +const { Client } = require('discord.js'); +const { GetJsFile } = require('./Util/GetJSFile.js') const { token } = require('./config.json'); client = new Client({ intents: 34306, presence: { status: 'idle' }}); client.db = require('./Util/database'); -// initiation of all slash commands -client.commands = new Collection(); -console.log('Initialization of / commands') -GetCommandFile(client.commands); -console.log(" └ All Commands have been loaded"); - -console.log('Initialization of messages') -client.messages = new Collection(); -GetMessageFile(client.messages); -console.log(" └ All Messages has been loaded"); - -console.log('Initialization of events') -GetEventFile(client) -console.log(' └ All Events has been loaded') +GetJsFile(client) client.login(token); \ No newline at end of file From 0ebf856ab42187dc7e3007cdea2983ab4e2b5226 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Thu, 11 Aug 2022 12:38:31 +0200 Subject: [PATCH 151/236] When you forgot to import someything: :skull: --- commands/Moderation/unban.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/Moderation/unban.js b/commands/Moderation/unban.js index 93cdbe1..61424d1 100644 --- a/commands/Moderation/unban.js +++ b/commands/Moderation/unban.js @@ -1,4 +1,4 @@ -const { SlashCommandBuilder } = require('discord.js'); +const { SlashCommandBuilder, EmbedBuilder } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() From 8b3e7409d6071dcc412d9dd6f86c8bfda3e92581 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Thu, 11 Aug 2022 12:59:39 +0200 Subject: [PATCH 152/236] Fix of unban.js --- commands/Moderation/unban.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/commands/Moderation/unban.js b/commands/Moderation/unban.js index 61424d1..bd21c52 100644 --- a/commands/Moderation/unban.js +++ b/commands/Moderation/unban.js @@ -12,19 +12,19 @@ module.exports = { .setName("reason") .setDescription("Why should this user be unbanned?")), async execute(interaction) { - let member = interaction.options.getMember("user"); - let reason = interaction.options.getString("reason"); + const user = interaction.options.getUser("user"); + const reason = interaction.options.getString("reason") || "No reason provided"; const replyEmbed = new EmbedBuilder(); - if (!reason) reason = "No reason provided"; + const guild = interaction.guild - await member.unban(); + await guild.bans.remove(user, reason); if (reason === String) { replyEmbed.setColor("#00FF00"); - replyEmbed.setDescription(`${user.tag} has been unbanned with the reason ${reason}`); + replyEmbed.setDescription(`**${user.tag} has been unbanned with the reason:** ${reason}`); } else if (reason !== String) { - replyEmbed.setDescription(`${user.tag} has been unbanned`); + replyEmbed.setDescription(`**${user.tag} has been unbanned**`); replyEmbed.setColor("#00FF00"); } interaction.reply({embeds:[replyEmbed]}); From 5b70d2f5dfea3b020e85ad4ea22fa975ee5ae276 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Thu, 11 Aug 2022 13:04:57 +0200 Subject: [PATCH 153/236] Added eval.js, i should NOT allow anyone to execute this command... --- commands/Misc/eval.js | 30 ++++++++++++++++++++++++++++++ config.json.template | 3 ++- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 commands/Misc/eval.js diff --git a/commands/Misc/eval.js b/commands/Misc/eval.js new file mode 100644 index 0000000..a06398e --- /dev/null +++ b/commands/Misc/eval.js @@ -0,0 +1,30 @@ +const { SlashCommandBuilder } = require("discord.js"); +const { OwnerId } = require("../../config.json"); + +module.exports = { + data: new SlashCommandBuilder() + .setName("eval") + .setDescription("Execute Unsigned code") + .addStringOption(o => o + .setName("code") + .setDescription("The code to execute")), + async execute(interaction) { + interaction.deferReply({ ephemeral: true }) + const code = interaction.options.getString("code") + if (OwnerId instanceof Array) { + let Use = false + OwnerId.forEach(e => { + if (interaction.user.id === e) return Use = true + }) + if (Use) await eval(console.log(code)) + } + else if (OwnerId instanceof String) { + if (interaction.user.id !== OwnerId) return interaction.reply("You aren't authorized to execute this") + else await eval(console.log(code)) + } + await interaction.fetchReply() + if (interaction.replied === false) { + interaction.followUp("Unsigned code executed.") + } + } +} \ No newline at end of file diff --git a/config.json.template b/config.json.template index b28408b..a691bc7 100644 --- a/config.json.template +++ b/config.json.template @@ -6,5 +6,6 @@ "starBoardCha":"The Starboard channel" "showLink": "Showing the link for inviting the bot, set 'false' to desactivate it", "sqlPass": "A password for the database, can be empty", - "PastebinDevKey": "A key to the api of Pastebin" + "PastebinDevKey": "A key to the api of Pastebin", + "OwnerId": "The id of the owner of the bot, can be an Array" } \ No newline at end of file From 6384e4218963b05c7664d3a5bffdfc3c12f2abbd Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Thu, 11 Aug 2022 16:11:27 +0200 Subject: [PATCH 154/236] Fix of ban.js --- commands/Moderation/ban.js | 81 ++++++++++++++------------ package-lock.json | 116 ++++++++++++++++++------------------- package.json | 2 +- 3 files changed, 102 insertions(+), 97 deletions(-) diff --git a/commands/Moderation/ban.js b/commands/Moderation/ban.js index d35d2ca..7d7ba9b 100644 --- a/commands/Moderation/ban.js +++ b/commands/Moderation/ban.js @@ -1,13 +1,13 @@ const { SlashCommandBuilder, EmbedBuilder, GuildMember } = require('discord.js'); -const { logCha } = require('../../config.json') +const { logCha } = require('../../config.json'); module.exports = { data: new SlashCommandBuilder() - .setName('ban') - .setDescription("ban a member") - .addUserOption(o => o + .setName("ban") + .setDescription("Ban a member") + .addUserOption(o =>o .setDescription("The member to ban") - .setName('member') + .setName("member") .setRequired(true)) .addStringOption(o => o .setName("reason") @@ -18,58 +18,63 @@ module.exports = { .setDescription("Is this command a joke command?") .setRequired(true)) .addNumberOption(o => o - .setName("time") - .setDescription("How long to ban this member?")), + .setName("time").setDescription("How long to ban this member?")), async execute(interaction) { - interaction.deferReply() + await interaction.deferReply(); const member = interaction.options.getMember("member", true); const guild = interaction.guild; const db = interaction.client.db.Cases; const reason = interaction.options.getString("reason", true); const days = interaction.options.getNumber("time") || 0; const joke = interaction.options.getBoolean("joke", true); - + if (!(member instanceof GuildMember)) { await guild.members.fetch(member); - }; - - if (member.id === interaction.user.id) { - return interaction.followUp("Why do you want to ban yourself?"); } - if (member.id === interaction.client.user.id) return interaction.followUp("❌ Why would you ban me? 😢"); + const user = member.user; if (member.bannable) { - const dmEmbed = new EmbedBuilder() - .setColor("#f04a47") - .setDescription(`You have been banned for: ${reason}`); - const replyEmbed = new EmbedBuilder() - .setColor("#43b582") - .setDescription(`**${member.user.tag} has been banned for:** ${reason}`); - const logEmbed = new EmbedBuilder() - .setColor("#f04a47") - .addFields( - { name: '**User**', value: `${member}`, inline: true }, - { name: '**Moderator**', value: `${interaction.member}`, inline: true }, - { name: '**Reason**', value: `${reason}`, inline: true } - ); + if (user.id === interaction.user.id) { + return interaction.followUp("Why do you want to ban yourself?"); + } + if (user.id === interaction.client.user.id) return interaction.followUp("❌ Why would you ban me? 😢"); + + const dmEmbed = new EmbedBuilder() + .setColor("#f04a47") + .setDescription(`You have been banned for: ${reason}`); + const replyEmbed = new EmbedBuilder() + .setColor("#43b582") + .setDescription( + `**${user.tag} has been banned for:** ${reason}` + ); + const logEmbed = new EmbedBuilder() + .setColor("#f04a47") + .addFields( + { name: "**User**", value: `${member}`, inline: true }, + { + name: "**Moderator**", + value: `${interaction.member}`, + inline: true, + }, + { name: "**Reason**", value: `${reason}`, inline: true } + ); + + await user.send({ embeds: [dmEmbed] }); - await member.user.send({ embeds: [dmEmbed] }); - if (!joke) { await member.ban({ days: days, reason: reason }); db.create({ Executor: interaction.user.id, - userID: member.user.id, + userID: user.id, reason: reason, - type: "ban" + type: "ban", }); - let logChannel = await guild.channels.fetch(logCha) - logChannel.send({ embeds: [logEmbed] }) + let logChannel = await guild.channels.fetch(logCha); + logChannel.send({ embeds: [logEmbed] }); } - + await interaction.followUp({ embeds: [replyEmbed] }); - } - else return interaction.followUp('Erf, i can\'t do that') - } -} \ No newline at end of file + } else return interaction.followUp("Erf, i can't do that"); + }, +}; diff --git a/package-lock.json b/package-lock.json index f9d376b..99e3f99 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@discordjs/rest": "0.4.1", "axios": "^0.27.2", "discord-api-types": "0.33.0", - "discord.js": "^14.0.3", + "discord.js": "^14.2.0", "sequelize": "6.19.1", "sqlite3": "^5.0.8" }, @@ -21,12 +21,12 @@ } }, "node_modules/@discordjs/builders": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.0.0.tgz", - "integrity": "sha512-8y91ZfpOHubiGJu5tVyGI9tQCEyHZDTeqUWVcJd0dq7B96xIf84S0L4fwmD1k9zTe1eqEFSk0gc7BpY+FKn7Ww==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.1.0.tgz", + "integrity": "sha512-EO8TSltiIc9Z1wE854wAFvv5AccqEtvjFmao9PPoxQhRaJ0hEb7FwWRTCA1jGg4ZWI3hcp4m+RET5ufZQz3rOg==", "dependencies": { "@sapphire/shapeshift": "^3.5.1", - "discord-api-types": "^0.36.2", + "discord-api-types": "^0.36.3", "fast-deep-equal": "^3.1.3", "ts-mixer": "^6.0.1", "tslib": "^2.4.0" @@ -601,20 +601,20 @@ "integrity": "sha512-RS1dMM6xuMhdHwQJ0T+XuCD7v1tKnyZ89Eq6q/DbOJWMbIh3ihgAzDhcF70QsFCtk9a5Gn9XU29S7eoEXuwQ5w==" }, "node_modules/discord.js": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.0.3.tgz", - "integrity": "sha512-wH/VQl4CqN8/+dcXEtYis1iurqxGlDpEe0O4CqH5FGqZGIjVpTdtK0STXXx7bVNX8MT/0GvLZLkmO/5gLDWZVg==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.2.0.tgz", + "integrity": "sha512-kIGhEeOB1d9k7whL9HCCuRuzK2GL7i/hTesYINOZ2szWm4TOsBVwRU+i9O/zDb2M+Gvff4SJ4EpAtCVV0okgVw==", "dependencies": { - "@discordjs/builders": "^1.0.0", - "@discordjs/collection": "^1.0.0", - "@discordjs/rest": "^1.0.0", + "@discordjs/builders": "^1.1.0", + "@discordjs/collection": "^1.0.1", + "@discordjs/rest": "^1.0.1", "@sapphire/snowflake": "^3.2.2", "@types/ws": "^8.5.3", - "discord-api-types": "^0.36.2", + "discord-api-types": "^0.36.3", "fast-deep-equal": "^3.1.3", "lodash.snakecase": "^4.1.1", "tslib": "^2.4.0", - "undici": "^5.8.0", + "undici": "^5.8.2", "ws": "^8.8.1" }, "engines": { @@ -622,25 +622,25 @@ } }, "node_modules/discord.js/node_modules/@discordjs/collection": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.0.0.tgz", - "integrity": "sha512-nAxDQYE5dNAzEGQ7HU20sujDsG5vLowUKCEqZkKUIlrXERZFTt/60zKUj/g4+AVCGeq+pXC5hivMaNtiC+PY5Q==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.0.1.tgz", + "integrity": "sha512-5V/wswzR3r2RVYXLxxg4TvrAnBhVCNgHTXhC+OUtLoriJ072rPMHo+Iw1SS1vrCckp8Es40XM411+WkNRPaXFw==", "engines": { "node": ">=16.9.0" } }, "node_modules/discord.js/node_modules/@discordjs/rest": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.0.0.tgz", - "integrity": "sha512-uDAvnE0P2a8axMdD4C51EGjvCRQ2HZk2Yxf6vHWZgIqG87D8DGKMPwmquIxrrB07MjV+rwci2ObU+mGhGP+bJg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.0.1.tgz", + "integrity": "sha512-w08CTKVzzYYvKxEjXKOs9AdS7KQ1J502TrPfF8eCZ2lF6AfKuMP/32YgDakiwIyYTDjEQS/v0nKLSFcncHRMtg==", "dependencies": { - "@discordjs/collection": "^1.0.0", + "@discordjs/collection": "^1.0.1", "@sapphire/async-queue": "^1.3.2", "@sapphire/snowflake": "^3.2.2", - "discord-api-types": "^0.36.2", - "file-type": "^17.1.2", + "discord-api-types": "^0.36.3", + "file-type": "^17.1.4", "tslib": "^2.4.0", - "undici": "^5.7.0" + "undici": "^5.8.0" }, "engines": { "node": ">=16.9.0" @@ -2176,15 +2176,15 @@ "dev": true }, "node_modules/token-types": { - "version": "5.0.0-alpha.2", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.0-alpha.2.tgz", - "integrity": "sha512-EsG9UxAW4M6VATrEEjhPFTKEUi1OiJqTUMIZOGBN49fGxYjZB36k0p7to3HZSmWRoHm1QfZgrg3e02fpqAt5fQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", + "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", "dependencies": { "@tokenizer/token": "^0.3.0", "ieee754": "^1.2.1" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=14.16" }, "funding": { "type": "github", @@ -2236,9 +2236,9 @@ } }, "node_modules/undici": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.8.0.tgz", - "integrity": "sha512-1F7Vtcez5w/LwH2G2tGnFIihuWUlc58YidwLiCv+jR2Z50x0tNXpRRw7eOIJ+GvqCqIkg9SB7NWAJ/T9TLfv8Q==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.8.2.tgz", + "integrity": "sha512-3KLq3pXMS0Y4IELV045fTxqz04Nk9Ms7yfBBHum3yxsTR4XNn+ZCaUbf/mWitgYDAhsplQ0B1G4S5D345lMO3A==", "engines": { "node": ">=12.18" } @@ -2384,12 +2384,12 @@ }, "dependencies": { "@discordjs/builders": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.0.0.tgz", - "integrity": "sha512-8y91ZfpOHubiGJu5tVyGI9tQCEyHZDTeqUWVcJd0dq7B96xIf84S0L4fwmD1k9zTe1eqEFSk0gc7BpY+FKn7Ww==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.1.0.tgz", + "integrity": "sha512-EO8TSltiIc9Z1wE854wAFvv5AccqEtvjFmao9PPoxQhRaJ0hEb7FwWRTCA1jGg4ZWI3hcp4m+RET5ufZQz3rOg==", "requires": { "@sapphire/shapeshift": "^3.5.1", - "discord-api-types": "^0.36.2", + "discord-api-types": "^0.36.3", "fast-deep-equal": "^3.1.3", "ts-mixer": "^6.0.1", "tslib": "^2.4.0" @@ -2851,40 +2851,40 @@ "integrity": "sha512-RS1dMM6xuMhdHwQJ0T+XuCD7v1tKnyZ89Eq6q/DbOJWMbIh3ihgAzDhcF70QsFCtk9a5Gn9XU29S7eoEXuwQ5w==" }, "discord.js": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.0.3.tgz", - "integrity": "sha512-wH/VQl4CqN8/+dcXEtYis1iurqxGlDpEe0O4CqH5FGqZGIjVpTdtK0STXXx7bVNX8MT/0GvLZLkmO/5gLDWZVg==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.2.0.tgz", + "integrity": "sha512-kIGhEeOB1d9k7whL9HCCuRuzK2GL7i/hTesYINOZ2szWm4TOsBVwRU+i9O/zDb2M+Gvff4SJ4EpAtCVV0okgVw==", "requires": { - "@discordjs/builders": "^1.0.0", - "@discordjs/collection": "^1.0.0", - "@discordjs/rest": "^1.0.0", + "@discordjs/builders": "^1.1.0", + "@discordjs/collection": "^1.0.1", + "@discordjs/rest": "^1.0.1", "@sapphire/snowflake": "^3.2.2", "@types/ws": "^8.5.3", - "discord-api-types": "^0.36.2", + "discord-api-types": "^0.36.3", "fast-deep-equal": "^3.1.3", "lodash.snakecase": "^4.1.1", "tslib": "^2.4.0", - "undici": "^5.8.0", + "undici": "^5.8.2", "ws": "^8.8.1" }, "dependencies": { "@discordjs/collection": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.0.0.tgz", - "integrity": "sha512-nAxDQYE5dNAzEGQ7HU20sujDsG5vLowUKCEqZkKUIlrXERZFTt/60zKUj/g4+AVCGeq+pXC5hivMaNtiC+PY5Q==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.0.1.tgz", + "integrity": "sha512-5V/wswzR3r2RVYXLxxg4TvrAnBhVCNgHTXhC+OUtLoriJ072rPMHo+Iw1SS1vrCckp8Es40XM411+WkNRPaXFw==" }, "@discordjs/rest": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.0.0.tgz", - "integrity": "sha512-uDAvnE0P2a8axMdD4C51EGjvCRQ2HZk2Yxf6vHWZgIqG87D8DGKMPwmquIxrrB07MjV+rwci2ObU+mGhGP+bJg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.0.1.tgz", + "integrity": "sha512-w08CTKVzzYYvKxEjXKOs9AdS7KQ1J502TrPfF8eCZ2lF6AfKuMP/32YgDakiwIyYTDjEQS/v0nKLSFcncHRMtg==", "requires": { - "@discordjs/collection": "^1.0.0", + "@discordjs/collection": "^1.0.1", "@sapphire/async-queue": "^1.3.2", "@sapphire/snowflake": "^3.2.2", - "discord-api-types": "^0.36.2", - "file-type": "^17.1.2", + "discord-api-types": "^0.36.3", + "file-type": "^17.1.4", "tslib": "^2.4.0", - "undici": "^5.7.0" + "undici": "^5.8.0" } }, "discord-api-types": { @@ -3989,9 +3989,9 @@ "dev": true }, "token-types": { - "version": "5.0.0-alpha.2", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.0-alpha.2.tgz", - "integrity": "sha512-EsG9UxAW4M6VATrEEjhPFTKEUi1OiJqTUMIZOGBN49fGxYjZB36k0p7to3HZSmWRoHm1QfZgrg3e02fpqAt5fQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", + "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", "requires": { "@tokenizer/token": "^0.3.0", "ieee754": "^1.2.1" @@ -4033,9 +4033,9 @@ "dev": true }, "undici": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.8.0.tgz", - "integrity": "sha512-1F7Vtcez5w/LwH2G2tGnFIihuWUlc58YidwLiCv+jR2Z50x0tNXpRRw7eOIJ+GvqCqIkg9SB7NWAJ/T9TLfv8Q==" + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.8.2.tgz", + "integrity": "sha512-3KLq3pXMS0Y4IELV045fTxqz04Nk9Ms7yfBBHum3yxsTR4XNn+ZCaUbf/mWitgYDAhsplQ0B1G4S5D345lMO3A==" }, "unique-filename": { "version": "1.1.1", diff --git a/package.json b/package.json index 74c49bb..1c12c0b 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "@discordjs/rest": "0.4.1", "axios": "^0.27.2", "discord-api-types": "0.33.0", - "discord.js": "^14.0.3", + "discord.js": "^14.2.0", "sequelize": "6.19.1", "sqlite3": "^5.0.8" }, From 766795e4da15ae207ca3e961bef239784397dfdd Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 20 Aug 2022 11:27:24 +0200 Subject: [PATCH 155/236] I was like Robtop: I added feature, but never pushed... --- .gitignore | 3 +- Util/Dos.js | 84 +++++--- Util/GetJSFile.js | 94 ++++++--- Util/Moderation.js | 142 ++++++++++++++ commands/Misc/get.js | 136 ++++++------- commands/Misc/info.js | 4 +- commands/Misc/test.js | 70 +++++++ commands/Moderation/ban.js | 60 +----- commands/Moderation/kick.js | 29 +-- commands/Moderation/list.js | 190 ++++++++++--------- commands/Moderation/warn.js | 30 +-- config.json.template | 16 +- context menu/User/Misc/User info.js | 31 +++ context menu/User/Moderation/Ban.js | 22 +++ context menu/User/Moderation/Kick.js | 21 ++ context menu/User/Moderation/Warn.js | 19 ++ deploy-commands.js | 44 +++-- events/{client => Client}/ready.js | 1 + events/Interaction/InteractionCreate.js | 65 +++++-- events/{message => Message}/MessageCreate.js | 11 +- events/{message => Message}/StarBoard.js | 0 events/{message => Message}/StarBoardPt2.js | 0 package.json | 3 - 23 files changed, 697 insertions(+), 378 deletions(-) create mode 100644 Util/Moderation.js create mode 100644 commands/Misc/test.js create mode 100644 context menu/User/Misc/User info.js create mode 100644 context menu/User/Moderation/Ban.js create mode 100644 context menu/User/Moderation/Kick.js create mode 100644 context menu/User/Moderation/Warn.js rename events/{client => Client}/ready.js (95%) rename events/{message => Message}/MessageCreate.js (57%) rename events/{message => Message}/StarBoard.js (100%) rename events/{message => Message}/StarBoardPt2.js (100%) diff --git a/.gitignore b/.gitignore index e0f8e8e..900c846 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ config.json node_modules/ jsconfig.json -database.sqlite -Tmp/ \ No newline at end of file +database.sqlite \ No newline at end of file diff --git a/Util/Dos.js b/Util/Dos.js index 99fcf0a..243de32 100644 --- a/Util/Dos.js +++ b/Util/Dos.js @@ -1,6 +1,5 @@ -const fs = require('node:fs') +const fs = require('node:fs'); const readline = require('readline'); -const { basename } = require('path'); async function ProcessDOS(client) { const cmd = readline.createInterface(process.stdin, process.stdout); @@ -14,6 +13,10 @@ async function ProcessDOS(client) { let drvS = {} let drvC = {} let inRepl = false + let object = {} + let pm2 = false + if (process.env.PM2_USAGE) pm2 = true + console.log("The object 'object' is used for setting a variable inside for use later with the eval command") drvS.rootdirs = client.guilds.cache drvS.subdirs = null drvC.rootdirs = fs.readdirSync(`${__dirname}/../commands`); @@ -26,8 +29,13 @@ async function ProcessDOS(client) { if (inRepl) return switch (line.trim().split(" ")[0]) { case 'exit': { - cmd.close() - process.exit(0) + if (!pm2) { + cmd.close() + await client.destroy() + process.exit(0) + } + else if (pm2) console.log("You are using pm2, to exit the command line, use Ctrl+C.\nIf you want to reload command file, use reload in the C: drive") + break } case 'eval': { try { @@ -38,19 +46,21 @@ async function ProcessDOS(client) { break } case 'help': case 'man': { - console.log("Process DOS help") - console.log("Commands:\n") - console.log("eval Evaluates code") - console.log("status Changes the status of the bot") - console.log("send Sends a message on the specified channel") - console.log("dir Lists the current directory") - console.log("tail [Amount-of-messages] Lists message in the channel given") - console.log("type Show the contents of a file") - console.log("cd [directory] Change directory") - console.log("cls Clears the screen") - console.log("echo Displays text on the screen") - console.log("help Displays this help") - console.log("exit Terminates the bot and console") + const log = console.log + log("Process DOS help") + log("Commands:\n") + log("eval Evaluates code") + log("status Changes the status of the bot") + log("send Sends a message on the specified channel") + log("dir Lists the current directory") + log("tail [Amount-of-messages] Lists message in the channel given") + log("type Show the contents of a file") + log("cd [directory] Change directory") + log("cls Clears the screen") + log("echo Displays text on the screen") + log("help Displays this help") + log("exit Terminates the bot and console") + log("reload Reload Command or server, depending on the drive in which executed") break } case 'status': { @@ -74,8 +84,9 @@ async function ProcessDOS(client) { switch (drive) { case 'S': { if (depth == 0) { - drvS.rootdirs.forEach(i => { - console.log(i.name.padEnd(20) + " ") + drvS.rootdirs.forEach(async i => { + if (i.name == undefined) await i.fetch() + console.log(i.name.padEnd(20) + ` (${i.id})`.padEnd(23) + " ") }) } else { drvS.subdirs = client.guilds.cache.get(`${curServer}`) @@ -108,10 +119,18 @@ async function ProcessDOS(client) { } switch (drive) { case 'S': { - if (drvS.rootdirs.find(i => i.name === newDir)) { - dir.push(newDir) + if (drvS.rootdirs.find(i => i.name === newDir) || drvS.rootdirs.find(i => i.id === newDir)) { depth++ - curServer = client.guilds.cache.find(guild => guild.name === newDir).id + if (!isNaN(+newDir)) { + let server = client.guilds.cache.find(g => g.id === newDir) + curServer = server.id + dir.push(server.name) + } + else if (isNaN(+newDir)) { + let server = client.guilds.cache.find(g => g.name === newDir) + curServer = server.id + dir.push(server.name) + } } else { console.log("Invalid directory") } @@ -166,7 +185,6 @@ async function ProcessDOS(client) { fs.readFile(`${__dirname}/../commands/${curC}/${file.toLowerCase()}`, 'utf8', (err, data) => { if (err) { console.log(`File not found - ${file.toLowerCase()}`); return } console.log(data) - }) } console.log() @@ -186,9 +204,27 @@ async function ProcessDOS(client) { dir = ["\\"] break } + case "reload": { + switch (drive) { + case "S": { + console.log("Reloading servers, Please wait...") + await client.guilds.fetch() + drvS.rootdirs = client.guilds.cache + console.log("Reload finished") + break + } + case "C": { + const { ReloadJsFile } = require('./GetJSFile.js'); + console.log("Reloading commands, Please wait..."); + await ReloadJsFile(client); + console.log("Reload finished."); + break + } + }; + } case '': break default: console.log("Bad command or file name") - } + }; cmd.setPrompt(`${drive}:${dir.join("")}>`) cmd.prompt(); }) diff --git a/Util/GetJSFile.js b/Util/GetJSFile.js index f87a0ca..50a07fe 100644 --- a/Util/GetJSFile.js +++ b/Util/GetJSFile.js @@ -1,20 +1,39 @@ const fs = require('node:fs') -const { Collection } = require('discord.js') +const { Collection } = require('discord.js'); -async function GetCommandFile(Where) { - const Folder = fs.readdirSync(`${__dirname}/../commands`) +async function GetContextMenuFiles(Where, printAndOther = true) { + for (const type of fs.readdirSync(`${__dirname}/../context menu`)) { + let special = "┌" + + for (const folder of fs.readdirSync(`${__dirname}/../context menu/${type}`)) { + if (printAndOther) console.log(` ${special} Next Context Menu are loading from "${folder}"`); + special = "├" + + for (const file of fs.readdirSync(`${__dirname}/../context menu/${type}/${folder}`).filter(file => file.endsWith(".js"))) { + try { + const contextMenu = require(`${__dirname}/../context menu/${type}/${folder}/${file}`); + Where.set(contextMenu.data.name, contextMenu); + if (printAndOther) console.log(` │ Context Menu "${contextMenu.data.name}" has been loaded`); + } catch (err) { + console.error(err); + }; + }; + }; + }; +}; + +async function GetCommandFiles(Where, printAndOther = true) { let special = "┌" - for (const folder of Folder) { - const commandFiles = fs.readdirSync(`${__dirname}/../commands/${folder}`).filter(file => file.endsWith(".js")); - console.log(` ${special} Next commands are loading from "${folder}"`); + for (const folder of fs.readdirSync(`${__dirname}/../commands`)) { + if (printAndOther) console.log(` ${special} Next commands are loading from "${folder}"`); special = "├" - for (const file of commandFiles) { + for (const file of fs.readdirSync(`${__dirname}/../commands/${folder}`).filter(file => file.endsWith(".js"))) { try { const command = require(`${__dirname}/../commands/${folder}/${file}`); Where.set(command.data.name, command); - console.log(` │ Command "${command.data.name}" has been loaded`); + if (printAndOther) console.log(` │ Command "${command.data.name}" has been loaded`); } catch (err) { console.error(err); }; @@ -22,20 +41,18 @@ async function GetCommandFile(Where) { }; }; -async function GetMessageFile(Where) { - const Folder = fs.readdirSync(`${__dirname}/../messages`) +async function GetMessageFiles(Where, printAndOther = true) { let special = "┌" - for (const folder of Folder) { - const messagesFiles = fs.readdirSync(`${__dirname}/../messages/${folder}`).filter(file => file.endsWith(".js")); - console.log(` ${special} Next messages are loading from "${folder}"`); + for (const folder of fs.readdirSync(`${__dirname}/../messages`)) { + if (printAndOther) console.log(` ${special} Next messages are loading from "${folder}"`); special = "├" - for (const file of messagesFiles) { + for (const file of fs.readdirSync(`${__dirname}/../messages/${folder}`).filter(file => file.endsWith(".js"))) { try { const message = require(`${__dirname}/../messages/${folder}/${file}`); Where.set(message.message, message); - console.log(` │ Message "${message.message}" has been loaded`); + if (printAndOther) console.log(` │ Message "${message.message}" has been loaded`); } catch (err) { console.error(err); }; @@ -43,16 +60,14 @@ async function GetMessageFile(Where) { }; }; -async function GetEventFile(client) { - const Folder = fs.readdirSync(`${__dirname}/../events`); +async function GetEventFiles(client, printAndOther = true) { let special = "┌" - for (const folder of Folder) { - const eventFiles = fs.readdirSync(`${__dirname}/../events/${folder}`).filter(file => file.endsWith(".js")); - console.log(` ${special} Next Events are loading from "${folder}"`); + for (const folder of fs.readdirSync(`${__dirname}/../events`)) { + if (printAndOther) console.log(` ${special} Next Events are loading from "${folder}"`); special = "├" - for (const file of eventFiles) { + for (const file of fs.readdirSync(`${__dirname}/../events/${folder}`).filter(file => file.endsWith(".js"))) { try { const event = require(`${__dirname}/../events/${folder}/${file}`); if (event.on) { @@ -61,7 +76,7 @@ async function GetEventFile(client) { else if (!event.on) { client.once(event.name, event.execute); }; - console.log(` │ Event ${event.name} has been loaded`) + if (printAndOther) console.log(` │ Event ${event.name} has been loaded`) } catch (err) { console.error(err); }; @@ -72,18 +87,35 @@ async function GetEventFile(client) { async function GetJsFile(client) { // initiation of all slash commands client.commands = new Collection(); - console.log(' Initialization of / commands') - GetCommandFile(client.commands); + console.log(' Initialisation of / commands') + GetCommandFiles(client.commands); console.log(" └ All Commands have been loaded"); - console.log('Initialization of messages') + console.log('Initialisation of messages') + client.messages = new Collection(); + GetMessageFiles(client.messages); + console.log(" └ All Messages has been loaded"); + + console.log("Initialisation of Context Menu"); + client.contextMenu = new Collection(); + GetContextMenuFiles(client.contextMenu); + console.log(" └ All Context Menu has been loaded") + + console.log('Initialisation of Events') + GetEventFiles(client) + console.log(' └ All Events has been loaded') +}; + +async function ReloadJsFile(client) { + client.commands = new Collection(); client.messages = new Collection(); - GetMessageFile(client.messages); - console.log(" All Messages has been loaded"); + client.contextMenu = new Collection(); + + Object.keys(require.cache).forEach(key => delete require.cache[key]) - console.log('Initialization of events') - GetEventFile(client) - console.log(' All Events has been loaded') + await GetCommandFiles(client.commands, false); + await GetMessageFiles(client.messages, false); + await GetContextMenuFiles(client.contextMenu, false); } -module.exports = { GetJsFile } \ No newline at end of file +module.exports = { GetJsFile, ReloadJsFile }; \ No newline at end of file diff --git a/Util/Moderation.js b/Util/Moderation.js new file mode 100644 index 0000000..c975c2e --- /dev/null +++ b/Util/Moderation.js @@ -0,0 +1,142 @@ +const { User, GuildMember, EmbedBuilder } = require('discord.js') +const { logCha } = require('../config.json') + +async function ban(interaction, member, reason = "No reason provided", joke = false, db) { + const guild = interaction.guild + + if (!(member instanceof GuildMember)) { + await guild.members.fetch(member) + } + + const dmEmbed = new EmbedBuilder() + .setColor("#f04a47") + .setDescription(`You have been banned from ${guild.name}` + (reason === "No reason provided" ? "" : ` for ${reason}`)); + const replyEmbed = new EmbedBuilder() + .setColor("#43b582") + .setDescription(`**${member.user.tag} has been banned for:** ${reason}`); + const logEmbed = new EmbedBuilder() + .setDescription("Ban") + .setColor("#f04a47") + .addFields( + { name: "**User**", value: member.user.tag, inline: true }, + { name: "**Moderator**", value: interaction.user.tag, inline: true }, + { name: "**Reason**", value: reason, inline: true } + ); + + if (member.bannable) { + if (member.user.id === interaction.user.id) return interaction.followUp("Why do you want to ban yourself?") + if (member.user.id === interaction.client.user.id) return interaction.followUp("❌ Why would you ban me? 😢") + + await member.user.send({ embeds: [dmEmbed] }).catch(e => console.error(`Couldn't message ${member.user.tag} (ban)`)) + + if (!joke) { + try { + guild.members.ban(member.user, { reason: reason }); + } catch (err) { + console.error(err) + return interaction.followUp("Couldn't ban that user") + } + + db.create({ + Executor: interaction.user.id, + userID: member.user.id, + reason: reason, + type: "ban", + }); + + let logChannel = await interaction.guild.channels.fetch(logCha) + await logChannel.send({ embeds: [logEmbed] }).catch(console.error) + } + interaction.followUp({ embeds: [replyEmbed] }).catch(console.error) + } else if (!member.bannable) interaction.followUp("Erf, I can't do that"); +} + +async function kick(interaction, member, reason = "No reason provided", joke = false, db) { + const guild = interaction.guild + + if (!(member instanceof GuildMember)) { + guild.members.fetch(member) + } + + const dmEmbed = new EmbedBuilder() + .setColor("#f04a47") + .setDescription(`You have been kicked from ${guild.name}` + (reason === "No reason provided" ? "" : ` for ${reason}`)); + const replyEmbed = new EmbedBuilder() + .setColor("#43b582") + .setDescription(`**${member.user.tag} has been kicked` + (reason === "No reason provided"? "**" : `for:** ${reason}`)); + const logEmbed = new EmbedBuilder() + .setDescription("Kick") + .setColor("#f04a47") + .addFields( + { name: "**User**", value: member.user.tag, inline: true }, + { name: "**Moderator**", value: interaction.user.tag, inline: true }, + { name: "**Reason**", value: reason, inline: true } + ); + + if (member.kickable) { + if (member.user.id === interaction.user.id) return interaction.followUp("Why do you want to kick yourself?") + if (member.user.id === interaction.client.user.id) return interaction.followUp("❌ Why would you kick me? 😢") + + await member.user.send({ embeds: [dmEmbed] }).catch(e => {console.error(`Couldn't message ${member.user.tag} (kick)`)}) + + if (!joke) { + try { + guild.members.kick(member.user, { reason: reason }); + } catch (err) { + console.error(err) + return interaction.followUp("Couldn't kick that user.") + } + + db.create({ + Executor: interaction.user.id, + userID: member.user.id, + reason: reason, + type: "kick", + }); + + let logChannel = await interaction.guild.channels.fetch(logCha) + await logChannel.send({embeds: [logEmbed]}) + } + interaction.followUp({ embeds: [replyEmbed] }) + } else if (!member.bannable) interaction.followUp("Erf, I can't do that"); +} + +async function warn(interaction, user, reason, joke = false, db) { + if (!(user instanceof User)) { + interaction.client.users.fetch(user) + } + + const dmEmbed = new EmbedBuilder() + .setColor("#f04a47") + .setDescription(`You have been warned from ${interaction.guild.name}` + reason === "No reason provided" ? "" : ` for ${reason}`); + const replyEmbed = new EmbedBuilder() + .setColor("#43b582") + .setDescription(`**${user.tag} has been warned for:** ${reason}`); + const logEmbed = new EmbedBuilder() + .setDescription("Warn") + .setColor("#f04a47") + .addFields( + { name: "**User**", value: user.tag, inline: true }, + { name: "**Moderator**", value: interaction.user.tag, inline: true }, + { name: "**Reason**", value: reason, inline: true } + ); + + if (user.id === interaction.client.user.id) return interaction.followUp("I just deleted my own warn <:troll:990669002999201852>") + + if (!joke) { + db.create({ + type: "warn", + reason: reason, + Executor: interaction.user.tag, + userID: user.id + }); + + let logChannel = await interaction.guild.channels.fetch(logCha) + await logChannel.send({ embeds: [logEmbed] }) + }; + + await user.send({ embeds: [dmEmbed] }).catch(e => {console.error(`Couldn't message ${user.tag} (warn)`)}) + await interaction.followUp({ embeds: [replyEmbed] }) +} + +module.exports = { ban, kick, warn } \ No newline at end of file diff --git a/commands/Misc/get.js b/commands/Misc/get.js index a3aceea..314a8e7 100644 --- a/commands/Misc/get.js +++ b/commands/Misc/get.js @@ -1,73 +1,59 @@ -const { SlashCommandBuilder, AttachmentBuilder } = require('discord.js') +const { SlashCommandBuilder } = require('discord.js') const { PastebinDevKey } = require('../../config.json') const axios = require('axios').default -async function sendAsPastebin(data, interaction) { - axios({ - method: 'post', - url: 'https://pastebin.com/api/api_post.php', - data: `api_dev_key=${PastebinDevKey}&api_option=paste&api_paste_private=1&api_paste_expire_date=10M&api_paste_code=${data}` - }) - .then(r => { - interaction.followUp({content: r.data}) - }) - .catch(e => { - if (e.response) { - e.response - interaction.followUp({content: `ERROR: \`${e.response.status}, ${e.response.data}\``}) - } - }); -} - module.exports = { data: new SlashCommandBuilder() .setName('get') .setDescription("Get something") - .addSubcommand(sc => sc - .setName('rname') - .setDescription('Getting all role name')) - .addSubcommand(sc => sc - .setName('ricon') - .setDescription("Getting all icons of all roles") - .addStringOption(o => o - .setName("format") - .setDescription("In what format do you want the icons?") - .addChoices( - { name: 'webp', value: 'webp' }, - { name: 'png', value: 'png' }, - { name: 'jpg', value: 'jpg' }, - { name: 'jpeg', value: 'jpeg' } - ) - .setRequired(true)) - .addNumberOption(o => o - .setName('size') - .setDescription('At what size do you want the icon to be? (pixel)') - .addChoices( - { name: '16', value: 16 }, - { name: '32', value: 32 }, - { name: '56', value: 56 }, - { name: '64', value: 64 }, - { name: '96', value: 96 }, - { name: '128', value: 128 }, - { name: '256', value: 256 }, - { name: '300', value: 300 }, - { name: '512', value: 512 }, - { name: '600', value: 600 }, - { name: '1024', value: 1024 }, - { name: '2048', value: 2048 }, - { name: '4096', value: 4096 } - ) - .setRequired(true)) - .addBooleanOption(o => o + .addSubcommandGroup(scg => scg + .setName("role") + .setDescription("Getting info about roles") + .addSubcommand(sc => sc .setName('name') - .setDescription('If you also want to get the name of the role (default: true)'))) - .addSubcommand(sc => sc - .setName('rcolor') - .setDescription("Getting all Colors of all roles") - .addBooleanOption(o => o - .setName("hex") - .setDescription("Do you want to get a hex value?") - .setRequired(true))) + .setDescription('Getting all role name')) + .addSubcommand(sc => sc + .setName('icon') + .setDescription("Getting all icons of all roles") + .addStringOption(o => o + .setName("format") + .setDescription("In what format do you want the icons?") + .addChoices( + { name: 'webp', value: 'webp' }, + { name: 'png', value: 'png' }, + { name: 'jpg', value: 'jpg' }, + { name: 'jpeg', value: 'jpeg' } + ) + .setRequired(true)) + .addNumberOption(o => o + .setName('size') + .setDescription('At what size do you want the icon to be? (pixel)') + .addChoices( + { name: '16', value: 16 }, + { name: '32', value: 32 }, + { name: '56', value: 56 }, + { name: '64', value: 64 }, + { name: '96', value: 96 }, + { name: '128', value: 128 }, + { name: '256', value: 256 }, + { name: '300', value: 300 }, + { name: '512', value: 512 }, + { name: '600', value: 600 }, + { name: '1024', value: 1024 }, + { name: '2048', value: 2048 }, + { name: '4096', value: 4096 } + ) + .setRequired(true)) + .addBooleanOption(o => o + .setName('name') + .setDescription('If you also want to get the name of the role (default: true)'))) + .addSubcommand(sc => sc + .setName('color') + .setDescription("Getting all Colors of all roles") + .addBooleanOption(o => o + .setName("hex") + .setDescription("Do you want to get a hex value?") + .setRequired(true)))) .addSubcommand(sc => sc .setName("emojis") .setDescription("Getting all emojis of a server") @@ -85,7 +71,7 @@ module.exports = { const sc = interaction.options.getSubcommand(); switch (sc) { - case "rname": { + case /*role*/ "name": { const guildRoles = await interaction.guild.roles.fetch(); let ArrName = []; @@ -99,7 +85,7 @@ module.exports = { else if (!ArrName.length) interaction.followUp("Why does not even a single role exist?"); break } - case "ricon": { + case /*role*/ "icon": { const guildRoles = await interaction.guild.roles.fetch(); const format = interaction.options.getString("format"); const size = interaction.options.getNumber("size"); @@ -113,7 +99,7 @@ module.exports = { else if (!name) ArrayURL.push(`${e.iconURL({ format: format, size: size })}`); }; }); - + if (ArrayURL.length) { if (name) sendAsPastebin(ArrayURL.join("\n"), interaction) else if (!name) sendAsPastebin(ArrayURL.join(""), interaction) @@ -121,7 +107,7 @@ module.exports = { else if (!ArrayURL.length) interaction.followUp("No role found with an icon"); break } - case 'rcolor': { + case /*role*/ 'color': { const guildRoles = await interaction.guild.roles.fetch(); const hex = interaction.options.getBoolean("hex"); let ArrColor = []; @@ -153,7 +139,7 @@ module.exports = { if (name) sendAsPastebin(emojiArr.join("\n"), interaction); else if (!name) sendAsPastebin(emojiArr.join(' '), interaction); } - else if (!emojiArr.length) interaction.followUp({content: "No emoji found"}) + else if (!emojiArr.length) interaction.followUp({ content: "No emoji found" }) break } case "stickers": { @@ -178,4 +164,20 @@ module.exports = { }; } } +} + +async function sendAsPastebin(data, interaction) { + axios({ + method: 'post', + url: 'https://pastebin.com/api/api_post.php', + data: `api_dev_key=${PastebinDevKey}&api_option=paste&api_paste_private=1&api_paste_code=${data}&api_paste_expire_date=10M` + }) + .then(r => { + interaction.followUp({ content: r.data }) + }) + .catch(e => { + if (e.response) { + interaction.followUp({ content: `ERROR: \`${e.response.status}, ${e.response.data}\`` }) + } + }); } \ No newline at end of file diff --git a/commands/Misc/info.js b/commands/Misc/info.js index 82b1b31..7ac803b 100644 --- a/commands/Misc/info.js +++ b/commands/Misc/info.js @@ -65,8 +65,8 @@ module.exports = { let date = new Date(guild.createdAt); - let icon = guild.iconURL; - if (icon) {replyEmbed.setThumbnail(guild.iconURL({ format: "png", size: 4096 }))}; + let icon = guild.iconURL({format: "png", size: 4096}); + if (icon) {replyEmbed.setThumbnail(icon)}; replyEmbed.setAuthor({name: `${guild.name}`, iconURL: icon}); replyEmbed.setColor(`#${Math.floor(Math.random()*16777215).toString(16)}`); replyEmbed.addFields( diff --git a/commands/Misc/test.js b/commands/Misc/test.js new file mode 100644 index 0000000..127e6cc --- /dev/null +++ b/commands/Misc/test.js @@ -0,0 +1,70 @@ +const { SlashCommandBuilder, SelectMenuBuilder, ActionRowBuilder, EmbedBuilder } = require("discord.js"); + +module.exports = { + data: new SlashCommandBuilder() + .setName("test") + .setDescription("Test command to test things") + .addSubcommandGroup(scg => scg + .setName("message") + .setDescription("Send a message") + .addSubcommand(sc => sc + .setName("simple") + .setDescription("Send a simple message") + .addStringOption(o => o + .setName("content") + .setDescription("the content of the message") + ) + ) + ), + async execute(interaction) { + interaction.reply({ content: "Okay", ephemeral: true }) + await interaction.channel.send({ + embeds: [new EmbedBuilder().setTitle("Roles!").setDescription("Chose your roles here!").setColor("#e30b0b")], + components: [ + new ActionRowBuilder() + .addComponents(new SelectMenuBuilder() + .setCustomId("role-selector") + .setPlaceholder("Nothing selected") + .setMinValues(1) + .setMaxValues(10) + .addOptions( + { label: "Chaotic", description: "Access to chaos channel", value: "974018133054591035", emoji: "🔥" }, + { label: "Poller", description: "Get pinged for polls", value: "974018133071388715", emoji: "🗳️" }, + { label: "New Beta", description: "Get pinged for new betas", value: "974018133071388717", emoji: "🆕" }, + { label: "New Update", description: "Get pinged for new updates", value: "974018133071388716", emoji: "🆙" }, + { label: "Announcements", description: "Get pinged for announcements", value: "974018133071388714", emoji: "📣" }, + { label: "Wiki Announcements", description: "Get pinged for wiki announcements", value: "974018133071388713", emoji: "📘" }, + { label: "Serious View", description: "Access to serious channel", value: "974018133071388718", emoji: "😐" }, + { label: "Bot", description: "No role in that server to use it", value: "null", emoji: "🤖" }, + { label: "Archive View", description: "Access #the-great-archive", value: "974018133071388719", emoji: "🏛️" }, + { label: "ProgressCLI95", description: "Get pinged for updates on ProgressCLI95", value: "974018133037809676" } + ) + ) + ] + }); + interaction.channel.send({ + embeds: [new EmbedBuilder().setTitle("Colors!").setDescription("Get colors here!").setColor("#13b42d")], + components: [ + new ActionRowBuilder() + .addComponents(new SelectMenuBuilder() + .setCustomId("role-selector") + .setPlaceholder("Nothing selected") + .addOptions( + { label: "lean", value: "974018133184626745", emoji: "🟣" }, + { label: "A random shade of Magenta fraxxtal found on color.adobe.com", value: "974018133184626742", emoji: "🟪" }, + { label: "Dangerous Red", value: "974018133184626740", emoji: "🔴" }, + { label: "Pantone 448 C", value: "974018133167845413", emoji: "🟤" }, + { label: "Soft Furret", value: "974018133167845410", emoji: "🟫" }, + { label: "Corrupted Orange", value: "974018133167845406", emoji: "🟠" }, + { label: "Arch User!", value: "974018133209796618", emoji: "🟡" }, + { label: "Tea Green", value: "974018133151084602", emoji: "🟢" }, + { label: "Winning Green", value: "974018133151084600", emoji: "🟩" }, + { label: "Wallpaper", value: "974018133071388720", emoji: "🔵" }, + { label: "2000", value: "974018133151084594", emoji: "🟦" }, + { label: "Bluuuu", value: "974018133134282781", emoji: "🔷" }, + ) + ) + ] + }); + } +} \ No newline at end of file diff --git a/commands/Moderation/ban.js b/commands/Moderation/ban.js index 7d7ba9b..69f7f76 100644 --- a/commands/Moderation/ban.js +++ b/commands/Moderation/ban.js @@ -1,5 +1,5 @@ -const { SlashCommandBuilder, EmbedBuilder, GuildMember } = require('discord.js'); -const { logCha } = require('../../config.json'); +const { SlashCommandBuilder } = require('discord.js'); +const { ban } = require("../../Util/Moderation.js") module.exports = { data: new SlashCommandBuilder() @@ -21,60 +21,6 @@ module.exports = { .setName("time").setDescription("How long to ban this member?")), async execute(interaction) { await interaction.deferReply(); - const member = interaction.options.getMember("member", true); - const guild = interaction.guild; - const db = interaction.client.db.Cases; - const reason = interaction.options.getString("reason", true); - const days = interaction.options.getNumber("time") || 0; - const joke = interaction.options.getBoolean("joke", true); - - if (!(member instanceof GuildMember)) { - await guild.members.fetch(member); - } - - const user = member.user; - - if (member.bannable) { - if (user.id === interaction.user.id) { - return interaction.followUp("Why do you want to ban yourself?"); - } - if (user.id === interaction.client.user.id) return interaction.followUp("❌ Why would you ban me? 😢"); - - const dmEmbed = new EmbedBuilder() - .setColor("#f04a47") - .setDescription(`You have been banned for: ${reason}`); - const replyEmbed = new EmbedBuilder() - .setColor("#43b582") - .setDescription( - `**${user.tag} has been banned for:** ${reason}` - ); - const logEmbed = new EmbedBuilder() - .setColor("#f04a47") - .addFields( - { name: "**User**", value: `${member}`, inline: true }, - { - name: "**Moderator**", - value: `${interaction.member}`, - inline: true, - }, - { name: "**Reason**", value: `${reason}`, inline: true } - ); - - await user.send({ embeds: [dmEmbed] }); - - if (!joke) { - await member.ban({ days: days, reason: reason }); - db.create({ - Executor: interaction.user.id, - userID: user.id, - reason: reason, - type: "ban", - }); - let logChannel = await guild.channels.fetch(logCha); - logChannel.send({ embeds: [logEmbed] }); - } - - await interaction.followUp({ embeds: [replyEmbed] }); - } else return interaction.followUp("Erf, i can't do that"); + await ban(interaction, interaction.options.getMember("member", true), interaction.options.getString("reason", true), interaction.options.getBoolean("joke", true), interaction.client.db.Cases).catch(console.error) }, }; diff --git a/commands/Moderation/kick.js b/commands/Moderation/kick.js index 66dbdf3..bc51faa 100644 --- a/commands/Moderation/kick.js +++ b/commands/Moderation/kick.js @@ -1,4 +1,5 @@ -const { SlashCommandBuilder, EmbedBuilder } = require('discord.js'); +const { SlashCommandBuilder } = require('discord.js'); +const { kick } = require("../../Util/Moderation.js") module.exports = { data: new SlashCommandBuilder() @@ -17,29 +18,7 @@ module.exports = { .setDescription("Why should this user be kicked?") .setRequired(true)), async execute(interaction) { - let member = interaction.options.getMember("user"); - const reason = interaction.options.getString("reason"); - const replyEmbed = new EmbedBuilder().setColor("#00FF00"); - - if (member.id === interaction.client.user.id) return interaction.reply("❌ Why would you kick me? 😢"); - - if (!joke) { - if (member.kickable) { - member.kick({ reason: reason }) - .then(() => { - if (reason !== "No reason provided") { - replyEmbed.setDescription(`${user.tag} has been kicked with the reason ${reason}`); - } else if (reason === "No reason provided") { - replyEmbed.setDescription(`${user.tag} has been kicked`); - }; - }) - .catch(error => { - console.error(error); - replyEmbed.setDescription('There was an error while executing this command!'); - interaction.reply({ embeds: [replyEmbed], ephemeral: true }); - }); - } - } - interaction.reply({ embeds: [replyEmbed] }); + await interaction.deferReply() + kick(interaction, interaction.options.getMember("user", true), interaction.options.getString("reason"), interaction.options.getBoolean("joke", true), interaction.client.db.Cases) } } \ No newline at end of file diff --git a/commands/Moderation/list.js b/commands/Moderation/list.js index aa49266..0d17563 100644 --- a/commands/Moderation/list.js +++ b/commands/Moderation/list.js @@ -23,111 +23,113 @@ module.exports = { .setName("user") .setDescription("The user to list kicks (Id)"))), async execute(interaction) { - const subcommand = interaction.options.getSubcommand(); - if (subcommand === "warns") { - await interaction.deferReply({ ephemeral: true }); - let IdUser = interaction.options.getString("user"); - let UserExecutor = interaction.user; - - if (IdUser) { - let permV = await interaction.guild.members.fetch(UserExecutor); - if (!permV.permissions.FLAGS.has(Permissions.FLAGS.KICK_MEMBERS)) { - return interaction.reply("I'm sorry Dave, but i'm afraied i can't do that\nYou do not have the permission to do that"); + const sc = interaction.options.getSubcommand(); + switch (sc) { + case "warns": { + await interaction.deferReply({ ephemeral: true }); + let IdUser = interaction.options.getString("user"); + let UserExecutor = interaction.user; + + if (IdUser) { + let permV = await interaction.guild.members.fetch(UserExecutor); + if (!permV.permissions.FLAGS.has(Permissions.FLAGS.KICK_MEMBERS)) { + return interaction.reply("I'm sorry Dave, but i'm afraid i can't do that\nYou do not have the permission to do that"); + }; + } + else if (!IdUser) { + IdUser = interaction.user.id; }; - } - else if (!IdUser) { - IdUser = interaction.user.id; - }; - db = interaction.client.db.Cases - warnDB = await db.findAll({ - where: { - userID: IdUser, - type: "warn" - }, - attributes: ['id', 'type', 'userID', 'reason', 'Executor'] - }); - let list = ""; - for (let i = 0; i < warnDB.length; i++) { - list += `${warnDB[i].reason} - *insert date here*\n`; - } - console.log(list); - if (list !== "") { - interaction.followUp({ content: list }); - } - else if (list === "") { - interaction.followUp({ content: "There is no warn" }); - }; - } - else if (subcommand === "bans") { - await interaction.deferReply({ ephemeral: true }); - let IdUser = interaction.options.getString("user"); - - if (IdUser) { - let permV = await interaction.guild.members.fetch(UserExecutor); - if (!permV.permissions.FLAGS.has(Permissions.FLAGS.BAN_MEMBERS)) { - return interaction.reply("I'm sorry Dave, but i'm afraied i can't do that\nYou do not have the permission to do that"); + db = interaction.client.db.Cases + warnDB = await db.findAll({ + where: { + userID: IdUser, + type: "warn" + }, + attributes: ['id', 'type', 'userID', 'reason', 'Executor'] + }); + let list = ""; + for (let i = 0; i < warnDB.length; i++) { + list += `${warnDB[i].reason} - *insert date here*\n`; + } + console.log(list); + if (list !== "") { + interaction.followUp({ content: list }); + } + else if (list === "") { + interaction.followUp({ content: "There is no warn" }); }; } - else if (!IdUser) { - IdUser = interaction.user.id; - }; + case "bans": { + await interaction.deferReply({ ephemeral: true }); + let IdUser = interaction.options.getString("user"); - db = interaction.client.db.Cases - banDB = await db.findAll({ - where: { - userID: IdUser, - type: "bans" - }, - attributes: ['id', 'type', 'userID', 'reason', 'Executor'] - }); - let list = ""; + if (IdUser) { + let permV = await interaction.guild.members.fetch(UserExecutor); + if (!permV.permissions.FLAGS.has(Permissions.FLAGS.BAN_MEMBERS)) { + return interaction.reply("I'm sorry Dave, but i'm afraied i can't do that\nYou do not have the permission to do that"); + }; + } + else if (!IdUser) { + IdUser = interaction.user.id; + }; - for (let i = 0; i < warnDB.length; i++) { - list += `${warnDB[i].reason} - *insert date here*\n`; - } - console.log(list); - if (list !== "") { - interaction.followUp({ content: list }); - } - else if (list === "") { - interaction.followUp({ content: "There is no bans" }); - }; - } - else if (subcommand === "kicks") { - await interaction.deferReply({ ephemeral: true }); - let IdUser = interaction.options.getString("user"); + db = interaction.client.db.Cases + banDB = await db.findAll({ + where: { + userID: IdUser, + type: "bans" + }, + attributes: ['id', 'type', 'userID', 'reason', 'Executor'] + }); + let list = ""; - if (IdUser) { - let permV = await interaction.guild.members.fetch(UserExecutor); - if (!permV.permissions.FLAGS.has(Permissions.FLAGS.KICK_MEMBERS)) { - return interaction.reply("I'm sorry Dave, but i'm afraied i can't do that\nYou do not have the permission to do that"); + for (let i = 0; i < warnDB.length; i++) { + list += `${warnDB[i].reason} - *insert date here*\n`; } + console.log(list); + if (list !== "") { + interaction.followUp({ content: list }); + } + else if (list === "") { + interaction.followUp({ content: "There is no bans" }); + }; } - else if (!IdUser) { - IdUser = interaction.user.id; - }; + case "kicks": { + await interaction.deferReply({ ephemeral: true }); + let IdUser = interaction.options.getString("user"); + + if (IdUser) { + let permV = await interaction.guild.members.fetch(UserExecutor); + if (!permV.permissions.FLAGS.has(Permissions.FLAGS.KICK_MEMBERS)) { + return interaction.reply("I'm sorry Dave, but i'm afraied i can't do that\nYou do not have the permission to do that"); + } + } + else if (!IdUser) { + IdUser = interaction.user.id; + }; - db = interaction.client.db.Cases - banDB = await db.findAll({ - where: { - userID: IdUser, - type: "kick" - }, - attributes: ['id', 'type', 'userID', 'reason', 'Executor'] - }); - let list = ""; + db = interaction.client.db.Cases + banDB = await db.findAll({ + where: { + userID: IdUser, + type: "kick" + }, + attributes: ['id', 'type', 'userID', 'reason', 'Executor'] + }); + let list = ""; - for (let i = 0; i < warnDB.length; i++) { - list += `${warnDB[i].reason} - *insert date here*\n`; - } - console.log(list); - if (list !== "") { - interaction.followUp({ content: list }); - } - else if (list === "") { - interaction.followUp({ content: "There is no kicks" }); + for (let i = 0; i < warnDB.length; i++) { + list += `${warnDB[i].reason} - *insert date here*\n`; + } + console.log(list); + if (list !== "") { + interaction.followUp({ content: list }); + } + else if (list === "") { + interaction.followUp({ content: "There is no kicks" }); + }; }; - }; + } } }; diff --git a/commands/Moderation/warn.js b/commands/Moderation/warn.js index 699a72e..18e1229 100644 --- a/commands/Moderation/warn.js +++ b/commands/Moderation/warn.js @@ -1,4 +1,5 @@ -const { SlashCommandBuilder, EmbedBuilder } = require('discord.js'); +const { SlashCommandBuilder } = require('discord.js'); +const { warn } = require('../../Util/Moderation.js') module.exports = { data: new SlashCommandBuilder() @@ -14,31 +15,8 @@ module.exports = { .setRequired(true)) .addBooleanOption(o => o .setName("joke") - .setDescription("Is this command a joke?")) - , + .setDescription("Is this command a joke?")), async execute(interaction) { - const user = interaction.options.getUser("user"); - const reason = interaction.options.getString("reason"); - const joke = interaction.options.getBoolean("joke"); - const db = interaction.client.db.Cases; - const replyEmbed = new EmbedBuilder().setColor("#00FF00"); - const dmEmbed = new EmbedBuilder().setColor("#FF0000"); - - if (user.id = interaction.client.id) return interaction.reply("I just deleted my own warn <:troll:869197146786766849>"); - - replyEmbed.setDescription(`Warned ${user.tag}: ${reason}`); - dmEmbed.setDescription(`You have been warned for: ${reason}`); - - interaction.reply({ embeds: [replyEmbed] }); - user.send({ embeds: [dmEmbed] }); - - if (!joke) { - db.create({ - type: "warn", - reason: reason, - Executor: interaction.member.user.tag, - userID: user.id - }); - }; + warn(interaction, interaction.options.getUser("user", true), interaction.options.getString("reason", true), interaction.options.getBoolean("joke", true), interaction.client.db.Cases) } }; \ No newline at end of file diff --git a/config.json.template b/config.json.template index a691bc7..ff75610 100644 --- a/config.json.template +++ b/config.json.template @@ -1,11 +1,13 @@ { - "Token":"The token of the bot", - "clientId":"The id of the bot", - "guildId":"The id of the discord server", - "logCha":"The id of a log channel", - "starBoardCha":"The Starboard channel" - "showLink": "Showing the link for inviting the bot, set 'false' to desactivate it", + "token": "The token of the bot", + "clientId": "The id of the bot", + "guildId": "The id of the discord server", + "logCha": "The id of a log channel", + "starBoard": "Do you want the starboard to be activated?" + "starBoardCha": "The Starboard channel (complete if starBoard is true)" + "showLink": "Showing the link for inviting the bot, set 'false' to desactivate it, and 'true' to activate", "sqlPass": "A password for the database, can be empty", "PastebinDevKey": "A key to the api of Pastebin", - "OwnerId": "The id of the owner of the bot, can be an Array" + "OwnerId": "The id of the owner of the bot, can be an Array", + "test": "do you want the test command to be pushed like other? set 'true' here else, set false" } \ No newline at end of file diff --git a/context menu/User/Misc/User info.js b/context menu/User/Misc/User info.js new file mode 100644 index 0000000..ee22f66 --- /dev/null +++ b/context menu/User/Misc/User info.js @@ -0,0 +1,31 @@ +const { ContextMenuCommandBuilder, EmbedBuilder } = require("discord.js"); + +module.exports = { + data: new ContextMenuCommandBuilder() + .setName("User Info") + .setType(2), + async execute(interaction) { + const member = interaction.targetMember + + await interaction.guild.members.fetch(member) + await interaction.client.users.fetch(member.user) + + let roles = [] + member.roles.cache.forEach(e => { + if (e.name !== "@everyone") roles.push(`<@${e.id}>`) + }) + + interaction.reply({ + ephemeral: true, embeds: [new EmbedBuilder() + .setAuthor({ name: member.user.tag, iconURL: member.user.avatarURL({ extension: "png", size: 4096 }) }) + .setDescription(`<@${member.user.id}>`) + .setColor(`#${Math.floor(Math.random()*16777215).toString(16)}`) + .addFields( + {name: "**Joined**", value: ``, inline: true }, + {name: "**Registered**", value: ``, inline: true }, + {name: `**Roles [${member.roles.cache.size - 1}]**`, value: roles.join(", ") ? roles.join(", ") : "*none*"}, + ) + ] + }) + } +} \ No newline at end of file diff --git a/context menu/User/Moderation/Ban.js b/context menu/User/Moderation/Ban.js new file mode 100644 index 0000000..b1674c6 --- /dev/null +++ b/context menu/User/Moderation/Ban.js @@ -0,0 +1,22 @@ +const { ModalSubmitInteraction } = require("discord.js"); +const { ContextMenuCommandBuilder, ModalBuilder, ActionRowBuilder, TextInputBuilder, TextInputStyle } = require("discord.js"); +const { ban } = require("../../../Util/Moderation"); + +module.exports = { + data: new ContextMenuCommandBuilder() + .setName("Ban") + .setType(2), + async execute(interaction) { + if (interaction.targetMember.bannable) { + interaction.showModal(new ModalBuilder().setCustomId("ban-contextmenu").setTitle("Reason").addComponents(new ActionRowBuilder().addComponents(new TextInputBuilder() + .setCustomId("reason") + .setLabel("The reason of this ban") + .setStyle(TextInputStyle.Short) + .setRequired(true)))); + interaction.awaitModalSubmit({ time: 75_000 }).then(async e => { + await e.deferReply(); await e.deleteReply() + ban(interaction, interaction.targetMember, e.fields.getTextInputValue("reason"), undefined, e.client.db.Cases) + }).catch(err => { console.error(err); interaction.editReply({content: `There was an error while executing this context menu!\n\`\`\`${err} \`\`\``}).catch(e => {})}); + } + } +} \ No newline at end of file diff --git a/context menu/User/Moderation/Kick.js b/context menu/User/Moderation/Kick.js new file mode 100644 index 0000000..278fa6e --- /dev/null +++ b/context menu/User/Moderation/Kick.js @@ -0,0 +1,21 @@ +const { ContextMenuCommandBuilder, ModalBuilder, ActionRowBuilder, TextInputBuilder, TextInputStyle } = require('discord.js') +const { kick } = require('../../../Util/Moderation') + +module.exports = { + data: new ContextMenuCommandBuilder() + .setName("Kick") + .setType(2), + async execute(interaction) { + if (interaction.targetMember.kickable) { + interaction.showModal(new ModalBuilder().setCustomId("kick-contextmenu").setTitle("Reason").addComponents(new ActionRowBuilder().addComponents(new TextInputBuilder() + .setCustomId("reason") + .setLabel("The reason of this kick") + .setStyle(TextInputStyle.Short) + .setRequired(true)))); + interaction.awaitModalSubmit({ time: 75_000 }).then(e => { + e.deferReply() + kick(e, interaction.targetMember, e.fields.getTextInputValue("reason"), undefined, interaction.client.db.Cases) + }).catch(err => { console.error(err); interaction.editReply({content: `There was an error while executing this context menu!\n\`\`\`${err} \`\`\``, ephemeral: true}).catch(e => {})}); + } + } +} \ No newline at end of file diff --git a/context menu/User/Moderation/Warn.js b/context menu/User/Moderation/Warn.js new file mode 100644 index 0000000..007b6bf --- /dev/null +++ b/context menu/User/Moderation/Warn.js @@ -0,0 +1,19 @@ +const { ContextMenuCommandBuilder, ModalBuilder, ActionRowBuilder, TextInputBuilder, TextInputStyle } = require('discord.js') +const { warn } = require('../../../Util/Moderation') + +module.exports = { + data: new ContextMenuCommandBuilder() + .setName("Warn") + .setType(2), + async execute(interaction) { + interaction.showModal(new ModalBuilder().setCustomId("warn-contextmenu").setTitle("Reason").addComponents(new ActionRowBuilder().addComponents(new TextInputBuilder() + .setCustomId("reason") + .setLabel("The reason of this warn") + .setStyle(TextInputStyle.Short) + .setRequired(true)))); + interaction.awaitModalSubmit({ time: 75_000 }).then(e => { + e.deferReply() + warn(e, interaction.targetUser, e.fields.getTextInputValue("reason"), undefined, interaction.client.db.Cases) + }).catch(err => { console.error(err); interaction.editReply({content: `There was an error while executing this context menu!\n\`\`\`${err} \`\`\``}).catch(e => {})}); + } +} \ No newline at end of file diff --git a/deploy-commands.js b/deploy-commands.js index 6e6c1ac..7a8f8c6 100644 --- a/deploy-commands.js +++ b/deploy-commands.js @@ -1,25 +1,41 @@ const { REST } = require('@discordjs/rest'); -const { Routes } = require('discord-api-types/v9'); -const { token, clientId, guildId } = require('./config.json'); +const { Routes } = require('discord-api-types/v10'); +const { token, clientId, guildId, beta } = require('./config.json'); const fs = require('node:fs'); const commands = []; -const commandFolders = fs.readdirSync(`${__dirname}/commands`); -for (const folder of commandFolders) { - const commandFiles = fs.readdirSync(`${__dirname}/commands/${folder}`).filter(file => file.endsWith(".js")); - - for (const file of commandFiles) { +for (const folder of fs.readdirSync(`${__dirname}/commands`)) { + for (const file of fs.readdirSync(`${__dirname}/commands/${folder}`).filter(file => file.endsWith(".js"))) { try { const command = require(`${__dirname}/commands/${folder}/${file}`); - commands.push(command.data.toJSON()); - } catch (err) { + commands.push(command.data.toJSON()); + } catch (err) { console.error(err); } } } -const rest = new REST({ version: '9' }).setToken(token); +const contextMenu = []; + +for (const type of fs.readdirSync(`${__dirname}/context menu`)) { + for (const folder of fs.readdirSync(`${__dirname}/context menu/${type}`)) { + for (const file of fs.readdirSync(`${__dirname}/context menu/${type}/${folder}`).filter(file => file.endsWith(".js"))) { + try { + const contextmenu = require(`${__dirname}/context menu/${type}/${folder}/${file}`); + contextMenu.push(contextmenu.data.toJSON()); + } catch (err) { + console.error(err); + } + } + } +} + +const all = []; +commands.forEach(e => {if (!beta && e.name !== "test" || beta) all.push(e)}) +contextMenu.forEach(e => all.push(e)); + +const rest = new REST({ version: '10' }).setToken(token); (async () => { try { @@ -28,15 +44,15 @@ const rest = new REST({ version: '9' }).setToken(token); guildId.forEach(async guild => { await rest.put( Routes.applicationGuildCommands(clientId, guild), - { body: commands }, - ); + { body: all }, + ).catch(e => {console.error(e)}); } )} else { await rest.put( Routes.applicationGuildCommands(clientId, guildId), - { body: commands }, - ) + { body: all }, + ).catch(e => {console.error(e)}) } console.log('Successfully reloaded application (/) commands.'); } catch (error) { diff --git a/events/client/ready.js b/events/Client/ready.js similarity index 95% rename from events/client/ready.js rename to events/Client/ready.js index 6a87215..1305099 100644 --- a/events/client/ready.js +++ b/events/Client/ready.js @@ -14,6 +14,7 @@ module.exports = { guilds.forEach(async guild => { let guildFetched = await guild.fetch() await guildFetched.channels.fetch() + guildFetched.members.fetchMe() console.log(`Channels of ${guildFetched.name} loaded (${guildFetched.id})`) }); if (showLink) { diff --git a/events/Interaction/InteractionCreate.js b/events/Interaction/InteractionCreate.js index e3d541e..2629f2b 100644 --- a/events/Interaction/InteractionCreate.js +++ b/events/Interaction/InteractionCreate.js @@ -1,26 +1,53 @@ -const { InteractionType } = require('discord.js') - module.exports = { name: 'interactionCreate', on: true, async execute(interaction) { - if (interaction.type !== InteractionType.ApplicationCommand) return; + if (interaction.type == 2) { + if (interaction.commandType == 1) { + const command = client.commands.get(interaction.commandName); + if (!command) return; + + await command.execute(interaction).catch(async err => { + console.error(err) + await interaction.reply({ content: `There was an error while executing this command!\n\`\`\`${err} \`\`\``, ephemeral: true }).catch(await interaction.followUp({ content: `There was an error while executing this command!\n\`\`\` ${err} \`\`\``, ephemeral: true }).catch(e => { interaction.editReply({ content: `There was an error while executing this command!\n\`\`\` ${err} \`\`\``, ephemeral: true }).catch(e => { }) })); + }); + } + else if (interaction.commandType == 2 || interaction.commandType == 3) { + const contextMenu = client.contextMenu.get(interaction.commandName); + if (!contextMenu) return; + + await contextMenu.execute(interaction).catch(async err => { + console.error(err) + await interaction.reply({ content: `There was an error while executing this context menu!\n\`\`\`${err} \`\`\``, ephemeral: true }).catch(await interaction.followUp({ content: `There was an error while executing this context menu!\n\`\`\` ${err} \`\`\``, ephemeral: true }).catch(e => { interaction.editReply({ content: `There was an error while executing this context menu!\n\`\`\` ${err} \`\`\``, ephemeral: true }).catch(e => { }) })); + }); + } + } + else if (interaction.type == 3) { + if (interaction.isSelectMenu) { + if (interaction.customId !== "role-selector") return; + await interaction.deferReply({ ephemeral: true }) + await interaction.member.fetch(); + const roles = interaction.member.roles; - const command = client.commands.get(interaction.commandName); - - if (!command) return; - - try { - await command.execute(interaction); - } catch (err) { - console.error(err); - try { - await interaction.reply({ content: `There was an error while executing this command!\n\`\`\`${err} \`\`\``, ephemeral: true }); - } catch { - try { - await interaction.followUp({content: `There was an error while executing this command!\n\`\`\` ${err} \`\`\``, ephemeral: true}); - } catch {} - }; - }; + let response = [] + for (let roleId of interaction.values) { + const role = await interaction.guild.roles.fetch(roleId); + if (role) { + if (roles.cache.has(role.id)) { + await roles.remove(role) + response.push(`Removed ${role.name}`) + } + else if (!roles.cache.has(role.id)) { + await roles.add(role) + response.push(`Added ${role.name}`) + } + } + else if (!role) { + console.log(`${roleId} doesn't exist`) + } + } + interaction.followUp(response.join("\n")) + } + } } } \ No newline at end of file diff --git a/events/message/MessageCreate.js b/events/Message/MessageCreate.js similarity index 57% rename from events/message/MessageCreate.js rename to events/Message/MessageCreate.js index 13ec850..c96d8ab 100644 --- a/events/message/MessageCreate.js +++ b/events/Message/MessageCreate.js @@ -3,15 +3,12 @@ module.exports = { on: true, async execute(messages) { if (messages.author.id === client.user.id) return; - client.messages.forEach(e => {if (e.code) e.code(messages)}) + client.messages.forEach(e => { if (e.code) e.code(messages).catch(console.error) }) + const message = client.messages.get(messages.content); if (!message) return; - - try { - await message.execute(messages); - } catch (err) { - console.error(err); - }; + + await message.execute(messages).catch(console.error); } } \ No newline at end of file diff --git a/events/message/StarBoard.js b/events/Message/StarBoard.js similarity index 100% rename from events/message/StarBoard.js rename to events/Message/StarBoard.js diff --git a/events/message/StarBoardPt2.js b/events/Message/StarBoardPt2.js similarity index 100% rename from events/message/StarBoardPt2.js rename to events/Message/StarBoardPt2.js diff --git a/package.json b/package.json index 1c12c0b..256f1a4 100644 --- a/package.json +++ b/package.json @@ -16,8 +16,5 @@ "discord.js": "^14.2.0", "sequelize": "6.19.1", "sqlite3": "^5.0.8" - }, - "devDependencies": { - "eslint": "^8.15.0" } } From d15dd761a8d87534b9971f585a64d2d6409f8387 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 20 Aug 2022 11:54:55 +0200 Subject: [PATCH 156/236] Whoops --- context menu/User/Misc/User info.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/context menu/User/Misc/User info.js b/context menu/User/Misc/User info.js index ee22f66..c4415c5 100644 --- a/context menu/User/Misc/User info.js +++ b/context menu/User/Misc/User info.js @@ -12,7 +12,7 @@ module.exports = { let roles = [] member.roles.cache.forEach(e => { - if (e.name !== "@everyone") roles.push(`<@${e.id}>`) + if (e.name !== "@everyone") roles.push(`<@&${e.id}>`) }) interaction.reply({ From 965ce2d82b84cbf8d682ce34b87573d131cd5602 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 20 Aug 2022 15:51:43 +0200 Subject: [PATCH 157/236] New DOS command: deploy: deploying / command --- README.md | 4 +- Util/Dos.js | 48 +++++++++++-------- commands/Misc/eval.js | 14 +++--- context menu/User/Moderation/Ban.js | 1 - deploy-commands.js | 72 ++++++++++++++++------------- 5 files changed, 77 insertions(+), 62 deletions(-) diff --git a/README.md b/README.md index 5319a5a..0414043 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# Progressbar Ruler Discord Bot +# Processes Discord Bot -This is a moderation bot for the Progressbar95 Fan Discord Server. +This is a moderation bot for the [Progressbar95 Fan Server](https://discord.gg/HWFYmwsFX9). ## Setting up diff --git a/Util/Dos.js b/Util/Dos.js index 243de32..b0ae287 100644 --- a/Util/Dos.js +++ b/Util/Dos.js @@ -9,7 +9,7 @@ async function ProcessDOS(client) { let drvlabel = "SERVERS" let depth = 0 let curServer = null - let curC = null + let curC = null let drvS = {} let drvC = {} let inRepl = false @@ -61,6 +61,7 @@ async function ProcessDOS(client) { log("help Displays this help") log("exit Terminates the bot and console") log("reload Reload Command or server, depending on the drive in which executed") + log("deploy Deploy slash (/) commands") break } case 'status': { @@ -161,11 +162,11 @@ async function ProcessDOS(client) { break } case 'tail': { - if (drive === "C" || curServer == null) {console.log("Please, enter a server in the 'S' drive"); break} + if (drive === "C" || curServer == null) { console.log("Please, enter a server in the 'S' drive"); break } let channel = line.split(" ")[1] - if (!channel) {console.log('A channel id is required'); break} + if (!channel) { console.log('A channel id is required'); break } let MessageAmount = line.split(" ")[2] || 10 - let Messages = await client.guilds.cache.get(curServer).channels.cache.get(channel).messages.fetch({limit: MessageAmount}) + let Messages = await client.guilds.cache.get(curServer).channels.cache.get(channel).messages.fetch({ limit: MessageAmount }) Messages.forEach(e => { console.log(`${e.id.padEnd(20)}${e.author.tag.padEnd(13)}${e.content}`) }) @@ -190,20 +191,6 @@ async function ProcessDOS(client) { console.log() break } - case 'c:': case 'C:': { - drive = 'C' - drvlabel = 'COMMANDS' - depth = 0 - dir = ["\\"] - break - } - case 'S:': case 's:': { - drive = 'S' - drvlabel = 'SERVERS' - depth = 0 - dir = ["\\"] - break - } case "reload": { switch (drive) { case "S": { @@ -222,6 +209,31 @@ async function ProcessDOS(client) { } }; } + case "deploy": { + const { send } = require("../deploy-commands.js"); + const { token, guildId, beta } = require("../config.json"); + + let all = [] + client.commands.forEach(e => { if (!beta && e.name !== "test" || beta) all.push(e.data.toJSON()) }) + client.contextMenu.forEach(e => all.push(e.data.toJSON())) + + send(all, token, guildId, client.user.id); + break; + } + case 'c:': case 'C:': { + drive = 'C' + drvlabel = 'COMMANDS' + depth = 0 + dir = ["\\"] + break + } + case 'S:': case 's:': { + drive = 'S' + drvlabel = 'SERVERS' + depth = 0 + dir = ["\\"] + break + } case '': break default: console.log("Bad command or file name") }; diff --git a/commands/Misc/eval.js b/commands/Misc/eval.js index a06398e..9a1c685 100644 --- a/commands/Misc/eval.js +++ b/commands/Misc/eval.js @@ -9,22 +9,20 @@ module.exports = { .setName("code") .setDescription("The code to execute")), async execute(interaction) { - interaction.deferReply({ ephemeral: true }) + await interaction.deferReply({ ephemeral: true }) const code = interaction.options.getString("code") if (OwnerId instanceof Array) { let Use = false OwnerId.forEach(e => { if (interaction.user.id === e) return Use = true }) - if (Use) await eval(console.log(code)) + + if (Use) await new Promise(() => eval(code)).catch(err => {interaction.followUp(`A error occured: \`\`\`${err}\`\`\``).catch(e => {});console.error("Slash Eval Error:\n" + err)}) + else return interaction.followUp("You aren't authorized to execute this") } else if (OwnerId instanceof String) { - if (interaction.user.id !== OwnerId) return interaction.reply("You aren't authorized to execute this") - else await eval(console.log(code)) - } - await interaction.fetchReply() - if (interaction.replied === false) { - interaction.followUp("Unsigned code executed.") + if (interaction.user.id !== OwnerId) return interaction.followUp("You aren't authorized to execute this") + else await new Promise(eval(code)).catch(console.error) } } } \ No newline at end of file diff --git a/context menu/User/Moderation/Ban.js b/context menu/User/Moderation/Ban.js index b1674c6..3c57ee4 100644 --- a/context menu/User/Moderation/Ban.js +++ b/context menu/User/Moderation/Ban.js @@ -1,4 +1,3 @@ -const { ModalSubmitInteraction } = require("discord.js"); const { ContextMenuCommandBuilder, ModalBuilder, ActionRowBuilder, TextInputBuilder, TextInputStyle } = require("discord.js"); const { ban } = require("../../../Util/Moderation"); diff --git a/deploy-commands.js b/deploy-commands.js index 7a8f8c6..82d7a3a 100644 --- a/deploy-commands.js +++ b/deploy-commands.js @@ -1,61 +1,67 @@ const { REST } = require('@discordjs/rest'); const { Routes } = require('discord-api-types/v10'); const { token, clientId, guildId, beta } = require('./config.json'); -const fs = require('node:fs'); - -const commands = []; - -for (const folder of fs.readdirSync(`${__dirname}/commands`)) { - for (const file of fs.readdirSync(`${__dirname}/commands/${folder}`).filter(file => file.endsWith(".js"))) { - try { - const command = require(`${__dirname}/commands/${folder}/${file}`); - commands.push(command.data.toJSON()); - } catch (err) { - console.error(err); - } - } -} -const contextMenu = []; +if (require.main === module) { + const fs = require('node:fs'); + const commands = []; -for (const type of fs.readdirSync(`${__dirname}/context menu`)) { - for (const folder of fs.readdirSync(`${__dirname}/context menu/${type}`)) { - for (const file of fs.readdirSync(`${__dirname}/context menu/${type}/${folder}`).filter(file => file.endsWith(".js"))) { + for (const folder of fs.readdirSync(`${__dirname}/commands`)) { + for (const file of fs.readdirSync(`${__dirname}/commands/${folder}`).filter(file => file.endsWith(".js"))) { try { - const contextmenu = require(`${__dirname}/context menu/${type}/${folder}/${file}`); - contextMenu.push(contextmenu.data.toJSON()); + const command = require(`${__dirname}/commands/${folder}/${file}`); + commands.push(command.data.toJSON()); } catch (err) { console.error(err); } } } -} -const all = []; -commands.forEach(e => {if (!beta && e.name !== "test" || beta) all.push(e)}) -contextMenu.forEach(e => all.push(e)); + const contextMenu = []; + + for (const type of fs.readdirSync(`${__dirname}/context menu`)) { + for (const folder of fs.readdirSync(`${__dirname}/context menu/${type}`)) { + for (const file of fs.readdirSync(`${__dirname}/context menu/${type}/${folder}`).filter(file => file.endsWith(".js"))) { + try { + const contextmenu = require(`${__dirname}/context menu/${type}/${folder}/${file}`); + contextMenu.push(contextmenu.data.toJSON()); + } catch (err) { + console.error(err); + } + } + } + } -const rest = new REST({ version: '10' }).setToken(token); + const all = []; + commands.forEach(e => { if (!beta && e.name !== "test" || beta) all.push(e) }) + contextMenu.forEach(e => all.push(e)); + send(all, token, guildId, clientId) +} -(async () => { +async function send(all, token, guildId, clientId) { + const rest = new REST({ version: '10' }).setToken(token); try { console.log('Started refreshing application (/) commands.'); if (guildId instanceof Array) { guildId.forEach(async guild => { - await rest.put( - Routes.applicationGuildCommands(clientId, guild), - { body: all }, - ).catch(e => {console.error(e)}); + await rest.put( + Routes.applicationGuildCommands(clientId, guild), + { body: all }, + ).catch(e => { console.error(e) }); } - )} + ) + } else { await rest.put( Routes.applicationGuildCommands(clientId, guildId), { body: all }, - ).catch(e => {console.error(e)}) + ).catch(e => { console.error(e) }) } console.log('Successfully reloaded application (/) commands.'); } catch (error) { console.error(error); } -})(); +}; + + +module.exports = { send } \ No newline at end of file From f82fd3347235099545e691f534205d38e5d7afeb Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 21 Aug 2022 14:52:51 +0200 Subject: [PATCH 158/236] Timeout command using a switch, dammit --- commands/Misc/test.js | 65 +- commands/Moderation/timeout.js | 50 +- commands/Moderation/warn.js | 1 + config.json.template | 2 +- package-lock.json | 1233 +------------------------------- 5 files changed, 50 insertions(+), 1301 deletions(-) diff --git a/commands/Misc/test.js b/commands/Misc/test.js index 127e6cc..4b9de46 100644 --- a/commands/Misc/test.js +++ b/commands/Misc/test.js @@ -1,4 +1,4 @@ -const { SlashCommandBuilder, SelectMenuBuilder, ActionRowBuilder, EmbedBuilder } = require("discord.js"); +const { SlashCommandBuilder } = require("discord.js"); module.exports = { data: new SlashCommandBuilder() @@ -13,58 +13,23 @@ module.exports = { .addStringOption(o => o .setName("content") .setDescription("the content of the message") + .setRequired(true) + ) + .addBooleanOption(o => o + .setName("ephemeral?") + .setDescription("Is the message hidden from eveyone?") + .setRequired(true) ) ) ), async execute(interaction) { - interaction.reply({ content: "Okay", ephemeral: true }) - await interaction.channel.send({ - embeds: [new EmbedBuilder().setTitle("Roles!").setDescription("Chose your roles here!").setColor("#e30b0b")], - components: [ - new ActionRowBuilder() - .addComponents(new SelectMenuBuilder() - .setCustomId("role-selector") - .setPlaceholder("Nothing selected") - .setMinValues(1) - .setMaxValues(10) - .addOptions( - { label: "Chaotic", description: "Access to chaos channel", value: "974018133054591035", emoji: "🔥" }, - { label: "Poller", description: "Get pinged for polls", value: "974018133071388715", emoji: "🗳️" }, - { label: "New Beta", description: "Get pinged for new betas", value: "974018133071388717", emoji: "🆕" }, - { label: "New Update", description: "Get pinged for new updates", value: "974018133071388716", emoji: "🆙" }, - { label: "Announcements", description: "Get pinged for announcements", value: "974018133071388714", emoji: "📣" }, - { label: "Wiki Announcements", description: "Get pinged for wiki announcements", value: "974018133071388713", emoji: "📘" }, - { label: "Serious View", description: "Access to serious channel", value: "974018133071388718", emoji: "😐" }, - { label: "Bot", description: "No role in that server to use it", value: "null", emoji: "🤖" }, - { label: "Archive View", description: "Access #the-great-archive", value: "974018133071388719", emoji: "🏛️" }, - { label: "ProgressCLI95", description: "Get pinged for updates on ProgressCLI95", value: "974018133037809676" } - ) - ) - ] - }); - interaction.channel.send({ - embeds: [new EmbedBuilder().setTitle("Colors!").setDescription("Get colors here!").setColor("#13b42d")], - components: [ - new ActionRowBuilder() - .addComponents(new SelectMenuBuilder() - .setCustomId("role-selector") - .setPlaceholder("Nothing selected") - .addOptions( - { label: "lean", value: "974018133184626745", emoji: "🟣" }, - { label: "A random shade of Magenta fraxxtal found on color.adobe.com", value: "974018133184626742", emoji: "🟪" }, - { label: "Dangerous Red", value: "974018133184626740", emoji: "🔴" }, - { label: "Pantone 448 C", value: "974018133167845413", emoji: "🟤" }, - { label: "Soft Furret", value: "974018133167845410", emoji: "🟫" }, - { label: "Corrupted Orange", value: "974018133167845406", emoji: "🟠" }, - { label: "Arch User!", value: "974018133209796618", emoji: "🟡" }, - { label: "Tea Green", value: "974018133151084602", emoji: "🟢" }, - { label: "Winning Green", value: "974018133151084600", emoji: "🟩" }, - { label: "Wallpaper", value: "974018133071388720", emoji: "🔵" }, - { label: "2000", value: "974018133151084594", emoji: "🟦" }, - { label: "Bluuuu", value: "974018133134282781", emoji: "🔷" }, - ) - ) - ] - }); + const sc = interaction.option.getSubcommand() + + switch (sc) { + case "simple": { + interaction.reply({ content: interaction.option.getString("content"), ephemeral: interaction.option.getBoolean("ephemeral") }) + } + + } } } \ No newline at end of file diff --git a/commands/Moderation/timeout.js b/commands/Moderation/timeout.js index 386a6e6..2fc4538 100644 --- a/commands/Moderation/timeout.js +++ b/commands/Moderation/timeout.js @@ -1,3 +1,4 @@ +const { CommandInteraction } = require('discord.js'); const { SlashCommandBuilder, EmbedBuilder, GuildMember } = require('discord.js'); module.exports = { @@ -25,9 +26,9 @@ module.exports = { async execute(interaction) { const member = interaction.options.getMember('user'); const RealLen = interaction.options.getInteger('duration'); - let length = interaction.options.getInteger('duration'); const unit = interaction.options.getString('unit'); - let reason = interaction.options.getString('reason') || "No reason provided"; + const reason = interaction.options.getString('reason') || "No reason provided"; + let length = RealLen; const replyEmbed = new EmbedBuilder(); if (!(member instanceof GuildMember)) { @@ -35,32 +36,35 @@ module.exports = { } if (member.id === interaction.client.user.id) { - if (!reason || reason === "No reason provided")return interaction.reply(`Timed out undefined for ${RealLen} ${unit}`); - else if (reason || reason !== "No reason provided") return interaction.reply(`Timed out undefined for ${RealLen} ${unit} for **${reason}.**`)}; + if (!reason || reason === "No reason provided") return interaction.reply(`Timed out undefined for ${RealLen} ${unit}`); + else if (reason || reason !== "No reason provided") return interaction.reply(`Timed out undefined for ${RealLen} ${unit} for **${reason}.**`) + }; - if (unit == "seconds") length = Math.floor(length * 1000); - else if (unit == "minutes") length = Math.floor(length * 60 * 1000); - else if (unit == "hours") length = Math.floor(length * 60 * 60 * 1000); - else if (unit == "days") length = Math.floor(length * 24 * 60 * 60 * 1000); + switch (unit) { + case "seconds": length = Math.floor(length * 1000); + case "minutes": length = Math.floor(length * 60 * 1000); + case "hours": length = Math.floor(length * 60 * 60 * 1000); + case "days": length = Math.floor(length * 24 * 60 * 60 * 1000); + } if (length > 2.419e+9) { replyEmbed.setColor("#FF0000"); - replyEmbed.setDescription(`**I cannot timeout ${user.tag} for that long! You provided a time longer than 28 days!**`); - await interaction.reply({ embeds:[replyEmbed] }); + replyEmbed.setDescription(`**I cannot timeout ${user.tag} for *that* long! You provided a time longer than 28 days!**`); + await interaction.reply({ embeds: [replyEmbed] }); } - else { - member.timeout(length, reason + " | Timeout by " + interaction.member.user) - .then(async () => { - replyEmbed.setDescription(`Timed out ${member} for **${RealLen} ${unit}** for **"${reason}".**`); - replyEmbed.setColor("#00FF00"); - await interaction.reply({embeds:[replyEmbed]}); - }) - .catch(async error => { - console.error(error); - replyEmbed.setDescription(`**I cannot timeout ${member.tag}! They have admin permissions!**`); - replyEmbed.setColor("#FF0000"); - await interaction.reply({embeds: [replyEmbed], ephemeral: true}); - }) + else if (length < 2.419e+9) { + member.timeout(length, reason + "| Timeout by" + interaction.user.tag) + .then(async () => { + replyEmbed.setDescription(`Timed out ${member} for **${RealLen} ${unit}** for **"${reason}".**`); + replyEmbed.setColor("#00FF00"); + await interaction.reply({ embeds: [replyEmbed] }); + }) + .catch(async error => { + console.error(error); + replyEmbed.setDescription(`**I cannot timeout ${member.tag}! They have admin permissions!**`); + replyEmbed.setColor("#FF0000"); + await interaction.reply({ embeds: [replyEmbed], ephemeral: true }); + }) } }, }; diff --git a/commands/Moderation/warn.js b/commands/Moderation/warn.js index 18e1229..d2f4760 100644 --- a/commands/Moderation/warn.js +++ b/commands/Moderation/warn.js @@ -17,6 +17,7 @@ module.exports = { .setName("joke") .setDescription("Is this command a joke?")), async execute(interaction) { + await interaction.deferReply() warn(interaction, interaction.options.getUser("user", true), interaction.options.getString("reason", true), interaction.options.getBoolean("joke", true), interaction.client.db.Cases) } }; \ No newline at end of file diff --git a/config.json.template b/config.json.template index ff75610..5580582 100644 --- a/config.json.template +++ b/config.json.template @@ -9,5 +9,5 @@ "sqlPass": "A password for the database, can be empty", "PastebinDevKey": "A key to the api of Pastebin", "OwnerId": "The id of the owner of the bot, can be an Array", - "test": "do you want the test command to be pushed like other? set 'true' here else, set false" + "beta": "do you want the test command to be pushed like other? set 'true' here else, set false" } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 99e3f99..5766a12 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,9 +15,6 @@ "discord.js": "^14.2.0", "sequelize": "6.19.1", "sqlite3": "^5.0.8" - }, - "devDependencies": { - "eslint": "^8.15.0" } }, "node_modules/@discordjs/builders": { @@ -71,52 +68,12 @@ "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.29.0.tgz", "integrity": "sha512-Ekq1ICNpOTVajXKZguNFrsDeTmam+ZeA38txsNLZnANdXUjU6QBPIZLUQTC6MzigFGb0Tt8vk4xLnXmzv0shNg==" }, - "node_modules/@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "optional": true }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, "node_modules/@mapbox/node-pre-gyp": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz", @@ -262,27 +219,6 @@ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, - "node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "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/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -321,22 +257,6 @@ "node": ">=8" } }, - "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-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -345,21 +265,6 @@ "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": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", @@ -377,12 +282,6 @@ "node": ">=10" } }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -440,31 +339,6 @@ "node": ">= 10" } }, - "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/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", @@ -482,24 +356,6 @@ "node": ">=6" } }, - "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/color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", @@ -529,20 +385,6 @@ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" }, - "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/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -559,12 +401,6 @@ } } }, - "node_modules/deep-is": { - "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==", - "dev": true - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -651,18 +487,6 @@ "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.36.3.tgz", "integrity": "sha512-bz/NDyG0KBo/tY14vSkrwQ/n3HKPf87a0WFW/1M9+tXYK+vp5Z5EksawfCWo2zkAc6o7CClc0eff1Pjrqznlwg==" }, - "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/dottie": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", @@ -697,204 +521,11 @@ "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "optional": true }, - "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/eslint": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.18.0.tgz", - "integrity": "sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", - "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": "^6.0.1", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/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/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/espree": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", - "dev": true, - "dependencies": { - "acorn": "^8.7.1", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "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/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/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "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==" }, - "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": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "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-type": { "version": "17.1.6", "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.6.tgz", @@ -911,25 +542,6 @@ "url": "https://github.com/sindresorhus/file-type?sponsor=1" } }, - "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.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true - }, "node_modules/follow-redirects": { "version": "1.15.1", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", @@ -978,12 +590,6 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, - "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": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, "node_modules/gauge": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", @@ -1022,48 +628,12 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "optional": true }, - "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", @@ -1141,36 +711,11 @@ } ] }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "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": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "devOptional": true, + "optional": true, "engines": { "node": ">=0.8.19" } @@ -1218,15 +763,6 @@ "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", "optional": true }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "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", @@ -1235,18 +771,6 @@ "node": ">=8" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", @@ -1257,56 +781,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "devOptional": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "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": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "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" - } + "optional": true }, "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.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.snakecase": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", @@ -1530,12 +1011,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -1681,23 +1156,6 @@ "wrappy": "1" } }, - "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/p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", @@ -1713,18 +1171,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "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/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -1733,15 +1179,6 @@ "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/peek-readable": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", @@ -1759,15 +1196,6 @@ "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" }, - "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/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", @@ -1787,15 +1215,6 @@ "node": ">=10" } }, - "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==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -1824,27 +1243,6 @@ "url": "https://github.com/sponsors/Borewit" } }, - "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/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/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -1983,27 +1381,6 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, - "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/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -2113,18 +1490,6 @@ "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/strtok3": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", @@ -2141,18 +1506,6 @@ "url": "https://github.com/sponsors/Borewit" } }, - "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/tar": { "version": "6.1.11", "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", @@ -2169,12 +1522,6 @@ "node": ">= 10" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, "node_modules/token-types": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", @@ -2211,30 +1558,6 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, - "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/undici": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/undici/-/undici-5.8.2.tgz", @@ -2261,15 +1584,6 @@ "imurmurhash": "^0.1.4" } }, - "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/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -2283,12 +1597,6 @@ "uuid": "dist/bin/uuid" } }, - "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/validator": { "version": "13.7.0", "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", @@ -2315,7 +1623,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "devOptional": true, + "optional": true, "dependencies": { "isexe": "^2.0.0" }, @@ -2342,15 +1650,6 @@ "@types/node": "*" } }, - "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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -2429,46 +1728,12 @@ } } }, - "@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - } - }, "@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "optional": true }, - "@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, "@mapbox/node-pre-gyp": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz", @@ -2592,19 +1857,6 @@ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, - "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true - }, - "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": {} - }, "agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -2634,32 +1886,11 @@ "indent-string": "^4.0.0" } }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, - "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" - } - }, "aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", @@ -2674,12 +1905,6 @@ "readable-stream": "^3.6.0" } }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -2734,22 +1959,6 @@ "unique-filename": "^1.1.1" } }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, "chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", @@ -2761,21 +1970,6 @@ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "optional": true }, - "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, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", @@ -2799,17 +1993,6 @@ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -2818,12 +2001,6 @@ "ms": "2.1.2" } }, - "deep-is": { - "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==", - "dev": true - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -2894,15 +2071,6 @@ } } }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, "dottie": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", @@ -2934,155 +2102,11 @@ "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "optional": true }, - "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 - }, - "eslint": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.18.0.tgz", - "integrity": "sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", - "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": "^6.0.1", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - } - }, - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "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 - } - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "espree": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", - "dev": true, - "requires": { - "acorn": "^8.7.1", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - } - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, "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==" }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "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, - "requires": { - "flat-cache": "^3.0.4" - } - }, "file-type": { "version": "17.1.6", "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.6.tgz", @@ -3093,22 +2117,6 @@ "token-types": "^5.0.0-alpha.2" } }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true - }, "follow-redirects": { "version": "1.15.1", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", @@ -3137,12 +2145,6 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, - "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": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, "gauge": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", @@ -3172,36 +2174,12 @@ "path-is-absolute": "^1.0.0" } }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "optional": true }, - "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 - }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -3256,27 +2234,11 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "devOptional": true + "optional": true }, "indent-string": { "version": "4.0.0", @@ -3315,26 +2277,11 @@ "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", "optional": true }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, "is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", @@ -3345,50 +2292,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "devOptional": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "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" - } + "optional": true }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "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 - }, "lodash.snakecase": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", @@ -3555,12 +2465,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, "negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -3670,20 +2574,6 @@ "wrappy": "1" } }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, "p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", @@ -3693,26 +2583,11 @@ "aggregate-error": "^3.0.0" } }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, - "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 - }, "peek-readable": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", @@ -3723,12 +2598,6 @@ "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" }, - "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 - }, "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", @@ -3745,12 +2614,6 @@ "retry": "^0.12.0" } }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -3769,18 +2632,6 @@ "readable-stream": "^3.6.0" } }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "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 - }, "retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -3852,21 +2703,6 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -3945,12 +2781,6 @@ "ansi-regex": "^5.0.1" } }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, "strtok3": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", @@ -3960,15 +2790,6 @@ "peek-readable": "^5.0.0" } }, - "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, - "requires": { - "has-flag": "^4.0.0" - } - }, "tar": { "version": "6.1.11", "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", @@ -3982,12 +2803,6 @@ "yallist": "^4.0.0" } }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, "token-types": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", @@ -4017,21 +2832,6 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.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 - }, "undici": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/undici/-/undici-5.8.2.tgz", @@ -4055,15 +2855,6 @@ "imurmurhash": "^0.1.4" } }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -4074,12 +2865,6 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, - "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 - }, "validator": { "version": "13.7.0", "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", @@ -4103,7 +2888,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "devOptional": true, + "optional": true, "requires": { "isexe": "^2.0.0" } @@ -4124,12 +2909,6 @@ "@types/node": "*" } }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", From 53b2ed145b92aa106151abdbbd5672f08bcc13f0 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Thu, 25 Aug 2022 21:56:27 +0200 Subject: [PATCH 159/236] Fix of replyEmbed and change in timeout command --- Util/Moderation.js | 62 ++++++++++++++++++++++++++++------ commands/Moderation/timeout.js | 51 ++++------------------------ commands/Moderation/warn.js | 3 +- 3 files changed, 60 insertions(+), 56 deletions(-) diff --git a/Util/Moderation.js b/Util/Moderation.js index c975c2e..de10a4f 100644 --- a/Util/Moderation.js +++ b/Util/Moderation.js @@ -10,7 +10,7 @@ async function ban(interaction, member, reason = "No reason provided", joke = fa const dmEmbed = new EmbedBuilder() .setColor("#f04a47") - .setDescription(`You have been banned from ${guild.name}` + (reason === "No reason provided" ? "" : ` for ${reason}`)); + .setDescription(`**You have been banned from ${guild.name} for**: ${reason}`); const replyEmbed = new EmbedBuilder() .setColor("#43b582") .setDescription(`**${member.user.tag} has been banned for:** ${reason}`); @@ -26,7 +26,7 @@ async function ban(interaction, member, reason = "No reason provided", joke = fa if (member.bannable) { if (member.user.id === interaction.user.id) return interaction.followUp("Why do you want to ban yourself?") if (member.user.id === interaction.client.user.id) return interaction.followUp("❌ Why would you ban me? 😢") - + await member.user.send({ embeds: [dmEmbed] }).catch(e => console.error(`Couldn't message ${member.user.tag} (ban)`)) if (!joke) { @@ -60,10 +60,10 @@ async function kick(interaction, member, reason = "No reason provided", joke = f const dmEmbed = new EmbedBuilder() .setColor("#f04a47") - .setDescription(`You have been kicked from ${guild.name}` + (reason === "No reason provided" ? "" : ` for ${reason}`)); + .setDescription(`**You have been kicked from ${guild.name} for**: ${reason}`); const replyEmbed = new EmbedBuilder() .setColor("#43b582") - .setDescription(`**${member.user.tag} has been kicked` + (reason === "No reason provided"? "**" : `for:** ${reason}`)); + .setDescription(`**${member.user.tag} has been kicked for:** ${reason}`); const logEmbed = new EmbedBuilder() .setDescription("Kick") .setColor("#f04a47") @@ -76,9 +76,9 @@ async function kick(interaction, member, reason = "No reason provided", joke = f if (member.kickable) { if (member.user.id === interaction.user.id) return interaction.followUp("Why do you want to kick yourself?") if (member.user.id === interaction.client.user.id) return interaction.followUp("❌ Why would you kick me? 😢") - - await member.user.send({ embeds: [dmEmbed] }).catch(e => {console.error(`Couldn't message ${member.user.tag} (kick)`)}) - + + await member.user.send({ embeds: [dmEmbed] }).catch(e => { console.error(`Couldn't message ${member.user.tag} (kick)`) }) + if (!joke) { try { guild.members.kick(member.user, { reason: reason }); @@ -95,7 +95,7 @@ async function kick(interaction, member, reason = "No reason provided", joke = f }); let logChannel = await interaction.guild.channels.fetch(logCha) - await logChannel.send({embeds: [logEmbed]}) + await logChannel.send({ embeds: [logEmbed] }) } interaction.followUp({ embeds: [replyEmbed] }) } else if (!member.bannable) interaction.followUp("Erf, I can't do that"); @@ -108,7 +108,7 @@ async function warn(interaction, user, reason, joke = false, db) { const dmEmbed = new EmbedBuilder() .setColor("#f04a47") - .setDescription(`You have been warned from ${interaction.guild.name}` + reason === "No reason provided" ? "" : ` for ${reason}`); + .setDescription(`**You have been warned from ${interaction.guild.name} for**: ${reason}`); const replyEmbed = new EmbedBuilder() .setColor("#43b582") .setDescription(`**${user.tag} has been warned for:** ${reason}`); @@ -135,8 +135,48 @@ async function warn(interaction, user, reason, joke = false, db) { await logChannel.send({ embeds: [logEmbed] }) }; - await user.send({ embeds: [dmEmbed] }).catch(e => {console.error(`Couldn't message ${user.tag} (warn)`)}) + await user.send({ embeds: [dmEmbed] }).catch(e => { console.error(`Couldn't message ${user.tag} (warn)`) }) await interaction.followUp({ embeds: [replyEmbed] }) } -module.exports = { ban, kick, warn } \ No newline at end of file +async function timeout(interaction, member, reason, unit, RealLen, joke = false, db) { + let length = RealLen; + + if (!(member instanceof GuildMember)) { + await interaction.guild.member.fetch(member) + } + + if (member.id === interaction.client.user.id) { + if (!reason || reason === "No reason provided") return interaction.followUp(`Timed out undefined for ${RealLen} ${unit}`); + else if (reason || reason !== "No reason provided") return interaction.followUp(`Timed out undefined for ${RealLen} ${unit} for **${reason}.**`) + }; + + switch (unit) { + case "seconds": length = Math.floor(length * 1000); + case "minutes": length = Math.floor(length * 60 * 1000); + case "hours": length = Math.floor(length * 60 * 60 * 1000); + case "days": length = Math.floor(length * 24 * 60 * 60 * 1000); + } + + if (length > 2.419e+9) { + replyEmbed.setColor("#FF0000"); + replyEmbed.setDescription(`**I cannot timeout ${member.user.tag} for *that* long! You provided a time longer than 28 days!**`); + await interaction.followUp({ embeds: [replyEmbed] }); + } + else if (length < 2.419e+9) { + if (!joke) { + await member.timeout(length, reason + "| Timeout by" + interaction.user.tag).then(() => { + db.create({ + type: "timeout", + reason: reason, + Executor: interaction.user.tag, + userID: member.user.id + }) + }).catch(err => {console.error(err);return interaction.followUp(`Couldn't ban ${member.user.tag}: \`\`\`${err}\`\`\``)}) + } + replyEmbed + + } +} + +module.exports = { ban, kick, warn, timeout } \ No newline at end of file diff --git a/commands/Moderation/timeout.js b/commands/Moderation/timeout.js index 2fc4538..5a38f95 100644 --- a/commands/Moderation/timeout.js +++ b/commands/Moderation/timeout.js @@ -1,5 +1,5 @@ -const { CommandInteraction } = require('discord.js'); -const { SlashCommandBuilder, EmbedBuilder, GuildMember } = require('discord.js'); +const { SlashCommandBuilder } = require('discord.js'); +const { timeout } = require("../../Util/Moderation.js") module.exports = { data: new SlashCommandBuilder() @@ -20,51 +20,14 @@ module.exports = { .setMaxValue(60) .setMinValue(1) .setRequired(true)) + .addBooleanOption(o => o + .setName("joke") + .setDescription("Is this supposed to be a joke?") + .setRequired(true)) .addStringOption(o => o .setName("reason") .setDescription('Why should this user be timed out?')), async execute(interaction) { - const member = interaction.options.getMember('user'); - const RealLen = interaction.options.getInteger('duration'); - const unit = interaction.options.getString('unit'); - const reason = interaction.options.getString('reason') || "No reason provided"; - let length = RealLen; - const replyEmbed = new EmbedBuilder(); - - if (!(member instanceof GuildMember)) { - await interaction.guild.member.fetch(member) - } - - if (member.id === interaction.client.user.id) { - if (!reason || reason === "No reason provided") return interaction.reply(`Timed out undefined for ${RealLen} ${unit}`); - else if (reason || reason !== "No reason provided") return interaction.reply(`Timed out undefined for ${RealLen} ${unit} for **${reason}.**`) - }; - - switch (unit) { - case "seconds": length = Math.floor(length * 1000); - case "minutes": length = Math.floor(length * 60 * 1000); - case "hours": length = Math.floor(length * 60 * 60 * 1000); - case "days": length = Math.floor(length * 24 * 60 * 60 * 1000); - } - - if (length > 2.419e+9) { - replyEmbed.setColor("#FF0000"); - replyEmbed.setDescription(`**I cannot timeout ${user.tag} for *that* long! You provided a time longer than 28 days!**`); - await interaction.reply({ embeds: [replyEmbed] }); - } - else if (length < 2.419e+9) { - member.timeout(length, reason + "| Timeout by" + interaction.user.tag) - .then(async () => { - replyEmbed.setDescription(`Timed out ${member} for **${RealLen} ${unit}** for **"${reason}".**`); - replyEmbed.setColor("#00FF00"); - await interaction.reply({ embeds: [replyEmbed] }); - }) - .catch(async error => { - console.error(error); - replyEmbed.setDescription(`**I cannot timeout ${member.tag}! They have admin permissions!**`); - replyEmbed.setColor("#FF0000"); - await interaction.reply({ embeds: [replyEmbed], ephemeral: true }); - }) - } + timeout(interaction, interaction.options.getMember('member', true), interaction.options.getString('reason'), interaction.options.getString('unit', true), interaction.options.getInteger('duration', true), interaction.options.getBoolean('joke', true), interaction.client.db.Cases) }, }; diff --git a/commands/Moderation/warn.js b/commands/Moderation/warn.js index d2f4760..eedb81d 100644 --- a/commands/Moderation/warn.js +++ b/commands/Moderation/warn.js @@ -15,7 +15,8 @@ module.exports = { .setRequired(true)) .addBooleanOption(o => o .setName("joke") - .setDescription("Is this command a joke?")), + .setDescription("Is this command a joke?") + .setRequired(true)), async execute(interaction) { await interaction.deferReply() warn(interaction, interaction.options.getUser("user", true), interaction.options.getString("reason", true), interaction.options.getBoolean("joke", true), interaction.client.db.Cases) From 8bc1b466ee79101fe3464580153957b5c3af3c40 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 4 Sep 2022 11:54:31 +0200 Subject: [PATCH 160/236] escapeMarkdown moment --- Util/Moderation.js | 24 ++-- commands/Misc/get.js | 30 +++-- commands/Misc/info.js | 8 +- commands/Moderation/unban.js | 6 +- package-lock.json | 252 ++++++++++++++++++----------------- 5 files changed, 167 insertions(+), 153 deletions(-) diff --git a/Util/Moderation.js b/Util/Moderation.js index de10a4f..bd87ab5 100644 --- a/Util/Moderation.js +++ b/Util/Moderation.js @@ -1,4 +1,4 @@ -const { User, GuildMember, EmbedBuilder } = require('discord.js') +const { User, GuildMember, EmbedBuilder, escapeMarkdown } = require('discord.js') const { logCha } = require('../config.json') async function ban(interaction, member, reason = "No reason provided", joke = false, db) { @@ -13,13 +13,13 @@ async function ban(interaction, member, reason = "No reason provided", joke = fa .setDescription(`**You have been banned from ${guild.name} for**: ${reason}`); const replyEmbed = new EmbedBuilder() .setColor("#43b582") - .setDescription(`**${member.user.tag} has been banned for:** ${reason}`); + .setDescription(`**${escapeMarkdown(member.user.tag)} has been banned for:** ${reason}`); const logEmbed = new EmbedBuilder() .setDescription("Ban") .setColor("#f04a47") .addFields( - { name: "**User**", value: member.user.tag, inline: true }, - { name: "**Moderator**", value: interaction.user.tag, inline: true }, + { name: "**User**", value: escapeMarkdown(member.user.tag), inline: true }, + { name: "**Moderator**", value: escapeMarkdown(interaction.user.tag), inline: true }, { name: "**Reason**", value: reason, inline: true } ); @@ -63,13 +63,13 @@ async function kick(interaction, member, reason = "No reason provided", joke = f .setDescription(`**You have been kicked from ${guild.name} for**: ${reason}`); const replyEmbed = new EmbedBuilder() .setColor("#43b582") - .setDescription(`**${member.user.tag} has been kicked for:** ${reason}`); + .setDescription(`**${escapeMarkdown(member.user.tag)} has been kicked for:** ${reason}`); const logEmbed = new EmbedBuilder() .setDescription("Kick") .setColor("#f04a47") .addFields( - { name: "**User**", value: member.user.tag, inline: true }, - { name: "**Moderator**", value: interaction.user.tag, inline: true }, + { name: "**User**", value: escapeMarkdown(member.user.tag), inline: true }, + { name: "**Moderator**", value: escapeMarkdown(interaction.user.tag), inline: true }, { name: "**Reason**", value: reason, inline: true } ); @@ -111,13 +111,13 @@ async function warn(interaction, user, reason, joke = false, db) { .setDescription(`**You have been warned from ${interaction.guild.name} for**: ${reason}`); const replyEmbed = new EmbedBuilder() .setColor("#43b582") - .setDescription(`**${user.tag} has been warned for:** ${reason}`); + .setDescription(`**${escapeMarkdown(user.tag)} has been warned for:** ${reason}`); const logEmbed = new EmbedBuilder() .setDescription("Warn") .setColor("#f04a47") .addFields( - { name: "**User**", value: user.tag, inline: true }, - { name: "**Moderator**", value: interaction.user.tag, inline: true }, + { name: "**User**", value: escapeMarkdown(user.tag), inline: true }, + { name: "**Moderator**", value: escapeMarkdown(interaction.user.tag), inline: true }, { name: "**Reason**", value: reason, inline: true } ); @@ -160,7 +160,7 @@ async function timeout(interaction, member, reason, unit, RealLen, joke = false, if (length > 2.419e+9) { replyEmbed.setColor("#FF0000"); - replyEmbed.setDescription(`**I cannot timeout ${member.user.tag} for *that* long! You provided a time longer than 28 days!**`); + replyEmbed.setDescription(`**I cannot timeout ${escapeMarkdown(member.user.tag)} for *that* long! You provided a time longer than 28 days!**`); await interaction.followUp({ embeds: [replyEmbed] }); } else if (length < 2.419e+9) { @@ -172,7 +172,7 @@ async function timeout(interaction, member, reason, unit, RealLen, joke = false, Executor: interaction.user.tag, userID: member.user.id }) - }).catch(err => {console.error(err);return interaction.followUp(`Couldn't ban ${member.user.tag}: \`\`\`${err}\`\`\``)}) + }).catch(err => {console.error(err);return interaction.followUp(`Couldn't timeout ${escapeMarkdown(member.user.tag)}: \`\`\`${err}\`\`\``)}) } replyEmbed diff --git a/commands/Misc/get.js b/commands/Misc/get.js index 314a8e7..3bdcf71 100644 --- a/commands/Misc/get.js +++ b/commands/Misc/get.js @@ -1,6 +1,6 @@ -const { SlashCommandBuilder } = require('discord.js') -const { PastebinDevKey } = require('../../config.json') -const axios = require('axios').default +const { SlashCommandBuilder } = require('discord.js'); +const { PastebinDevKey } = require('../../config.json'); +const axios = require('axios').default; module.exports = { data: new SlashCommandBuilder() @@ -54,6 +54,15 @@ module.exports = { .setName("hex") .setDescription("Do you want to get a hex value?") .setRequired(true)))) + .addSubcommandGroup(scg => scg + .setName("guild") + .setDescription("Get information about the guild") + .addSubcommand(sc => sc + .setName("description") + .setDescription("Get the description of the server")) + .addSubcommand(sc => sc + .setName("name") + .setDescription("Why would you?"))) .addSubcommand(sc => sc .setName("emojis") .setDescription("Getting all emojis of a server") @@ -68,9 +77,8 @@ module.exports = { .setDescription('If you also want to get the name of the stickers (default: true)'))), async execute(interaction) { await interaction.deferReply({ ephemeral: true }); - const sc = interaction.options.getSubcommand(); - switch (sc) { + switch (interaction.options.getSubcommand()) { case /*role*/ "name": { const guildRoles = await interaction.guild.roles.fetch(); @@ -123,6 +131,14 @@ module.exports = { else if (!ArrColor.length) interaction.followUp("No role found to have color"); break } + case /*guild*/ "description": { + await interaction.guild.fetch() + return interaction.followUp(`The description of this server is \`${interaction.guild.description}\``) + } + case /*guild*/ "name": { + await interaction.guild.fetch() + return interaction.followUp(`The name of this server is \`${interaction.guild.name}\``) + } case "emojis": { await interaction.guild.fetch(); let emojis = await interaction.guild.emojis.fetch(); @@ -167,9 +183,7 @@ module.exports = { } async function sendAsPastebin(data, interaction) { - axios({ - method: 'post', - url: 'https://pastebin.com/api/api_post.php', + axios.post("https://pastebin.com/api/api_post.php", { data: `api_dev_key=${PastebinDevKey}&api_option=paste&api_paste_private=1&api_paste_code=${data}&api_paste_expire_date=10M` }) .then(r => { diff --git a/commands/Misc/info.js b/commands/Misc/info.js index 7ac803b..4291383 100644 --- a/commands/Misc/info.js +++ b/commands/Misc/info.js @@ -1,4 +1,4 @@ -const { SlashCommandBuilder, GuildMember, EmbedBuilder } = require("discord.js") +const { SlashCommandBuilder, GuildMember, EmbedBuilder, escapeMarkdown } = require("discord.js"); module.exports = { data: new SlashCommandBuilder() @@ -24,10 +24,8 @@ module.exports = { if (!(member instanceof GuildMember)) { await interaction.guild.members.fetch(member); }; - - let Avatar = member.displayAvatarURL({extension: "png",size: 4096}); - replyEmbed.setAuthor({name: member.user.tag, iconURL: Avatar}); + replyEmbed.setAuthor({name: member.user.tag, iconURL: member.displayAvatarURL({extension: "png",size: 4096})}); replyEmbed.setColor(`#${Math.floor(Math.random()*16777215).toString(16)}`); replyEmbed.setThumbnail(Avatar); } @@ -70,7 +68,7 @@ module.exports = { replyEmbed.setAuthor({name: `${guild.name}`, iconURL: icon}); replyEmbed.setColor(`#${Math.floor(Math.random()*16777215).toString(16)}`); replyEmbed.addFields( - {name: "**Owner**", value: `${owner.user.tag}`, inline: true}, + {name: "**Owner**", value: `${escapeMarkdown(owner.user.tag)}`, inline: true}, {name: "**Active threads**", value: `${threads.threads.size}`, inline: true}, {name: "**Text channels**", value: `${text}`, inline: true}, {name: "**Voice channels**", value: `${voice}`, inline: true}, diff --git a/commands/Moderation/unban.js b/commands/Moderation/unban.js index bd21c52..3f263a7 100644 --- a/commands/Moderation/unban.js +++ b/commands/Moderation/unban.js @@ -1,4 +1,4 @@ -const { SlashCommandBuilder, EmbedBuilder } = require('discord.js'); +const { SlashCommandBuilder, EmbedBuilder, escapeMarkdown } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() @@ -21,10 +21,10 @@ module.exports = { if (reason === String) { replyEmbed.setColor("#00FF00"); - replyEmbed.setDescription(`**${user.tag} has been unbanned with the reason:** ${reason}`); + replyEmbed.setDescription(`**${escapeMarkdown(user.tag)} has been unbanned with the reason:** ${reason}`); } else if (reason !== String) { - replyEmbed.setDescription(`**${user.tag} has been unbanned**`); + replyEmbed.setDescription(`**${escapeMarkdown(user.tag)} has been unbanned**`); replyEmbed.setColor("#00FF00"); } interaction.reply({embeds:[replyEmbed]}); diff --git a/package-lock.json b/package-lock.json index 5766a12..d4df73a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,12 +18,12 @@ } }, "node_modules/@discordjs/builders": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.1.0.tgz", - "integrity": "sha512-EO8TSltiIc9Z1wE854wAFvv5AccqEtvjFmao9PPoxQhRaJ0hEb7FwWRTCA1jGg4ZWI3hcp4m+RET5ufZQz3rOg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.2.0.tgz", + "integrity": "sha512-ARy4BUTMU+S0ZI6605NDqfWO+qZqV2d/xfY32z3hVSsd9IaAKJBZ1ILTZLy87oIjW8+gUpQmk9Kt0ZP9bmmd8Q==", "dependencies": { "@sapphire/shapeshift": "^3.5.1", - "discord-api-types": "^0.36.3", + "discord-api-types": "^0.37.3", "fast-deep-equal": "^3.1.3", "ts-mixer": "^6.0.1", "tslib": "^2.4.0" @@ -33,14 +33,15 @@ } }, "node_modules/@discordjs/builders/node_modules/discord-api-types": { - "version": "0.36.3", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.36.3.tgz", - "integrity": "sha512-bz/NDyG0KBo/tY14vSkrwQ/n3HKPf87a0WFW/1M9+tXYK+vp5Z5EksawfCWo2zkAc6o7CClc0eff1Pjrqznlwg==" + "version": "0.37.5", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.5.tgz", + "integrity": "sha512-RhzoX02jw2M+n/AU5K74KTM4J8Sn3ZImUJvoA4lh+SDcrqi1ddSjrafciF4bECj4rPc2vHwoyyTNgbUwE8vbpA==" }, "node_modules/@discordjs/collection": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.7.0.tgz", "integrity": "sha512-R5i8Wb8kIcBAFEPLLf7LVBQKBDYUL+ekb23sOgpkpyGT+V4P7V83wTxcsqmX+PbqHt4cEHn053uMWfRqh/Z/nA==", + "deprecated": "no longer supported", "engines": { "node": ">=16.9.0" } @@ -49,6 +50,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-0.4.1.tgz", "integrity": "sha512-rtWy+AIfNlfjGkAgA2TJLASdqli07aTNQceVGT6RQQiQaEqV0nsfBO4WtDlDzk7PmO3w+InP3dpwEolJI5jz0A==", + "deprecated": "no longer supported", "dependencies": { "@discordjs/collection": "^0.7.0-dev", "@sapphire/async-queue": "^1.3.1", @@ -117,18 +119,18 @@ } }, "node_modules/@sapphire/async-queue": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.3.2.tgz", - "integrity": "sha512-rUpMLATsoAMnlN3gecAcr9Ecnw1vG7zi5Xr+IX22YzRzi1k9PF9vKzoT8RuEJbiIszjcimu3rveqUnvwDopz8g==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.0.tgz", + "integrity": "sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==", "engines": { "node": ">=v14.0.0", "npm": ">=7.0.0" } }, "node_modules/@sapphire/shapeshift": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.5.1.tgz", - "integrity": "sha512-7JFsW5IglyOIUQI1eE0g6h06D/Far6HqpcowRScgCiLSqTf3hhkPWCWotVTtVycnDCMYIwPeaw6IEPBomKC8pA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.6.0.tgz", + "integrity": "sha512-tu2WLRdo5wotHRvsCkspg3qMiP6ETC3Q1dns1Q5V6zKUki+1itq6AbhMwohF9ZcLoYqg+Y8LkgRRtVxxTQVTBQ==", "dependencies": { "fast-deep-equal": "^3.1.3", "lodash.uniqwith": "^4.5.0" @@ -175,9 +177,9 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "node_modules/@types/node": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.0.tgz", - "integrity": "sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==" + "version": "18.7.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.14.tgz", + "integrity": "sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==" }, "node_modules/@types/node-fetch": { "version": "2.6.2", @@ -202,9 +204,9 @@ } }, "node_modules/@types/validator": { - "version": "13.7.3", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.3.tgz", - "integrity": "sha512-DNviAE5OUcZ5s+XEQHRhERLg8fOp8gSgvyJ4aaFASx5wwaObm+PBwTIMXiOFm1QrSee5oYwEAYb7LMzX2O88gA==" + "version": "13.7.6", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.6.tgz", + "integrity": "sha512-uBsnWETsUagQ0n6G2wcXNIufpTNJir0zqzG4p62fhnwzs48d/iuOWEEo0d3iUxN7D+9R/8CSvWGKS+KmaD0mWA==" }, "node_modules/@types/ws": { "version": "8.5.3", @@ -437,20 +439,20 @@ "integrity": "sha512-RS1dMM6xuMhdHwQJ0T+XuCD7v1tKnyZ89Eq6q/DbOJWMbIh3ihgAzDhcF70QsFCtk9a5Gn9XU29S7eoEXuwQ5w==" }, "node_modules/discord.js": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.2.0.tgz", - "integrity": "sha512-kIGhEeOB1d9k7whL9HCCuRuzK2GL7i/hTesYINOZ2szWm4TOsBVwRU+i9O/zDb2M+Gvff4SJ4EpAtCVV0okgVw==", + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.3.0.tgz", + "integrity": "sha512-CpIwoAAuELiHSgVKRMzsCADS6ZlJwAZ9RlvcJYdEgS00aW36dSvXyBgE+S3pigkc7G+jU6BEalMUWIJFveqrBQ==", "dependencies": { - "@discordjs/builders": "^1.1.0", - "@discordjs/collection": "^1.0.1", - "@discordjs/rest": "^1.0.1", + "@discordjs/builders": "^1.2.0", + "@discordjs/collection": "^1.1.0", + "@discordjs/rest": "^1.1.0", "@sapphire/snowflake": "^3.2.2", "@types/ws": "^8.5.3", - "discord-api-types": "^0.36.3", + "discord-api-types": "^0.37.3", "fast-deep-equal": "^3.1.3", "lodash.snakecase": "^4.1.1", "tslib": "^2.4.0", - "undici": "^5.8.2", + "undici": "^5.9.1", "ws": "^8.8.1" }, "engines": { @@ -458,34 +460,34 @@ } }, "node_modules/discord.js/node_modules/@discordjs/collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.0.1.tgz", - "integrity": "sha512-5V/wswzR3r2RVYXLxxg4TvrAnBhVCNgHTXhC+OUtLoriJ072rPMHo+Iw1SS1vrCckp8Es40XM411+WkNRPaXFw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.1.0.tgz", + "integrity": "sha512-PQ2Bv6pnT7aGPCKWbvvNRww5tYCGpggIQVgpuF9TdDPeR6n6vQYxezXiLVOS9z2B62Dp4c+qepQ15SgJbLYtCQ==", "engines": { "node": ">=16.9.0" } }, "node_modules/discord.js/node_modules/@discordjs/rest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.0.1.tgz", - "integrity": "sha512-w08CTKVzzYYvKxEjXKOs9AdS7KQ1J502TrPfF8eCZ2lF6AfKuMP/32YgDakiwIyYTDjEQS/v0nKLSFcncHRMtg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.1.0.tgz", + "integrity": "sha512-yCrthRTQeUyNThQEpCk7bvQJlwQmz6kU0tf3dcWBv2WX3Bncl41x7Wc+v5b5OsIxfNYq38PvVtWircu9jtYZug==", "dependencies": { "@discordjs/collection": "^1.0.1", - "@sapphire/async-queue": "^1.3.2", + "@sapphire/async-queue": "^1.5.0", "@sapphire/snowflake": "^3.2.2", - "discord-api-types": "^0.36.3", - "file-type": "^17.1.4", + "discord-api-types": "^0.37.3", + "file-type": "^17.1.6", "tslib": "^2.4.0", - "undici": "^5.8.0" + "undici": "^5.9.1" }, "engines": { "node": ">=16.9.0" } }, "node_modules/discord.js/node_modules/discord-api-types": { - "version": "0.36.3", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.36.3.tgz", - "integrity": "sha512-bz/NDyG0KBo/tY14vSkrwQ/n3HKPf87a0WFW/1M9+tXYK+vp5Z5EksawfCWo2zkAc6o7CClc0eff1Pjrqznlwg==" + "version": "0.37.5", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.5.tgz", + "integrity": "sha512-RhzoX02jw2M+n/AU5K74KTM4J8Sn3ZImUJvoA4lh+SDcrqi1ddSjrafciF4bECj4rPc2vHwoyyTNgbUwE8vbpA==" }, "node_modules/dottie": { "version": "2.0.2", @@ -758,9 +760,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", "optional": true }, "node_modules/is-fullwidth-code-point": { @@ -889,9 +891,9 @@ } }, "node_modules/minipass": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.3.tgz", - "integrity": "sha512-N0BOsdFAlNRfmwMhjAsLVWOk7Ljmeb39iqFlsV1At+jqRhSUP9yeof8FyJu4imaJiSUp8vQebWD/guZwGQC8iA==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", + "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", "dependencies": { "yallist": "^4.0.0" }, @@ -996,9 +998,9 @@ } }, "node_modules/moment-timezone": { - "version": "0.5.34", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz", - "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", + "version": "0.5.37", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.37.tgz", + "integrity": "sha512-uEDzDNFhfaywRl+vwXxffjjq1q0Vzr+fcQpQ1bU0kbzorfS7zVtZnCnGc8mhWmF39d4g4YriF6kwA75mJKE/Zg==", "dependencies": { "moment": ">= 2.9.0" }, @@ -1069,16 +1071,16 @@ } }, "node_modules/node-gyp/node_modules/are-we-there-yet": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "optional": true, "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/node-gyp/node_modules/gauge": { @@ -1397,12 +1399,12 @@ } }, "node_modules/socks": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", - "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", + "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", "optional": true, "dependencies": { - "ip": "^1.1.5", + "ip": "^2.0.0", "smart-buffer": "^4.2.0" }, "engines": { @@ -1425,9 +1427,9 @@ } }, "node_modules/sqlite3": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.8.tgz", - "integrity": "sha512-f2ACsbSyb2D1qFFcqIXPfFscLtPVOWJr5GmUzYxf4W+0qelu5MWrR+FAQE1d5IUArEltBrzSDxDORG8P/IkqyQ==", + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.11.tgz", + "integrity": "sha512-4akFOr7u9lJEeAWLJxmwiV43DJcGV7w3ab7SjQFAFaTVyknY3rZjvXTKIVtWqUoY4xwhjwoHKYs2HDW2SoHVsA==", "hasInstallScript": true, "dependencies": { "@mapbox/node-pre-gyp": "^1.0.0", @@ -1559,9 +1561,9 @@ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "node_modules/undici": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.8.2.tgz", - "integrity": "sha512-3KLq3pXMS0Y4IELV045fTxqz04Nk9Ms7yfBBHum3yxsTR4XNn+ZCaUbf/mWitgYDAhsplQ0B1G4S5D345lMO3A==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.10.0.tgz", + "integrity": "sha512-c8HsD3IbwmjjbLvoZuRI26TZic+TSEe8FPMLLOkN1AfYRhdjnKBU6yL+IwcSCbdZiX4e5t0lfMDLDCqj4Sq70g==", "engines": { "node": ">=12.18" } @@ -1683,21 +1685,21 @@ }, "dependencies": { "@discordjs/builders": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.1.0.tgz", - "integrity": "sha512-EO8TSltiIc9Z1wE854wAFvv5AccqEtvjFmao9PPoxQhRaJ0hEb7FwWRTCA1jGg4ZWI3hcp4m+RET5ufZQz3rOg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.2.0.tgz", + "integrity": "sha512-ARy4BUTMU+S0ZI6605NDqfWO+qZqV2d/xfY32z3hVSsd9IaAKJBZ1ILTZLy87oIjW8+gUpQmk9Kt0ZP9bmmd8Q==", "requires": { "@sapphire/shapeshift": "^3.5.1", - "discord-api-types": "^0.36.3", + "discord-api-types": "^0.37.3", "fast-deep-equal": "^3.1.3", "ts-mixer": "^6.0.1", "tslib": "^2.4.0" }, "dependencies": { "discord-api-types": { - "version": "0.36.3", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.36.3.tgz", - "integrity": "sha512-bz/NDyG0KBo/tY14vSkrwQ/n3HKPf87a0WFW/1M9+tXYK+vp5Z5EksawfCWo2zkAc6o7CClc0eff1Pjrqznlwg==" + "version": "0.37.5", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.5.tgz", + "integrity": "sha512-RhzoX02jw2M+n/AU5K74KTM4J8Sn3ZImUJvoA4lh+SDcrqi1ddSjrafciF4bECj4rPc2vHwoyyTNgbUwE8vbpA==" } } }, @@ -1771,14 +1773,14 @@ } }, "@sapphire/async-queue": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.3.2.tgz", - "integrity": "sha512-rUpMLATsoAMnlN3gecAcr9Ecnw1vG7zi5Xr+IX22YzRzi1k9PF9vKzoT8RuEJbiIszjcimu3rveqUnvwDopz8g==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.0.tgz", + "integrity": "sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==" }, "@sapphire/shapeshift": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.5.1.tgz", - "integrity": "sha512-7JFsW5IglyOIUQI1eE0g6h06D/Far6HqpcowRScgCiLSqTf3hhkPWCWotVTtVycnDCMYIwPeaw6IEPBomKC8pA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.6.0.tgz", + "integrity": "sha512-tu2WLRdo5wotHRvsCkspg3qMiP6ETC3Q1dns1Q5V6zKUki+1itq6AbhMwohF9ZcLoYqg+Y8LkgRRtVxxTQVTBQ==", "requires": { "fast-deep-equal": "^3.1.3", "lodash.uniqwith": "^4.5.0" @@ -1814,9 +1816,9 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "@types/node": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.0.tgz", - "integrity": "sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==" + "version": "18.7.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.14.tgz", + "integrity": "sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==" }, "@types/node-fetch": { "version": "2.6.2", @@ -1840,9 +1842,9 @@ } }, "@types/validator": { - "version": "13.7.3", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.3.tgz", - "integrity": "sha512-DNviAE5OUcZ5s+XEQHRhERLg8fOp8gSgvyJ4aaFASx5wwaObm+PBwTIMXiOFm1QrSee5oYwEAYb7LMzX2O88gA==" + "version": "13.7.6", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.6.tgz", + "integrity": "sha512-uBsnWETsUagQ0n6G2wcXNIufpTNJir0zqzG4p62fhnwzs48d/iuOWEEo0d3iUxN7D+9R/8CSvWGKS+KmaD0mWA==" }, "@types/ws": { "version": "8.5.3", @@ -2028,46 +2030,46 @@ "integrity": "sha512-RS1dMM6xuMhdHwQJ0T+XuCD7v1tKnyZ89Eq6q/DbOJWMbIh3ihgAzDhcF70QsFCtk9a5Gn9XU29S7eoEXuwQ5w==" }, "discord.js": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.2.0.tgz", - "integrity": "sha512-kIGhEeOB1d9k7whL9HCCuRuzK2GL7i/hTesYINOZ2szWm4TOsBVwRU+i9O/zDb2M+Gvff4SJ4EpAtCVV0okgVw==", + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.3.0.tgz", + "integrity": "sha512-CpIwoAAuELiHSgVKRMzsCADS6ZlJwAZ9RlvcJYdEgS00aW36dSvXyBgE+S3pigkc7G+jU6BEalMUWIJFveqrBQ==", "requires": { - "@discordjs/builders": "^1.1.0", - "@discordjs/collection": "^1.0.1", - "@discordjs/rest": "^1.0.1", + "@discordjs/builders": "^1.2.0", + "@discordjs/collection": "^1.1.0", + "@discordjs/rest": "^1.1.0", "@sapphire/snowflake": "^3.2.2", "@types/ws": "^8.5.3", - "discord-api-types": "^0.36.3", + "discord-api-types": "^0.37.3", "fast-deep-equal": "^3.1.3", "lodash.snakecase": "^4.1.1", "tslib": "^2.4.0", - "undici": "^5.8.2", + "undici": "^5.9.1", "ws": "^8.8.1" }, "dependencies": { "@discordjs/collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.0.1.tgz", - "integrity": "sha512-5V/wswzR3r2RVYXLxxg4TvrAnBhVCNgHTXhC+OUtLoriJ072rPMHo+Iw1SS1vrCckp8Es40XM411+WkNRPaXFw==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.1.0.tgz", + "integrity": "sha512-PQ2Bv6pnT7aGPCKWbvvNRww5tYCGpggIQVgpuF9TdDPeR6n6vQYxezXiLVOS9z2B62Dp4c+qepQ15SgJbLYtCQ==" }, "@discordjs/rest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.0.1.tgz", - "integrity": "sha512-w08CTKVzzYYvKxEjXKOs9AdS7KQ1J502TrPfF8eCZ2lF6AfKuMP/32YgDakiwIyYTDjEQS/v0nKLSFcncHRMtg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.1.0.tgz", + "integrity": "sha512-yCrthRTQeUyNThQEpCk7bvQJlwQmz6kU0tf3dcWBv2WX3Bncl41x7Wc+v5b5OsIxfNYq38PvVtWircu9jtYZug==", "requires": { "@discordjs/collection": "^1.0.1", - "@sapphire/async-queue": "^1.3.2", + "@sapphire/async-queue": "^1.5.0", "@sapphire/snowflake": "^3.2.2", - "discord-api-types": "^0.36.3", - "file-type": "^17.1.4", + "discord-api-types": "^0.37.3", + "file-type": "^17.1.6", "tslib": "^2.4.0", - "undici": "^5.8.0" + "undici": "^5.9.1" } }, "discord-api-types": { - "version": "0.36.3", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.36.3.tgz", - "integrity": "sha512-bz/NDyG0KBo/tY14vSkrwQ/n3HKPf87a0WFW/1M9+tXYK+vp5Z5EksawfCWo2zkAc6o7CClc0eff1Pjrqznlwg==" + "version": "0.37.5", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.5.tgz", + "integrity": "sha512-RhzoX02jw2M+n/AU5K74KTM4J8Sn3ZImUJvoA4lh+SDcrqi1ddSjrafciF4bECj4rPc2vHwoyyTNgbUwE8vbpA==" } } }, @@ -2272,9 +2274,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", "optional": true }, "is-fullwidth-code-point": { @@ -2378,9 +2380,9 @@ } }, "minipass": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.3.tgz", - "integrity": "sha512-N0BOsdFAlNRfmwMhjAsLVWOk7Ljmeb39iqFlsV1At+jqRhSUP9yeof8FyJu4imaJiSUp8vQebWD/guZwGQC8iA==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", + "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", "requires": { "yallist": "^4.0.0" } @@ -2453,9 +2455,9 @@ "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" }, "moment-timezone": { - "version": "0.5.34", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz", - "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", + "version": "0.5.37", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.37.tgz", + "integrity": "sha512-uEDzDNFhfaywRl+vwXxffjjq1q0Vzr+fcQpQ1bU0kbzorfS7zVtZnCnGc8mhWmF39d4g4YriF6kwA75mJKE/Zg==", "requires": { "moment": ">= 2.9.0" } @@ -2503,9 +2505,9 @@ }, "dependencies": { "are-we-there-yet": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "optional": true, "requires": { "delegates": "^1.0.0", @@ -2715,12 +2717,12 @@ "optional": true }, "socks": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", - "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", + "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", "optional": true, "requires": { - "ip": "^1.1.5", + "ip": "^2.0.0", "smart-buffer": "^4.2.0" } }, @@ -2736,9 +2738,9 @@ } }, "sqlite3": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.8.tgz", - "integrity": "sha512-f2ACsbSyb2D1qFFcqIXPfFscLtPVOWJr5GmUzYxf4W+0qelu5MWrR+FAQE1d5IUArEltBrzSDxDORG8P/IkqyQ==", + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.11.tgz", + "integrity": "sha512-4akFOr7u9lJEeAWLJxmwiV43DJcGV7w3ab7SjQFAFaTVyknY3rZjvXTKIVtWqUoY4xwhjwoHKYs2HDW2SoHVsA==", "requires": { "@mapbox/node-pre-gyp": "^1.0.0", "node-addon-api": "^4.2.0", @@ -2833,9 +2835,9 @@ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "undici": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.8.2.tgz", - "integrity": "sha512-3KLq3pXMS0Y4IELV045fTxqz04Nk9Ms7yfBBHum3yxsTR4XNn+ZCaUbf/mWitgYDAhsplQ0B1G4S5D345lMO3A==" + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.10.0.tgz", + "integrity": "sha512-c8HsD3IbwmjjbLvoZuRI26TZic+TSEe8FPMLLOkN1AfYRhdjnKBU6yL+IwcSCbdZiX4e5t0lfMDLDCqj4Sq70g==" }, "unique-filename": { "version": "1.1.1", From f4359d77c48933f999915c7bfb78399e39f19462 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 4 Sep 2022 21:53:26 +0200 Subject: [PATCH 161/236] Great update, isn't it? --- .vscode/javascript.code-snippets | 16 +++ .vscode/settings.json | 17 +++ Util/Dos.js | 1 + Util/Moderation.js | 6 +- commands/Misc/get.js | 217 ++++++++++++++++++------------- 5 files changed, 161 insertions(+), 96 deletions(-) create mode 100644 .vscode/javascript.code-snippets create mode 100644 .vscode/settings.json diff --git a/.vscode/javascript.code-snippets b/.vscode/javascript.code-snippets new file mode 100644 index 0000000..847801f --- /dev/null +++ b/.vscode/javascript.code-snippets @@ -0,0 +1,16 @@ +{ + "Discord Slash Commands": { + "body": [ + "const { SlashCommandBuilder } = require('discord.js')", + "", + "module.exports = {", + " data: new SlashCommandBuilder()", + " .setName('$0')", + " .setDescription(\"\"),", + " async execute(interaction) {", + "", + " }", + "}" + ] + } +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..6ac2353 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,17 @@ +{ + "autoSnippet.snippets": [ + + { + "pattern": "**/*.h", + "snippet": "header-template" + }, + { + "pattern": "**/*.cpp", + "snippet": "body-template" + }, + { + "language": "javascript", + "snippet": "Discord Slash Commands" + } + ] +} \ No newline at end of file diff --git a/Util/Dos.js b/Util/Dos.js index b0ae287..d793153 100644 --- a/Util/Dos.js +++ b/Util/Dos.js @@ -208,6 +208,7 @@ async function ProcessDOS(client) { break } }; + break } case "deploy": { const { send } = require("../deploy-commands.js"); diff --git a/Util/Moderation.js b/Util/Moderation.js index bd87ab5..c90125e 100644 --- a/Util/Moderation.js +++ b/Util/Moderation.js @@ -73,9 +73,9 @@ async function kick(interaction, member, reason = "No reason provided", joke = f { name: "**Reason**", value: reason, inline: true } ); + if (member.user.id === interaction.user.id) return interaction.followUp("Why do you want to kick yourself?") + if (member.user.id === interaction.client.user.id) return interaction.followUp("❌ Why would you kick me? 😢") if (member.kickable) { - if (member.user.id === interaction.user.id) return interaction.followUp("Why do you want to kick yourself?") - if (member.user.id === interaction.client.user.id) return interaction.followUp("❌ Why would you kick me? 😢") await member.user.send({ embeds: [dmEmbed] }).catch(e => { console.error(`Couldn't message ${member.user.tag} (kick)`) }) @@ -172,7 +172,7 @@ async function timeout(interaction, member, reason, unit, RealLen, joke = false, Executor: interaction.user.tag, userID: member.user.id }) - }).catch(err => {console.error(err);return interaction.followUp(`Couldn't timeout ${escapeMarkdown(member.user.tag)}: \`\`\`${err}\`\`\``)}) + }).catch(err => { console.error(err); return interaction.followUp(`Couldn't timeout ${escapeMarkdown(member.user.tag)}: \`\`\`${err}\`\`\``) }) } replyEmbed diff --git a/commands/Misc/get.js b/commands/Misc/get.js index 3bdcf71..013ffac 100644 --- a/commands/Misc/get.js +++ b/commands/Misc/get.js @@ -1,4 +1,4 @@ -const { SlashCommandBuilder } = require('discord.js'); +const { SlashCommandBuilder, codeBlock } = require('discord.js'); const { PastebinDevKey } = require('../../config.json'); const axios = require('axios').default; @@ -6,8 +6,7 @@ module.exports = { data: new SlashCommandBuilder() .setName('get') .setDescription("Get something") - .addSubcommandGroup(scg => scg - .setName("role") + .addSubcommandGroup(scg => scg.setName("role") .setDescription("Getting info about roles") .addSubcommand(sc => sc .setName('name') @@ -54,130 +53,162 @@ module.exports = { .setName("hex") .setDescription("Do you want to get a hex value?") .setRequired(true)))) - .addSubcommandGroup(scg => scg - .setName("guild") + .addSubcommandGroup(scg => scg.setName("guild") .setDescription("Get information about the guild") .addSubcommand(sc => sc .setName("description") .setDescription("Get the description of the server")) .addSubcommand(sc => sc .setName("name") - .setDescription("Why would you?"))) - .addSubcommand(sc => sc - .setName("emojis") + .setDescription("Why would you?")) + .addSubcommand(sc => sc + .setName("features") + .setDescription("See the server's features") + .addStringOption(o => o + .setName("invite") + .setDescription("If you have an invite, you can give it, we'll send the features back")))) + .addSubcommand(sc => sc.setName("emojis") .setDescription("Getting all emojis of a server") .addBooleanOption(o => o .setName('name') .setDescription('If you also want to get the name of the emojis (default: true)'))) - .addSubcommand(sc => sc - .setName('stickers') + .addSubcommand(sc => sc.setName('stickers') .setDescription('Getting all stickers of a server') .addBooleanOption(o => o .setName('name') .setDescription('If you also want to get the name of the stickers (default: true)'))), async execute(interaction) { await interaction.deferReply({ ephemeral: true }); + const sc = interaction.options.getSubcommand(true) - switch (interaction.options.getSubcommand()) { - case /*role*/ "name": { - const guildRoles = await interaction.guild.roles.fetch(); + switch (interaction.options.getSubcommandGroup(true)) { + case "role": { + switch (sc) { + case "name": { + const guildRoles = await interaction.guild.roles.fetch(); - let ArrName = []; - guildRoles.forEach(e => { - if (e.name !== "@everyone") ArrName.push(e.name); - }); + let ArrName = []; + guildRoles.forEach(e => { + if (e.name !== "@everyone") ArrName.push(e.name); + }); - if (ArrName.length) { - await sendAsPastebin(ArrName.join("\n"), interaction) - } - else if (!ArrName.length) interaction.followUp("Why does not even a single role exist?"); - break - } - case /*role*/ "icon": { - const guildRoles = await interaction.guild.roles.fetch(); - const format = interaction.options.getString("format"); - const size = interaction.options.getNumber("size"); - let name = interaction.options.getBoolean('name'); - if (name === null) name = true; - let ArrayURL = []; + if (ArrName.length) { + await sendAsPastebin(ArrName.join("\n"), interaction) + } + else if (!ArrName.length) interaction.followUp("Why does not even a single role exist?"); + break + } + case "icon": { + const guildRoles = await interaction.guild.roles.fetch(); + const format = interaction.options.getString("format"); + const size = interaction.options.getNumber("size"); + let name = interaction.options.getBoolean('name'); + if (name === null) name = true; + let ArrayURL = []; - guildRoles.forEach(e => { - if (e.iconURL()) { - if (name) ArrayURL.push(`${e.iconURL({ format: format, size: size })} for ${e.name}`); - else if (!name) ArrayURL.push(`${e.iconURL({ format: format, size: size })}`); - }; - }); + guildRoles.forEach(e => { + if (e.iconURL()) { + if (name) ArrayURL.push(`${e.iconURL({ format: format, size: size })} for ${e.name}`); + else if (!name) ArrayURL.push(`${e.iconURL({ format: format, size: size })}`); + }; + }); - if (ArrayURL.length) { - if (name) sendAsPastebin(ArrayURL.join("\n"), interaction) - else if (!name) sendAsPastebin(ArrayURL.join(""), interaction) - } - else if (!ArrayURL.length) interaction.followUp("No role found with an icon"); - break - } - case /*role*/ 'color': { - const guildRoles = await interaction.guild.roles.fetch(); - const hex = interaction.options.getBoolean("hex"); - let ArrColor = []; + if (ArrayURL.length) { + if (name) sendAsPastebin(ArrayURL.join("\n"), interaction) + else if (!name) sendAsPastebin(ArrayURL.join(""), interaction) + } + else if (!ArrayURL.length) interaction.followUp("No role found with an icon"); + break + } + case 'color': { + const guildRoles = await interaction.guild.roles.fetch(); + const hex = interaction.options.getBoolean("hex"); + let ArrColor = []; - guildRoles.forEach(e => { - let color - if (hex) color = e.hexColor; else color = e.color; + guildRoles.forEach(e => { + let color + if (hex) color = e.hexColor; else color = e.color; - if (hex && color !== '#000000' || !hex && color !== 0) ArrColor.push(`${color} for ${e.name}`); - }); + if (hex && color !== '#000000' || !hex && color !== 0) ArrColor.push(`${color} for ${e.name}`); + }); - if (ArrColor.length) sendAsPastebin(ArrColor.join("\n"), interaction); - else if (!ArrColor.length) interaction.followUp("No role found to have color"); + if (ArrColor.length) sendAsPastebin(ArrColor.join("\n"), interaction); + else if (!ArrColor.length) interaction.followUp("No role found to have color"); + break + } + } break } - case /*guild*/ "description": { - await interaction.guild.fetch() - return interaction.followUp(`The description of this server is \`${interaction.guild.description}\``) - } - case /*guild*/ "name": { - await interaction.guild.fetch() - return interaction.followUp(`The name of this server is \`${interaction.guild.name}\``) - } - case "emojis": { - await interaction.guild.fetch(); - let emojis = await interaction.guild.emojis.fetch(); - let name = interaction.options.getBoolean('name'); - if (name === null) name = true; - let emojiArr = []; - - emojis.forEach(e => { - if (name) emojiArr.push(`${e.url} for ${e.name}`); - else if (!name) emojiArr.push(`${e.url}`); - }); - - if (emojiArr.length) { - if (name) sendAsPastebin(emojiArr.join("\n"), interaction); - else if (!name) sendAsPastebin(emojiArr.join(' '), interaction); + case "guild": { + switch (sc) { + case "description": { + await interaction.guild.fetch() + return interaction.followUp(`The description of this server is \`${interaction.guild.description}\``) + } + case "name": { + await interaction.guild.fetch() + return interaction.followUp(`The name of this server is \`${interaction.guild.name}\``) + } + case "features": { + if (!interaction.options.getString("invite")) { + await interaction.guild.fetch() + return interaction.followUp({ content: `${interaction.guild.name} has ${interaction.guild.features.length} features: \n${codeBlock(interaction.guild.features.join("\n"))}`}) + } + else if (interaction.options.getString("invite")) { + interaction.client.fetchInvite(interaction.options.getString("invite")) + .then(e => { + interaction.followUp({ content: `${e.guild.name} has ${e.guild.features.length} features: \n${codeBlock(e.guild.features.join("\n"))}` }) + }).catch(err => interaction.followUp(`There was an error while executing this command!\n\`\`\`${err} \`\`\``)) + } + break + } } - else if (!emojiArr.length) interaction.followUp({ content: "No emoji found" }) break } - case "stickers": { - await interaction.guild.fetch(); - let stickers = await interaction.guild.stickers.fetch(); - let name = interaction.options.getBoolean('name'); - if (name === null) name = true; - let stickersArr = []; + default: { + switch (sc) { + case "emojis": { + await interaction.guild.fetch(); + let emojis = await interaction.guild.emojis.fetch(); + let name = interaction.options.getBoolean('name'); + if (name === null) name = true; + let emojiArr = []; - stickers.forEach(e => { - if (name) stickersArr.push(`${e.url} for ${e.name}`); - else if (!name) stickersArr.push(`${e.url}`); - }); + emojis.forEach(e => { + if (name) emojiArr.push(`${e.url} for ${e.name}`); + else if (!name) emojiArr.push(`${e.url}`); + }); + if (emojiArr.length) { + if (name) sendAsPastebin(emojiArr.join("\n"), interaction); + else if (!name) sendAsPastebin(emojiArr.join(' '), interaction); + } + else if (!emojiArr.length) interaction.followUp({ content: "No emoji found" }) + break + } + case "stickers": { + await interaction.guild.fetch(); + let stickers = await interaction.guild.stickers.fetch(); + let name = interaction.options.getBoolean('name'); + if (name === null) name = true; + let stickersArr = []; - if (stickersArr.length) { - if (name) sendAsPastebin(stickersArr.join("\n"), interaction); - else if (!name) sendAsPastebin(stickersArr.join(' '), interaction) + stickers.forEach(e => { + if (name) stickersArr.push(`${e.url} for ${e.name}`); + else if (!name) stickersArr.push(`${e.url}`); + }); + + + if (stickersArr.length) { + if (name) sendAsPastebin(stickersArr.join("\n"), interaction); + else if (!name) sendAsPastebin(stickersArr.join(' '), interaction) + } + else if (!stickersArr.length) interaction.followUp("No stickers found"); + break + }; } - else if (!stickersArr.length) interaction.followUp("No stickers found"); break - }; + } } } } From f56237570417cfb2d49b56e9becce0d267a56e26 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Thu, 8 Sep 2022 19:13:11 +0200 Subject: [PATCH 162/236] Joke ban & kick is better --- .vscode/javascript.code-snippets | 28 ++++++++++++++++++++++++++++ .vscode/settings.json | 11 +++++------ Util/Moderation.js | 15 ++++++++------- 3 files changed, 41 insertions(+), 13 deletions(-) diff --git a/.vscode/javascript.code-snippets b/.vscode/javascript.code-snippets index 847801f..10e41c9 100644 --- a/.vscode/javascript.code-snippets +++ b/.vscode/javascript.code-snippets @@ -8,7 +8,35 @@ " .setName('$0')", " .setDescription(\"\"),", " async execute(interaction) {", + " ", + " }", + "}" + ] + }, + "Discord User Context Menu": { + "body": [ + "const { ContextMenuCommandBuilder } = require('discord.js');", "", + "module.exports = {", + " data: new ContextMenuCommandBuilder()", + " .setName('$0')", + " .setType(2),", + " async execute(interaction) {", + " ", + " }", + "}" + ] + }, + "Discord Message Context Menu": { + "body": [ + "const { ContextMenuCommandBuilder } = require('discord.js');", + "", + "module.exports = {", + " data: new ContextMenuCommandBuilder()", + " .setName('$0')", + " .setType(1),", + " async execute(interaction) {", + " ", " }", "}" ] diff --git a/.vscode/settings.json b/.vscode/settings.json index 6ac2353..ac5654c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,16 +1,15 @@ { "autoSnippet.snippets": [ - { - "pattern": "**/*.h", - "snippet": "header-template" + "pattern": "**/context menu/User/*.js", + "snippet": "Discord User Context Menu" }, { - "pattern": "**/*.cpp", - "snippet": "body-template" + "pattern": "**/context menu/Messages/*.js", + "snippet": "Discord Message Context Menu" }, { - "language": "javascript", + "pattern": "**/commands/*.js", "snippet": "Discord Slash Commands" } ] diff --git a/Util/Moderation.js b/Util/Moderation.js index c90125e..ec771df 100644 --- a/Util/Moderation.js +++ b/Util/Moderation.js @@ -23,10 +23,10 @@ async function ban(interaction, member, reason = "No reason provided", joke = fa { name: "**Reason**", value: reason, inline: true } ); - if (member.bannable) { - if (member.user.id === interaction.user.id) return interaction.followUp("Why do you want to ban yourself?") - if (member.user.id === interaction.client.user.id) return interaction.followUp("❌ Why would you ban me? 😢") + if (member.user.id === interaction.user.id) return interaction.followUp("Why do you want to ban yourself?") + if (member.user.id === interaction.client.user.id) return interaction.followUp("❌ Why would you ban me? 😢") + if (member.bannable) { await member.user.send({ embeds: [dmEmbed] }).catch(e => console.error(`Couldn't message ${member.user.tag} (ban)`)) if (!joke) { @@ -47,8 +47,8 @@ async function ban(interaction, member, reason = "No reason provided", joke = fa let logChannel = await interaction.guild.channels.fetch(logCha) await logChannel.send({ embeds: [logEmbed] }).catch(console.error) } - interaction.followUp({ embeds: [replyEmbed] }).catch(console.error) - } else if (!member.bannable) interaction.followUp("Erf, I can't do that"); + } + interaction.followUp({ embeds: [replyEmbed] }).catch(console.error) } async function kick(interaction, member, reason = "No reason provided", joke = false, db) { @@ -75,6 +75,7 @@ async function kick(interaction, member, reason = "No reason provided", joke = f if (member.user.id === interaction.user.id) return interaction.followUp("Why do you want to kick yourself?") if (member.user.id === interaction.client.user.id) return interaction.followUp("❌ Why would you kick me? 😢") + if (member.kickable) { await member.user.send({ embeds: [dmEmbed] }).catch(e => { console.error(`Couldn't message ${member.user.tag} (kick)`) }) @@ -97,8 +98,8 @@ async function kick(interaction, member, reason = "No reason provided", joke = f let logChannel = await interaction.guild.channels.fetch(logCha) await logChannel.send({ embeds: [logEmbed] }) } - interaction.followUp({ embeds: [replyEmbed] }) - } else if (!member.bannable) interaction.followUp("Erf, I can't do that"); + } + interaction.followUp({ embeds: [replyEmbed] }) } async function warn(interaction, user, reason, joke = false, db) { From 42a1f45a23e7ac534d164fc05710fda1450e2874 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 10 Sep 2022 11:44:53 +0200 Subject: [PATCH 163/236] This is better like that, isn't it? --- commands/Moderation/list.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/commands/Moderation/list.js b/commands/Moderation/list.js index 0d17563..b7b193f 100644 --- a/commands/Moderation/list.js +++ b/commands/Moderation/list.js @@ -22,7 +22,7 @@ module.exports = { .addStringOption(o => o .setName("user") .setDescription("The user to list kicks (Id)"))), - async execute(interaction) { + async execute(interaction) {/* const sc = interaction.options.getSubcommand(); switch (sc) { case "warns": { @@ -130,6 +130,7 @@ module.exports = { interaction.followUp({ content: "There is no kicks" }); }; }; - } + }*/ + interaction.reply("This command isn't ready yet") } }; From b1c65839ca488297637e2b137375257be8309456 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 11 Sep 2022 09:53:03 +0200 Subject: [PATCH 164/236] STARBOARD!!!!! --- Util/Dos.js | 6 +- Util/Moderation.js | 2 +- Util/Starboard.js | 74 +++++++++++++++++++++++++ Util/database.js | 9 --- commands/Misc/test.js | 42 ++++++++++++-- context menu/User/Moderation/Ban.js | 4 +- context menu/User/Moderation/Kick.js | 2 +- events/Client/ready.js | 1 + events/Interaction/InteractionCreate.js | 2 + events/Message/MessageCreate.js | 1 + events/Message/ReactionAdd.js | 17 ++++++ events/Message/ReactionRemove.js | 21 +++++++ events/Message/StarBoard.js | 54 ------------------ events/Message/StarBoardPt2.js | 19 ------- main.js | 4 +- package-lock.json | 48 ++++++++-------- 16 files changed, 186 insertions(+), 120 deletions(-) create mode 100644 Util/Starboard.js create mode 100644 events/Message/ReactionAdd.js create mode 100644 events/Message/ReactionRemove.js delete mode 100644 events/Message/StarBoard.js delete mode 100644 events/Message/StarBoardPt2.js diff --git a/Util/Dos.js b/Util/Dos.js index d793153..0fc443a 100644 --- a/Util/Dos.js +++ b/Util/Dos.js @@ -91,7 +91,7 @@ async function ProcessDOS(client) { }) } else { drvS.subdirs = client.guilds.cache.get(`${curServer}`) - drvS.subdirs.channels.cache.forEach(c => console.log(`${c.id} ${c.name.substring(0, 15).padEnd(16)} CHN`)) + drvS.subdirs.channels.cache.forEach(c => console.log(`${c.id.padEnd(19)} ${c.name.substring(0, 15).padEnd(16)} CHN`)) } } break @@ -212,13 +212,13 @@ async function ProcessDOS(client) { } case "deploy": { const { send } = require("../deploy-commands.js"); - const { token, guildId, beta } = require("../config.json"); + const { guildId, beta } = require("../config.json"); let all = [] client.commands.forEach(e => { if (!beta && e.name !== "test" || beta) all.push(e.data.toJSON()) }) client.contextMenu.forEach(e => all.push(e.data.toJSON())) - send(all, token, guildId, client.user.id); + send(all, client.token, guildId, client.user.id); break; } case 'c:': case 'C:': { diff --git a/Util/Moderation.js b/Util/Moderation.js index ec771df..aa62d72 100644 --- a/Util/Moderation.js +++ b/Util/Moderation.js @@ -122,7 +122,7 @@ async function warn(interaction, user, reason, joke = false, db) { { name: "**Reason**", value: reason, inline: true } ); - if (user.id === interaction.client.user.id) return interaction.followUp("I just deleted my own warn <:troll:990669002999201852>") + if (user.id === interaction.client.user.id) return interaction.followUp("I just deleted my own warn <:trollface:990669002999201852>") if (!joke) { db.create({ diff --git a/Util/Starboard.js b/Util/Starboard.js new file mode 100644 index 0000000..6ee23be --- /dev/null +++ b/Util/Starboard.js @@ -0,0 +1,74 @@ +const { Message } = require("discord.js"); +const { EmbedBuilder } = require("discord.js") +const { starBoardCha } = require("../config.json") + +async function StarboardAdd(reaction) { + if (reaction.emoji.name !== "⭐") return; + const message = reaction.message + let rcount = reaction.count + const db = reaction.client.db.Star + + //if (reaction.users.cache.has(message.author.id)) rcount -= 1 + + const dbData = await db.findOne({ where: { messageId: message.id } }) + + if (rcount >= 1 && !dbData) { + const starEmbed = createEmbed(message) + reaction.client.channels.cache.get(starBoardCha).send({ content: `**${rcount}**⭐ | <#${message.channel.id}>`, embeds: [starEmbed] }) + .then(async ownmessage => { + await db.create({ + messageId: message.id, + messageIdBot: ownmessage.id + }) + }) + .catch(console.error) + } + else if (dbData) { + const starEmbed = createEmbed(message) + reaction.client.channels.cache.get(starBoardCha).messages.fetch(dbData.messageIdBot) + .then(e => { + e.edit({ content: `**${rcount}**⭐ | <#${message.channel.id}>`, embeds: [starEmbed] }) + }) + } +} + +async function StarboardRemove(reaction) { + const message = reaction.message + let rcount = reaction.count + const db = reaction.client.db.Star + + if (reaction.users.cache.has(message.author.id)) rcount -= 1 + + const dbData = await db.findOne({ where: { messageId: message.id } }) + if (!dbData) return + + const avatar = reaction.message.author.avatarURL({ extension: "png", size: 4096 }) + const starEmbed = createEmbed(message) + + reaction.client.channels.cache.get(starBoardCha).messages.fetch(dbData.messageIdBot) + .then(e => { + e.edit({ content: `**${rcount}** ⭐ | <#${message.channel.id}>`, embeds: [starEmbed] }) + }) + +} + +function createEmbed(message) { + const avatar = message.author.avatarURL({ extension: "png", size: 4096 }) + + const embed = new EmbedBuilder() + .setAuthor({ name: message.author.tag, iconURL: typeof avatar === "string" ? avatar : undefined }) + .setColor("#337fd5") + .setTimestamp(new Date()) + .addFields( + { name: "_ _", value: `[Click to jump to message!](${message.url})` } + ) + + if (message.content) embed.setDescription(message.content) + else if (!message.content && message.embeds[0].description) embed.setDescription(message.embeds[0].description) + + if (message.attachments.size) embed.setImage(message.attachments.first().url) + + return embed +} + +module.exports = { StarboardAdd, StarboardRemove } \ No newline at end of file diff --git a/Util/database.js b/Util/database.js index a77eeb5..11ec743 100644 --- a/Util/database.js +++ b/Util/database.js @@ -1,7 +1,6 @@ const Sequelize = require('sequelize'); const { sqlPass } = require('../config.json') -// Once the database system will be changed, even minor change, pls change the 'password' entry to sqlPass const sequelize = new Sequelize('database', 'user', sqlPass, { host: 'localhost', dialect: 'sqlite', @@ -18,14 +17,6 @@ const Star = sequelize.define('message', { type: Sequelize.TEXT, defaultValue: null, unique: true, - }, - StaredItself: { - type: Sequelize.BOOLEAN, - defaultValue: false, - }, - NumberStar: { - type: Sequelize.NUMBER, - defaultValue: 0, } }) diff --git a/commands/Misc/test.js b/commands/Misc/test.js index 4b9de46..1a36c72 100644 --- a/commands/Misc/test.js +++ b/commands/Misc/test.js @@ -16,20 +16,52 @@ module.exports = { .setRequired(true) ) .addBooleanOption(o => o - .setName("ephemeral?") + .setName("ephemeral") .setDescription("Is the message hidden from eveyone?") .setRequired(true) ) ) ), async execute(interaction) { - const sc = interaction.option.getSubcommand() - - switch (sc) { + switch (interaction.option.getSubcommand()) { case "simple": { interaction.reply({ content: interaction.option.getString("content"), ephemeral: interaction.option.getBoolean("ephemeral") }) } - + case "other": { + const { ActionRowBuilder, SelectMenuBuilder, EmbedBuilder } = require("discord.js"); + const mes = client.channels.cache.get("990334296801820692").send( + { + embeds: [ + new EmbedBuilder() + .setTitle("Roles!") + .setDescription("Chose your roles here!") + .setColor("#ff0000") + ], + components: [ + new ActionRowBuilder() + .addComponents( + new SelectMenuBuilder() + .setCustomId("role-selector") + .setPlaceholder("Nothing selected") + .setMinValues(1) + .setMaxValues(10) + .addOptions( + { value: '990334254573551646', label: 'Chaotic', emoji: { name: '🔥' }, description: 'Access to chaos channel' }, + { value: '990334249875939438', label: 'Poller', emoji: { name: '🗳️' }, description: 'Get pinged for polls' }, + { value: '990334247061586012', label: 'New Beta', emoji: { name: '🆕' }, description: 'Get pinged for new betas' }, + { value: '990334248416333846', label: 'New Update', emoji: { name: '🆙' }, description: 'Get pinged for new updates' }, + { value: '990334250974838794', label: 'Announcements', emoji: { name: '📣' }, description: 'Get pinged for announcements' }, + { value: '990334251801120849', label: 'Wiki Announcements', emoji: { name: '📘' }, description: 'Get pinged for wiki announcements' }, + { value: '990334246038175805', label: 'Serious View', emoji: { name: '😐' }, description: 'Access to serious channel' }, + { value: '990334277545762826', label: 'Bot', emoji: { name: '🤖' }, description: 'Get pinged for bot updates' }, + { value: '990334245119606915', label: 'Archive View', emoji: { name: '🏛️' }, description: 'Access #the-great-archive where all channel are archived' }, + { value: '1018241973959790753', label: "Giveaway", emoji: { name: "🎁" }, description: "Get ping for Giveaways!"} + ) + ) + ] + } + ); + } } } } \ No newline at end of file diff --git a/context menu/User/Moderation/Ban.js b/context menu/User/Moderation/Ban.js index 3c57ee4..9d88b48 100644 --- a/context menu/User/Moderation/Ban.js +++ b/context menu/User/Moderation/Ban.js @@ -1,4 +1,4 @@ -const { ContextMenuCommandBuilder, ModalBuilder, ActionRowBuilder, TextInputBuilder, TextInputStyle } = require("discord.js"); +const { ContextMenuCommandBuilder, ModalBuilder, ActionRowBuilder, TextInputBuilder, TextInputStyle, escapeMarkdown } = require("discord.js"); const { ban } = require("../../../Util/Moderation"); module.exports = { @@ -16,6 +16,6 @@ module.exports = { await e.deferReply(); await e.deleteReply() ban(interaction, interaction.targetMember, e.fields.getTextInputValue("reason"), undefined, e.client.db.Cases) }).catch(err => { console.error(err); interaction.editReply({content: `There was an error while executing this context menu!\n\`\`\`${err} \`\`\``}).catch(e => {})}); - } + } else interaction.reply({content: `${escapeMarkdown(interaction.targetMember.user.tag)} can't be banned!`, ephemeral: true}) } } \ No newline at end of file diff --git a/context menu/User/Moderation/Kick.js b/context menu/User/Moderation/Kick.js index 278fa6e..78fb1b8 100644 --- a/context menu/User/Moderation/Kick.js +++ b/context menu/User/Moderation/Kick.js @@ -16,6 +16,6 @@ module.exports = { e.deferReply() kick(e, interaction.targetMember, e.fields.getTextInputValue("reason"), undefined, interaction.client.db.Cases) }).catch(err => { console.error(err); interaction.editReply({content: `There was an error while executing this context menu!\n\`\`\`${err} \`\`\``, ephemeral: true}).catch(e => {})}); - } + } else interaction.reply({content: `${escapeMarkdown(interaction.targetMember.user.tag)} can't be banned!`, ephemeral: true}) } } \ No newline at end of file diff --git a/events/Client/ready.js b/events/Client/ready.js index 1305099..1dee5cd 100644 --- a/events/Client/ready.js +++ b/events/Client/ready.js @@ -17,6 +17,7 @@ module.exports = { guildFetched.members.fetchMe() console.log(`Channels of ${guildFetched.name} loaded (${guildFetched.id})`) }); + if (showLink) { console.log(client.generateInvite({ permissions: PermissionsBitField.All, diff --git a/events/Interaction/InteractionCreate.js b/events/Interaction/InteractionCreate.js index 2629f2b..fa2f856 100644 --- a/events/Interaction/InteractionCreate.js +++ b/events/Interaction/InteractionCreate.js @@ -2,6 +2,8 @@ module.exports = { name: 'interactionCreate', on: true, async execute(interaction) { + if (interaction.partial) return; + if (interaction.type == 2) { if (interaction.commandType == 1) { const command = client.commands.get(interaction.commandName); diff --git a/events/Message/MessageCreate.js b/events/Message/MessageCreate.js index c96d8ab..2f0e701 100644 --- a/events/Message/MessageCreate.js +++ b/events/Message/MessageCreate.js @@ -2,6 +2,7 @@ module.exports = { name: "messageCreate", on: true, async execute(messages) { + if (message.partial) try {message.fetch} catch {console.error("A patial message couldn't get fetched"); return}; if (messages.author.id === client.user.id) return; client.messages.forEach(e => { if (e.code) e.code(messages).catch(console.error) }) diff --git a/events/Message/ReactionAdd.js b/events/Message/ReactionAdd.js new file mode 100644 index 0000000..38e7a72 --- /dev/null +++ b/events/Message/ReactionAdd.js @@ -0,0 +1,17 @@ +const { StarboardAdd } = require('../../Util/Starboard.js'); +const { starBoard } = require("../../config.json") + +module.exports = { + name: 'messageReactionAdd', + on: true, + async execute(reaction) { + if (!reaction.partial) { + if (starBoard) StarboardAdd(reaction) + } + else if (reaction.partial) { + reaction.fetch().then(e => { + if (starBoard) StarboardAdd(e) + }) + } + } +}; \ No newline at end of file diff --git a/events/Message/ReactionRemove.js b/events/Message/ReactionRemove.js new file mode 100644 index 0000000..7c09df2 --- /dev/null +++ b/events/Message/ReactionRemove.js @@ -0,0 +1,21 @@ +const { StarboardRemove } = require("../../Util/Starboard.js"); +const { starBoard } = require("../../config.json") + +module.exports = { + name: 'messageReactionRemove', + on: true, + async execute(reaction) { + if (!reaction.partial) { + if (starBoard) StarboardRemove(reaction) + } + else if (reaction.partial) { + if (reaction.message.id != undefined && + reaction.count != undefined && + reaction.emoji.name != undefined && + reaction.message.content != undefined && + reaction.message.author.id != undefined) { + if (starBoard) StarboardRemove(reaction) + } + } + } +} \ No newline at end of file diff --git a/events/Message/StarBoard.js b/events/Message/StarBoard.js deleted file mode 100644 index 737102b..0000000 --- a/events/Message/StarBoard.js +++ /dev/null @@ -1,54 +0,0 @@ -const { starBoardCha, starBoard } = require('../../config.json'); -const { MessageEmbed } = require('discord.js'); - -module.exports = { - name: 'messageReactionAdd', - on: true, - async execute(reaction, user) { - if (!starBoard) return; - const message = reaction.message; - if (message.channel.id === starBoardCha || reaction.emoji.name !== '⭐') return; - let db = reaction.client.db.Star; - - await db.findOrCreate({ where: { messageId: message.id } }); - - // if (message.author.id === user.id) db.update({StaredItself: true}, {where: { messageId: message.id }}); - let dbInfo = db.findOne({ where: { messageId: message.id }, attributes: ['messageId', 'messageIdBot', 'StaredItself', 'StaredItself'] }); - let count = reaction.count; - db.update({ NumberStar: count }, { where: { messageId: message.id } }) - - if (dbInfo.StaredItself) count=count-1; - if (count < 1) return; - - const starEmbed = new MessageEmbed() - .setColor('#337fd5') - .setAuthor({ name: message.author.tag, iconURL: message.author.displayAvatarURL({ extension: 'png', size: 4096 })}) - .setThumbnail() - .setDescription(`${message.content}`) - .addField("_ _", `[Click to jump to message!](https://discord.com/channels/${message.guild.id}/${message.channel.id}/${message.id})`); - - if (message.attachments) { - message.attachments.forEach(e => { - console.log(message.attachments.contentType); - if (message.attachments.contentType === "Image") { - starEmbed.setImage(e.url); - }; - }); - }; - - let starCha = await message.client.guilds.cache.get('974018133021048882').channels.fetch(starBoardCha); - - console.log(dbInfo.messageIdBot) - if (dbInfo.messageIdBot === undefined) { - let MessageSent = await starCha.send({ content: `⭐ **${count}** | ${message.channel}`, embeds: [starEmbed] }); - db.update({messageIdBot: MessageSent.id}, { where: {messageId: message.id} }); - } - - else if (dbInfo.messageIdBot !== undefined) { - let MessageUpdate = await starCha.messages.fetch(dbInfo.messageIdBot); - MessageUpdate.forEach(e => { - e.edit({ content: `⭐ **${count}** | ${message.channel}`, embeds: [starEmbed] }); - }); - }; - } -}; \ No newline at end of file diff --git a/events/Message/StarBoardPt2.js b/events/Message/StarBoardPt2.js deleted file mode 100644 index ac970e2..0000000 --- a/events/Message/StarBoardPt2.js +++ /dev/null @@ -1,19 +0,0 @@ -const {starBoard} = require("../../config.json"); - -module.exports = { - name: 'messageReactionRemove', - on: true, - async execute(reaction, user) { - if (!starBoard) return; - if (reaction.emoji.name !== '⭐') return; - - const db = reaction.client.db.Star; - const message = reaction.message; - let dbInfo = db.findOne({ where: { messageId: message.id }}); - - if (message.author.id === user.id) return db.update({StaredItself: false}, {where: { messageId: message.id }}); - - let count = dbInfo.NumberStar-1; - db.update({ NumberStar: count }, {where: {messageId: message.id}}) - } -}; \ No newline at end of file diff --git a/main.js b/main.js index e73afc3..39c83fa 100644 --- a/main.js +++ b/main.js @@ -1,8 +1,8 @@ -const { Client } = require('discord.js'); +const { Client, Partials } = require('discord.js'); const { GetJsFile } = require('./Util/GetJSFile.js') const { token } = require('./config.json'); -client = new Client({ intents: 34306, presence: { status: 'idle' }}); +client = new Client({ intents: 34306, presence: { status: 'idle' }, partials: [Partials.Message, Partials.Reaction, Partials.Channel]}); client.db = require('./Util/database'); GetJsFile(client) diff --git a/package-lock.json b/package-lock.json index d4df73a..30ad856 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,9 +33,9 @@ } }, "node_modules/@discordjs/builders/node_modules/discord-api-types": { - "version": "0.37.5", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.5.tgz", - "integrity": "sha512-RhzoX02jw2M+n/AU5K74KTM4J8Sn3ZImUJvoA4lh+SDcrqi1ddSjrafciF4bECj4rPc2vHwoyyTNgbUwE8vbpA==" + "version": "0.37.8", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.8.tgz", + "integrity": "sha512-uhol9KQ2moExZItMpuDMkf0R7sqqNHqcJBFN7S5iSdXBVCMRO7sC0GoyuRrv6ZDBYxoFU6nDy4dv0nld/aysqA==" }, "node_modules/@discordjs/collection": { "version": "0.7.0", @@ -77,9 +77,9 @@ "optional": true }, "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz", - "integrity": "sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", + "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", "dependencies": { "detect-libc": "^2.0.0", "https-proxy-agent": "^5.0.0", @@ -177,9 +177,9 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "node_modules/@types/node": { - "version": "18.7.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.14.tgz", - "integrity": "sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==" + "version": "18.7.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.16.tgz", + "integrity": "sha512-EQHhixfu+mkqHMZl1R2Ovuvn47PUw18azMJOTwSZr9/fhzHNGXAJ0ma0dayRVchprpCj0Kc1K1xKoWaATWF1qg==" }, "node_modules/@types/node-fetch": { "version": "2.6.2", @@ -485,9 +485,9 @@ } }, "node_modules/discord.js/node_modules/discord-api-types": { - "version": "0.37.5", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.5.tgz", - "integrity": "sha512-RhzoX02jw2M+n/AU5K74KTM4J8Sn3ZImUJvoA4lh+SDcrqi1ddSjrafciF4bECj4rPc2vHwoyyTNgbUwE8vbpA==" + "version": "0.37.8", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.8.tgz", + "integrity": "sha512-uhol9KQ2moExZItMpuDMkf0R7sqqNHqcJBFN7S5iSdXBVCMRO7sC0GoyuRrv6ZDBYxoFU6nDy4dv0nld/aysqA==" }, "node_modules/dottie": { "version": "2.0.2", @@ -1697,9 +1697,9 @@ }, "dependencies": { "discord-api-types": { - "version": "0.37.5", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.5.tgz", - "integrity": "sha512-RhzoX02jw2M+n/AU5K74KTM4J8Sn3ZImUJvoA4lh+SDcrqi1ddSjrafciF4bECj4rPc2vHwoyyTNgbUwE8vbpA==" + "version": "0.37.8", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.8.tgz", + "integrity": "sha512-uhol9KQ2moExZItMpuDMkf0R7sqqNHqcJBFN7S5iSdXBVCMRO7sC0GoyuRrv6ZDBYxoFU6nDy4dv0nld/aysqA==" } } }, @@ -1737,9 +1737,9 @@ "optional": true }, "@mapbox/node-pre-gyp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz", - "integrity": "sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", + "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", "requires": { "detect-libc": "^2.0.0", "https-proxy-agent": "^5.0.0", @@ -1816,9 +1816,9 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "@types/node": { - "version": "18.7.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.14.tgz", - "integrity": "sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==" + "version": "18.7.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.16.tgz", + "integrity": "sha512-EQHhixfu+mkqHMZl1R2Ovuvn47PUw18azMJOTwSZr9/fhzHNGXAJ0ma0dayRVchprpCj0Kc1K1xKoWaATWF1qg==" }, "@types/node-fetch": { "version": "2.6.2", @@ -2067,9 +2067,9 @@ } }, "discord-api-types": { - "version": "0.37.5", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.5.tgz", - "integrity": "sha512-RhzoX02jw2M+n/AU5K74KTM4J8Sn3ZImUJvoA4lh+SDcrqi1ddSjrafciF4bECj4rPc2vHwoyyTNgbUwE8vbpA==" + "version": "0.37.8", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.8.tgz", + "integrity": "sha512-uhol9KQ2moExZItMpuDMkf0R7sqqNHqcJBFN7S5iSdXBVCMRO7sC0GoyuRrv6ZDBYxoFU6nDy4dv0nld/aysqA==" } } }, From 126a30932b5c4f2d95310b4afe72532cffacaa91 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 11 Sep 2022 10:07:15 +0200 Subject: [PATCH 165/236] Oops... that's a big error --- Util/Starboard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Util/Starboard.js b/Util/Starboard.js index 6ee23be..ce9bef2 100644 --- a/Util/Starboard.js +++ b/Util/Starboard.js @@ -12,7 +12,7 @@ async function StarboardAdd(reaction) { const dbData = await db.findOne({ where: { messageId: message.id } }) - if (rcount >= 1 && !dbData) { + if (rcount >= 5 && !dbData) { const starEmbed = createEmbed(message) reaction.client.channels.cache.get(starBoardCha).send({ content: `**${rcount}**⭐ | <#${message.channel.id}>`, embeds: [starEmbed] }) .then(async ownmessage => { From 21774279d8a80732d15b4f1a2bd4b8b141b1bc28 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 11 Sep 2022 10:08:39 +0200 Subject: [PATCH 166/236] wrong one, the bot will crash at every posted message.... bruh --- events/Message/MessageCreate.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/events/Message/MessageCreate.js b/events/Message/MessageCreate.js index 2f0e701..40b8fc9 100644 --- a/events/Message/MessageCreate.js +++ b/events/Message/MessageCreate.js @@ -2,7 +2,7 @@ module.exports = { name: "messageCreate", on: true, async execute(messages) { - if (message.partial) try {message.fetch} catch {console.error("A patial message couldn't get fetched"); return}; + if (messages.partial) try {messages.fetch} catch {console.error("A patial message couldn't get fetched"); return}; if (messages.author.id === client.user.id) return; client.messages.forEach(e => { if (e.code) e.code(messages).catch(console.error) }) From 8524c988ca9a2ac7f7b0147c0809a2a63df059c6 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 11 Sep 2022 10:54:30 +0200 Subject: [PATCH 167/236] How did i forget that??? --- events/Message/MessageCreate.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/events/Message/MessageCreate.js b/events/Message/MessageCreate.js index 40b8fc9..6c8d746 100644 --- a/events/Message/MessageCreate.js +++ b/events/Message/MessageCreate.js @@ -2,7 +2,7 @@ module.exports = { name: "messageCreate", on: true, async execute(messages) { - if (messages.partial) try {messages.fetch} catch {console.error("A patial message couldn't get fetched"); return}; + if (messages.partial) try {await messages.fetch()} catch {console.error("A patial message couldn't get fetched"); return}; if (messages.author.id === client.user.id) return; client.messages.forEach(e => { if (e.code) e.code(messages).catch(console.error) }) From 6e92c1d0834762e9a54b966f12deb76560de4969 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 11 Sep 2022 18:37:46 +0200 Subject: [PATCH 168/236] If you really want it --- Util/Starboard.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Util/Starboard.js b/Util/Starboard.js index ce9bef2..13a8573 100644 --- a/Util/Starboard.js +++ b/Util/Starboard.js @@ -1,4 +1,3 @@ -const { Message } = require("discord.js"); const { EmbedBuilder } = require("discord.js") const { starBoardCha } = require("../config.json") @@ -14,7 +13,7 @@ async function StarboardAdd(reaction) { if (rcount >= 5 && !dbData) { const starEmbed = createEmbed(message) - reaction.client.channels.cache.get(starBoardCha).send({ content: `**${rcount}**⭐ | <#${message.channel.id}>`, embeds: [starEmbed] }) + reaction.client.channels.cache.get(starBoardCha).send({ content: `⭐ **${rcount}** | <#${message.channel.id}>`, embeds: [starEmbed] }) .then(async ownmessage => { await db.create({ messageId: message.id, @@ -27,7 +26,7 @@ async function StarboardAdd(reaction) { const starEmbed = createEmbed(message) reaction.client.channels.cache.get(starBoardCha).messages.fetch(dbData.messageIdBot) .then(e => { - e.edit({ content: `**${rcount}**⭐ | <#${message.channel.id}>`, embeds: [starEmbed] }) + e.edit({ content: `⭐ **${rcount}** | <#${message.channel.id}>`, embeds: [starEmbed] }) }) } } @@ -42,12 +41,11 @@ async function StarboardRemove(reaction) { const dbData = await db.findOne({ where: { messageId: message.id } }) if (!dbData) return - const avatar = reaction.message.author.avatarURL({ extension: "png", size: 4096 }) const starEmbed = createEmbed(message) reaction.client.channels.cache.get(starBoardCha).messages.fetch(dbData.messageIdBot) .then(e => { - e.edit({ content: `**${rcount}** ⭐ | <#${message.channel.id}>`, embeds: [starEmbed] }) + e.edit({ content: `⭐ **${rcount}** | <#${message.channel.id}>`, embeds: [starEmbed] }) }) } From d678530d865dd8d7e83c67a425d21d25c026980e Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 11 Sep 2022 21:30:39 +0200 Subject: [PATCH 169/236] Starboard button! --- Util/Starboard.js | 29 ++++++++---- commands/Moderation/role.js | 88 ------------------------------------- 2 files changed, 20 insertions(+), 97 deletions(-) delete mode 100644 commands/Moderation/role.js diff --git a/Util/Starboard.js b/Util/Starboard.js index 13a8573..8909614 100644 --- a/Util/Starboard.js +++ b/Util/Starboard.js @@ -1,4 +1,4 @@ -const { EmbedBuilder } = require("discord.js") +const { ButtonBuilder, ActionRowBuilder, EmbedBuilder } = require("discord.js") const { starBoardCha } = require("../config.json") async function StarboardAdd(reaction) { @@ -7,13 +7,15 @@ async function StarboardAdd(reaction) { let rcount = reaction.count const db = reaction.client.db.Star - //if (reaction.users.cache.has(message.author.id)) rcount -= 1 + if (reaction.users.cache.has(message.author.id)) rcount-- const dbData = await db.findOne({ where: { messageId: message.id } }) if (rcount >= 5 && !dbData) { const starEmbed = createEmbed(message) - reaction.client.channels.cache.get(starBoardCha).send({ content: `⭐ **${rcount}** | <#${message.channel.id}>`, embeds: [starEmbed] }) + const button = createButton(message.url) + + reaction.client.channels.cache.get(starBoardCha).send({ content: `⭐ **${rcount}** | <#${message.channel.id}>`, embeds: [starEmbed], components: [button] }) .then(async ownmessage => { await db.create({ messageId: message.id, @@ -24,9 +26,11 @@ async function StarboardAdd(reaction) { } else if (dbData) { const starEmbed = createEmbed(message) + const button = createButton(message.url) + reaction.client.channels.cache.get(starBoardCha).messages.fetch(dbData.messageIdBot) - .then(e => { - e.edit({ content: `⭐ **${rcount}** | <#${message.channel.id}>`, embeds: [starEmbed] }) + .then((e) => { + e.edit({ content: `⭐ **${rcount}** | <#${message.channel.id}>`, embeds: [starEmbed], components: [button] }) }) } } @@ -42,10 +46,11 @@ async function StarboardRemove(reaction) { if (!dbData) return const starEmbed = createEmbed(message) + const button = createButton(message.url) reaction.client.channels.cache.get(starBoardCha).messages.fetch(dbData.messageIdBot) .then(e => { - e.edit({ content: `⭐ **${rcount}** | <#${message.channel.id}>`, embeds: [starEmbed] }) + e.edit({ content: `⭐ **${rcount}** | <#${message.channel.id}>`, embeds: [starEmbed], components: [button] }) }) } @@ -57,9 +62,6 @@ function createEmbed(message) { .setAuthor({ name: message.author.tag, iconURL: typeof avatar === "string" ? avatar : undefined }) .setColor("#337fd5") .setTimestamp(new Date()) - .addFields( - { name: "_ _", value: `[Click to jump to message!](${message.url})` } - ) if (message.content) embed.setDescription(message.content) else if (!message.content && message.embeds[0].description) embed.setDescription(message.embeds[0].description) @@ -69,4 +71,13 @@ function createEmbed(message) { return embed } +function createButton(url) { + return new ActionRowBuilder() + .addComponents(new ButtonBuilder() + .setLabel("Original Message") + .setStyle("Link") + .setURL(url) + ) +} + module.exports = { StarboardAdd, StarboardRemove } \ No newline at end of file diff --git a/commands/Moderation/role.js b/commands/Moderation/role.js deleted file mode 100644 index a5e56ed..0000000 --- a/commands/Moderation/role.js +++ /dev/null @@ -1,88 +0,0 @@ -const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') - -module.exports = { - data: new SlashCommandBuilder() - .setName('role') - .setDescription('Give role to users') - .addSubcommand(sc => sc - .setName('give') - .setDescription('Give a role to a user') - .addUserOption(o => o - .setName('user') - .setDescription("The user to which give the role") - .setRequired(true)) - .addRoleOption(o => o - .setName('role') - .setDescription("The role to give to the user") - .setRequired(true))) - .addSubcommand(sc => sc - .setName('remove') - .setDescription("Remove a role from a user") - .addUserOption(o => o - .setName("user") - .setDescription('The user to remove the role') - .setRequired(true)) - .addRoleOption(o => o - .setName('role') - .setDescription("The role to remove from the user") - .setRequired(true))) - .addSubcommand(sc => sc - .setName('create') - .setDescription('Create a role') - .addStringOption(o => o - .setName('name') - .setDescription("The name of the role") - .setRequired(true)) - .addStringOption(o => o - .setName('color') - .setDescription("The color of the role (in base 16, #ffffff, without the #)") - .setMinLength(6) - .setMaxLength(6))) - .addSubcommand(sc => sc - .setName('edit') - .setDescription("Edit a role") - .addRoleOption(o => o - .setName('role') - .setDescription("The role to edit") - .setRequired(true)) - .addStringOption(o => o - .setName('name') - .setDescription('The new name of the role')) - .addStringOption(o => o - .setName('color') - .setDescription('The new color of the role') - .setMaxLength(6) - .setMinLength(6))), - async execute(interaction) { - const sc = interaction.options.getSubcommand() - - if (sc === "give") { - const user = interaction.options.getMember('user'); - const role = interaction.options.getRole('role'); - - user.roles.add(role); - } - else if (sc === "remove") { - const user = interaction.options.getMember('user'); - const role = interaction.options.getRole('role'); - - user.roles.remove(role); - } - else if (sc === "create") { - const name = interaction.options.getString('name'); - const color = '#' + interaction.options.getString('color'); - - if (name && color !== '#null') interaction.guild.roles.create({ name: name, color: color }); - else if (name && color === '#null') interaction.guild.roles.create({ name: name }) - } - else if (sc === "edit") { - const role = interaction.options.getRole('role'); - const name = interaction.options.getString('name'); - const color = '#' + interaction.options.getString('color'); - - if (name && color !== '#null') interaction.guild.roles.edit(role, { name: name, color: color }); - else if (name && color === '#null') interaction.guild.roles.edit(role, { name: name }); - else if (!name && color !== '#null') interaction.guild.roles.edit(role, { color: color }) - }; - } -}; \ No newline at end of file From e399e78a7b6a96e5c45e8b1b0df02ae169d3d9c7 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 11 Sep 2022 21:45:05 +0200 Subject: [PATCH 170/236] Random Color for the starEmbed --- Util/Starboard.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Util/Starboard.js b/Util/Starboard.js index 8909614..27bcdf1 100644 --- a/Util/Starboard.js +++ b/Util/Starboard.js @@ -27,7 +27,7 @@ async function StarboardAdd(reaction) { else if (dbData) { const starEmbed = createEmbed(message) const button = createButton(message.url) - + reaction.client.channels.cache.get(starBoardCha).messages.fetch(dbData.messageIdBot) .then((e) => { e.edit({ content: `⭐ **${rcount}** | <#${message.channel.id}>`, embeds: [starEmbed], components: [button] }) @@ -60,7 +60,7 @@ function createEmbed(message) { const embed = new EmbedBuilder() .setAuthor({ name: message.author.tag, iconURL: typeof avatar === "string" ? avatar : undefined }) - .setColor("#337fd5") + .setColor(Math.floor(Math.random()*16777215).toString(16)) .setTimestamp(new Date()) if (message.content) embed.setDescription(message.content) From 40832698d715c67129c6d74177563a04f892c790 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 14 Sep 2022 15:42:57 +0200 Subject: [PATCH 171/236] This was stupid... --- Util/Moderation.js | 16 ++++++++++------ Util/Starboard.js | 12 ++++++++---- events/Message/ReactionAdd.js | 6 +++--- events/Message/ReactionRemove.js | 10 +++------- 4 files changed, 24 insertions(+), 20 deletions(-) diff --git a/Util/Moderation.js b/Util/Moderation.js index aa62d72..ddd6cbe 100644 --- a/Util/Moderation.js +++ b/Util/Moderation.js @@ -104,9 +104,10 @@ async function kick(interaction, member, reason = "No reason provided", joke = f async function warn(interaction, user, reason, joke = false, db) { if (!(user instanceof User)) { - interaction.client.users.fetch(user) + await interaction.client.users.fetch(user) } + const avatar = await user.avatarURL({extention: 'png', size: 4096}) const dmEmbed = new EmbedBuilder() .setColor("#f04a47") .setDescription(`**You have been warned from ${interaction.guild.name} for**: ${reason}`); @@ -114,8 +115,9 @@ async function warn(interaction, user, reason, joke = false, db) { .setColor("#43b582") .setDescription(`**${escapeMarkdown(user.tag)} has been warned for:** ${reason}`); const logEmbed = new EmbedBuilder() - .setDescription("Warn") + .setAuthor({name: `Case idk | Warn | ${user.tag} | ${user.id}`, iconURL: (avatar ? avatar : undefined)}) .setColor("#f04a47") + .setTimestamp(new Date()) .addFields( { name: "**User**", value: escapeMarkdown(user.tag), inline: true }, { name: "**Moderator**", value: escapeMarkdown(interaction.user.tag), inline: true }, @@ -125,12 +127,14 @@ async function warn(interaction, user, reason, joke = false, db) { if (user.id === interaction.client.user.id) return interaction.followUp("I just deleted my own warn <:trollface:990669002999201852>") if (!joke) { - db.create({ + const dbcr = await db.create({ type: "warn", reason: reason, Executor: interaction.user.tag, userID: user.id }); + + logEmbed.setAuthor({name: `Case ${dbcr.id} | Warn | ${user.tag} | ${user.id}`, iconURL: (avatar ? avatar : undefined)}) let logChannel = await interaction.guild.channels.fetch(logCha) await logChannel.send({ embeds: [logEmbed] }) @@ -144,12 +148,12 @@ async function timeout(interaction, member, reason, unit, RealLen, joke = false, let length = RealLen; if (!(member instanceof GuildMember)) { - await interaction.guild.member.fetch(member) + await interaction.guild.members.fetch(member) } if (member.id === interaction.client.user.id) { - if (!reason || reason === "No reason provided") return interaction.followUp(`Timed out undefined for ${RealLen} ${unit}`); - else if (reason || reason !== "No reason provided") return interaction.followUp(`Timed out undefined for ${RealLen} ${unit} for **${reason}.**`) + if (reason === "No reason provided") return interaction.followUp(`Timed out undefined for ${RealLen} ${unit}`); + else if (reason !== "No reason provided") return interaction.followUp(`Timed out undefined for ${RealLen} ${unit} for **${reason}.**`) }; switch (unit) { diff --git a/Util/Starboard.js b/Util/Starboard.js index 27bcdf1..f161e2b 100644 --- a/Util/Starboard.js +++ b/Util/Starboard.js @@ -60,12 +60,16 @@ function createEmbed(message) { const embed = new EmbedBuilder() .setAuthor({ name: message.author.tag, iconURL: typeof avatar === "string" ? avatar : undefined }) - .setColor(Math.floor(Math.random()*16777215).toString(16)) - .setTimestamp(new Date()) + .setColor(Math.floor(Math.random() * 16777215).toString(16)) + .setTimestamp(new Date()); - if (message.content) embed.setDescription(message.content) - else if (!message.content && message.embeds[0].description) embed.setDescription(message.embeds[0].description) + let yesnt = true + + message.embeds.forEach(e => { + if (e.description && yesnt) { embed.setDescription(e.description); yesnt = false } + }) + if (message.content) embed.setDescription(message.content) if (message.attachments.size) embed.setImage(message.attachments.first().url) return embed diff --git a/events/Message/ReactionAdd.js b/events/Message/ReactionAdd.js index 38e7a72..6a13acb 100644 --- a/events/Message/ReactionAdd.js +++ b/events/Message/ReactionAdd.js @@ -10,8 +10,8 @@ module.exports = { } else if (reaction.partial) { reaction.fetch().then(e => { - if (starBoard) StarboardAdd(e) - }) + if (starBoard) StarboardAdd(e) + }).catch(console.error) } } -}; \ No newline at end of file +} \ No newline at end of file diff --git a/events/Message/ReactionRemove.js b/events/Message/ReactionRemove.js index 7c09df2..8d33915 100644 --- a/events/Message/ReactionRemove.js +++ b/events/Message/ReactionRemove.js @@ -9,13 +9,9 @@ module.exports = { if (starBoard) StarboardRemove(reaction) } else if (reaction.partial) { - if (reaction.message.id != undefined && - reaction.count != undefined && - reaction.emoji.name != undefined && - reaction.message.content != undefined && - reaction.message.author.id != undefined) { - if (starBoard) StarboardRemove(reaction) - } + reaction.fetch().then(e => { + if (starBoard) StarboardRemove(e) + }).catch(console.error) } } } \ No newline at end of file From 7275a32309ba6ed715efae51a8279b798c88ab69 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Fri, 16 Sep 2022 21:26:54 +0200 Subject: [PATCH 172/236] better to use json with http request then url-encoded --- commands/Misc/get.js | 19 +++++++++++++------ config.json.template | 8 +++++--- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/commands/Misc/get.js b/commands/Misc/get.js index 013ffac..52b3cda 100644 --- a/commands/Misc/get.js +++ b/commands/Misc/get.js @@ -1,5 +1,5 @@ const { SlashCommandBuilder, codeBlock } = require('discord.js'); -const { PastebinDevKey } = require('../../config.json'); +const { PasteeDevKey } = require('../../config.json'); const axios = require('axios').default; module.exports = { @@ -152,7 +152,7 @@ module.exports = { case "features": { if (!interaction.options.getString("invite")) { await interaction.guild.fetch() - return interaction.followUp({ content: `${interaction.guild.name} has ${interaction.guild.features.length} features: \n${codeBlock(interaction.guild.features.join("\n"))}`}) + return interaction.followUp({ content: `${interaction.guild.name} has ${interaction.guild.features.length} features: \n${codeBlock(interaction.guild.features.join("\n"))}` }) } else if (interaction.options.getString("invite")) { interaction.client.fetchInvite(interaction.options.getString("invite")) @@ -214,15 +214,22 @@ module.exports = { } async function sendAsPastebin(data, interaction) { - axios.post("https://pastebin.com/api/api_post.php", { - data: `api_dev_key=${PastebinDevKey}&api_option=paste&api_paste_private=1&api_paste_code=${data}&api_paste_expire_date=10M` + axios.post("https://api.paste.ee/v1/pastes", { + key: PasteeDevKey, + sections: [ + {name: "Processes Data", contents: data} + ] }) .then(r => { - interaction.followUp({ content: r.data }) + if (r.data.success) interaction.followUp({ content: r.data.link }) + else { + console.error(r.data); + interaction.followUp("An error ocurred, Pls, check console") + } }) .catch(e => { if (e.response) { - interaction.followUp({ content: `ERROR: \`${e.response.status}, ${e.response.data}\`` }) + interaction.followUp({ content: `ERROR: \`${e.response.status}, ${e.response.data.errors[0].message}\`` }) } }); } \ No newline at end of file diff --git a/config.json.template b/config.json.template index 5580582..8c4b8b0 100644 --- a/config.json.template +++ b/config.json.template @@ -3,11 +3,13 @@ "clientId": "The id of the bot", "guildId": "The id of the discord server", "logCha": "The id of a log channel", - "starBoard": "Do you want the starboard to be activated?" - "starBoardCha": "The Starboard channel (complete if starBoard is true)" + "starBoard": "Do you want the starboard to be activated?", + "starBoardReac": [ + {"emoji": "the reaction to respond to", "id": "The id of the channel/thread"} + ], "showLink": "Showing the link for inviting the bot, set 'false' to desactivate it, and 'true' to activate", "sqlPass": "A password for the database, can be empty", - "PastebinDevKey": "A key to the api of Pastebin", + "PasteeDevKey": "A key to the api of Paste.ee", "OwnerId": "The id of the owner of the bot, can be an Array", "beta": "do you want the test command to be pushed like other? set 'true' here else, set false" } \ No newline at end of file From f4a246499ad7f15dadb47c03fb38141af980139e Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Fri, 16 Sep 2022 23:49:15 +0200 Subject: [PATCH 173/236] Multi Emoji Starboard with threads --- Util/Starboard.js | 58 +++++++++++++++++++++++++++++++-------------- package-lock.json | 60 +++++++++++++++++++++++------------------------ 2 files changed, 71 insertions(+), 47 deletions(-) diff --git a/Util/Starboard.js b/Util/Starboard.js index f161e2b..dd336b7 100644 --- a/Util/Starboard.js +++ b/Util/Starboard.js @@ -1,25 +1,44 @@ const { ButtonBuilder, ActionRowBuilder, EmbedBuilder } = require("discord.js") -const { starBoardCha } = require("../config.json") +const { starBoardEmoji } = require("../config.json") -async function StarboardAdd(reaction) { - if (reaction.emoji.name !== "⭐") return; +function StarboardAdd(reaction) { + starBoardEmoji.forEach(async e => { + if (reaction.emoji.name === e.emoji) await brainAdd(reaction, e) + }) +} + +function StarboardRemove(reaction) { + starBoardEmoji.forEach(async e => { + if (reaction.emoji.name === e.emoji) await brainRemove(reaction, e) + }) +} + +async function brainAdd(reaction, setting) { const message = reaction.message let rcount = reaction.count const db = reaction.client.db.Star + let ChaThd + if (setting.thread) { + ChaThd = await reaction.client.channels.cache.get(setting.ChaId).threads.fetch() + ChaThd = ChaThd.threads.get(setting.ThdId) + } + else ChaThd = reaction.client.channels.cache.get(setting.ChaId) + if (reaction.users.cache.has(message.author.id)) rcount-- - const dbData = await db.findOne({ where: { messageId: message.id } }) + const dbData = await db.findOne({ where: { messageId: message.id, emoji: setting.emoji } }) - if (rcount >= 5 && !dbData) { + if (rcount >= 1 && !dbData) { const starEmbed = createEmbed(message) const button = createButton(message.url) - reaction.client.channels.cache.get(starBoardCha).send({ content: `⭐ **${rcount}** | <#${message.channel.id}>`, embeds: [starEmbed], components: [button] }) + ChaThd.send({ content: `${setting.emoji} **${rcount}** | <#${message.channel.id}>`, embeds: [starEmbed], components: [button] }) .then(async ownmessage => { await db.create({ messageId: message.id, - messageIdBot: ownmessage.id + messageIdBot: ownmessage.id, + emoji: setting.emoji }) }) .catch(console.error) @@ -28,31 +47,34 @@ async function StarboardAdd(reaction) { const starEmbed = createEmbed(message) const button = createButton(message.url) - reaction.client.channels.cache.get(starBoardCha).messages.fetch(dbData.messageIdBot) + ChaThd.messages.fetch(dbData.messageIdBot) .then((e) => { - e.edit({ content: `⭐ **${rcount}** | <#${message.channel.id}>`, embeds: [starEmbed], components: [button] }) + e.edit({ content: `${setting.emoji} **${rcount}** | <#${message.channel.id}>`, embeds: [starEmbed], components: [button] }) }) } } -async function StarboardRemove(reaction) { +async function brainRemove(reaction, setting) { const message = reaction.message let rcount = reaction.count const db = reaction.client.db.Star if (reaction.users.cache.has(message.author.id)) rcount -= 1 + let ChaThd + if (setting.thread) ChaThd = await reaction.client.channels.cache.get(setting.ChaId).threads.fetch(setting.ThdId) + else ChaThd = reaction.client.channels.cache.get(setting.ChaId) + const dbData = await db.findOne({ where: { messageId: message.id } }) if (!dbData) return const starEmbed = createEmbed(message) const button = createButton(message.url) - reaction.client.channels.cache.get(starBoardCha).messages.fetch(dbData.messageIdBot) + ChaThd.messages.fetch(dbData.messageIdBot) .then(e => { - e.edit({ content: `⭐ **${rcount}** | <#${message.channel.id}>`, embeds: [starEmbed], components: [button] }) + e.edit({ content: `${setting.emoji} **${rcount}** | <#${message.channel.id}>`, embeds: [starEmbed], components: [button] }) }) - } function createEmbed(message) { @@ -65,11 +87,13 @@ function createEmbed(message) { let yesnt = true - message.embeds.forEach(e => { - if (e.description && yesnt) { embed.setDescription(e.description); yesnt = false } - }) - if (message.content) embed.setDescription(message.content) + else { + message.embeds.forEach(e => { + if (e.description && yesnt) { embed.setDescription(e.description); yesnt = false } + }) + } + if (message.attachments.size) embed.setImage(message.attachments.first().url) return embed diff --git a/package-lock.json b/package-lock.json index 30ad856..ba35a4b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,9 +33,9 @@ } }, "node_modules/@discordjs/builders/node_modules/discord-api-types": { - "version": "0.37.8", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.8.tgz", - "integrity": "sha512-uhol9KQ2moExZItMpuDMkf0R7sqqNHqcJBFN7S5iSdXBVCMRO7sC0GoyuRrv6ZDBYxoFU6nDy4dv0nld/aysqA==" + "version": "0.37.10", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.10.tgz", + "integrity": "sha512-NvDh2Puc3wZQzQt2zLavlI5ewBnLFjI46/NJmvWIs6OC0JOkq7KcmH4s80X2+22mSQ3wUyge2mxq3cGYRT2noQ==" }, "node_modules/@discordjs/collection": { "version": "0.7.0", @@ -177,9 +177,9 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "node_modules/@types/node": { - "version": "18.7.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.16.tgz", - "integrity": "sha512-EQHhixfu+mkqHMZl1R2Ovuvn47PUw18azMJOTwSZr9/fhzHNGXAJ0ma0dayRVchprpCj0Kc1K1xKoWaATWF1qg==" + "version": "18.7.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.18.tgz", + "integrity": "sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg==" }, "node_modules/@types/node-fetch": { "version": "2.6.2", @@ -485,9 +485,9 @@ } }, "node_modules/discord.js/node_modules/discord-api-types": { - "version": "0.37.8", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.8.tgz", - "integrity": "sha512-uhol9KQ2moExZItMpuDMkf0R7sqqNHqcJBFN7S5iSdXBVCMRO7sC0GoyuRrv6ZDBYxoFU6nDy4dv0nld/aysqA==" + "version": "0.37.10", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.10.tgz", + "integrity": "sha512-NvDh2Puc3wZQzQt2zLavlI5ewBnLFjI46/NJmvWIs6OC0JOkq7KcmH4s80X2+22mSQ3wUyge2mxq3cGYRT2noQ==" }, "node_modules/dottie": { "version": "2.0.2", @@ -545,9 +545,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "funding": [ { "type": "individual", @@ -1427,9 +1427,9 @@ } }, "node_modules/sqlite3": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.11.tgz", - "integrity": "sha512-4akFOr7u9lJEeAWLJxmwiV43DJcGV7w3ab7SjQFAFaTVyknY3rZjvXTKIVtWqUoY4xwhjwoHKYs2HDW2SoHVsA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.1.tgz", + "integrity": "sha512-mMinkrQr/LKJqFiFF+AF7imPSzRCCpTCreusZO3D/ssJHVjZOrbu2Caz+zPH5KTmGGXBxXMGSRDssL+44CLxvg==", "hasInstallScript": true, "dependencies": { "@mapbox/node-pre-gyp": "^1.0.0", @@ -1697,9 +1697,9 @@ }, "dependencies": { "discord-api-types": { - "version": "0.37.8", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.8.tgz", - "integrity": "sha512-uhol9KQ2moExZItMpuDMkf0R7sqqNHqcJBFN7S5iSdXBVCMRO7sC0GoyuRrv6ZDBYxoFU6nDy4dv0nld/aysqA==" + "version": "0.37.10", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.10.tgz", + "integrity": "sha512-NvDh2Puc3wZQzQt2zLavlI5ewBnLFjI46/NJmvWIs6OC0JOkq7KcmH4s80X2+22mSQ3wUyge2mxq3cGYRT2noQ==" } } }, @@ -1816,9 +1816,9 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "@types/node": { - "version": "18.7.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.16.tgz", - "integrity": "sha512-EQHhixfu+mkqHMZl1R2Ovuvn47PUw18azMJOTwSZr9/fhzHNGXAJ0ma0dayRVchprpCj0Kc1K1xKoWaATWF1qg==" + "version": "18.7.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.18.tgz", + "integrity": "sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg==" }, "@types/node-fetch": { "version": "2.6.2", @@ -2067,9 +2067,9 @@ } }, "discord-api-types": { - "version": "0.37.8", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.8.tgz", - "integrity": "sha512-uhol9KQ2moExZItMpuDMkf0R7sqqNHqcJBFN7S5iSdXBVCMRO7sC0GoyuRrv6ZDBYxoFU6nDy4dv0nld/aysqA==" + "version": "0.37.10", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.10.tgz", + "integrity": "sha512-NvDh2Puc3wZQzQt2zLavlI5ewBnLFjI46/NJmvWIs6OC0JOkq7KcmH4s80X2+22mSQ3wUyge2mxq3cGYRT2noQ==" } } }, @@ -2120,9 +2120,9 @@ } }, "follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" }, "form-data": { "version": "4.0.0", @@ -2738,9 +2738,9 @@ } }, "sqlite3": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.11.tgz", - "integrity": "sha512-4akFOr7u9lJEeAWLJxmwiV43DJcGV7w3ab7SjQFAFaTVyknY3rZjvXTKIVtWqUoY4xwhjwoHKYs2HDW2SoHVsA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.1.tgz", + "integrity": "sha512-mMinkrQr/LKJqFiFF+AF7imPSzRCCpTCreusZO3D/ssJHVjZOrbu2Caz+zPH5KTmGGXBxXMGSRDssL+44CLxvg==", "requires": { "@mapbox/node-pre-gyp": "^1.0.0", "node-addon-api": "^4.2.0", From 912520d3881310b85dae79245df575ea9b1594b3 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 17 Sep 2022 00:03:11 +0200 Subject: [PATCH 174/236] Oops --- Util/Starboard.js | 2 +- config.json.template | 4 ++-- messages/Fun/AtSomeone.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Util/Starboard.js b/Util/Starboard.js index dd336b7..216fdb3 100644 --- a/Util/Starboard.js +++ b/Util/Starboard.js @@ -29,7 +29,7 @@ async function brainAdd(reaction, setting) { const dbData = await db.findOne({ where: { messageId: message.id, emoji: setting.emoji } }) - if (rcount >= 1 && !dbData) { + if (rcount >= 5 && !dbData) { const starEmbed = createEmbed(message) const button = createButton(message.url) diff --git a/config.json.template b/config.json.template index 8c4b8b0..edfe49c 100644 --- a/config.json.template +++ b/config.json.template @@ -4,8 +4,8 @@ "guildId": "The id of the discord server", "logCha": "The id of a log channel", "starBoard": "Do you want the starboard to be activated?", - "starBoardReac": [ - {"emoji": "the reaction to respond to", "id": "The id of the channel/thread"} + "starBoardEmoji": [ + {"emoji": "the reaction to respond to", "id": "The id of the channel", "thread": true, "ThdId": "The id of the thread if the thread part in this object is true"} ], "showLink": "Showing the link for inviting the bot, set 'false' to desactivate it, and 'true' to activate", "sqlPass": "A password for the database, can be empty", diff --git a/messages/Fun/AtSomeone.js b/messages/Fun/AtSomeone.js index 37ef90b..467cdcd 100644 --- a/messages/Fun/AtSomeone.js +++ b/messages/Fun/AtSomeone.js @@ -12,7 +12,7 @@ module.exports = { await message.guild.members.fetch(member); } - let messageSent = message.channel.send(`<@${member.user.id}>`); + let messageSent = await message.channel.send(`<@${member.user.id}>`); messageSent.delete() } }; \ No newline at end of file From bea292dc7708cc504287f1fd4ebbadecc8332dc3 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 17 Sep 2022 00:13:08 +0200 Subject: [PATCH 175/236] I forgot half of the update :skull: --- Util/database.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Util/database.js b/Util/database.js index 11ec743..fab79b0 100644 --- a/Util/database.js +++ b/Util/database.js @@ -11,12 +11,14 @@ const sequelize = new Sequelize('database', 'user', sqlPass, { const Star = sequelize.define('message', { messageId: { type: Sequelize.TEXT, - unique: true, }, messageIdBot: { type: Sequelize.TEXT, defaultValue: null, unique: true, + }, + emoji: { + type: Sequelize.TEXT, } }) From f6d197c4dc7ef34f0b7301ccbddf5a0ced7f0b54 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 17 Sep 2022 12:02:33 +0200 Subject: [PATCH 176/236] Some more check for the starboard --- Util/Starboard.js | 11 ++++------- commands/Misc/get.js | 44 ++++++++++++++++++++++---------------------- 2 files changed, 26 insertions(+), 29 deletions(-) diff --git a/Util/Starboard.js b/Util/Starboard.js index 216fdb3..2132506 100644 --- a/Util/Starboard.js +++ b/Util/Starboard.js @@ -3,13 +3,13 @@ const { starBoardEmoji } = require("../config.json") function StarboardAdd(reaction) { starBoardEmoji.forEach(async e => { - if (reaction.emoji.name === e.emoji) await brainAdd(reaction, e) + if (reaction.emoji.name === e.emoji && e.ChaId) await brainAdd(reaction, e) }) } function StarboardRemove(reaction) { starBoardEmoji.forEach(async e => { - if (reaction.emoji.name === e.emoji) await brainRemove(reaction, e) + if (reaction.emoji.name === e.emoji && e.ChaId) await brainRemove(reaction, e) }) } @@ -19,10 +19,7 @@ async function brainAdd(reaction, setting) { const db = reaction.client.db.Star let ChaThd - if (setting.thread) { - ChaThd = await reaction.client.channels.cache.get(setting.ChaId).threads.fetch() - ChaThd = ChaThd.threads.get(setting.ThdId) - } + if (setting.thread) ChaThd = await reaction.client.channels.cache.get(setting.ChaId).threads.fetch(setting.ThdId) else ChaThd = reaction.client.channels.cache.get(setting.ChaId) if (reaction.users.cache.has(message.author.id)) rcount-- @@ -62,7 +59,7 @@ async function brainRemove(reaction, setting) { if (reaction.users.cache.has(message.author.id)) rcount -= 1 let ChaThd - if (setting.thread) ChaThd = await reaction.client.channels.cache.get(setting.ChaId).threads.fetch(setting.ThdId) + if (setting.thread && setting.ThdId) ChaThd = await reaction.client.channels.cache.get(setting.ChaId).threads.fetch(setting.ThdId) else ChaThd = reaction.client.channels.cache.get(setting.ChaId) const dbData = await db.findOne({ where: { messageId: message.id } }) diff --git a/commands/Misc/get.js b/commands/Misc/get.js index 52b3cda..1219114 100644 --- a/commands/Misc/get.js +++ b/commands/Misc/get.js @@ -28,19 +28,19 @@ module.exports = { .setName('size') .setDescription('At what size do you want the icon to be? (pixel)') .addChoices( - { name: '16', value: 16 }, - { name: '32', value: 32 }, - { name: '56', value: 56 }, - { name: '64', value: 64 }, - { name: '96', value: 96 }, - { name: '128', value: 128 }, - { name: '256', value: 256 }, - { name: '300', value: 300 }, - { name: '512', value: 512 }, - { name: '600', value: 600 }, - { name: '1024', value: 1024 }, + { name: '4096', value: 4096 }, { name: '2048', value: 2048 }, - { name: '4096', value: 4096 } + { name: '1024', value: 1024 }, + { name: '600', value: 600 }, + { name: '512', value: 512 }, + { name: '300', value: 300 }, + { name: '256', value: 256 }, + { name: '128', value: 128 }, + { name: '96', value: 96 }, + { name: '64', value: 64 }, + { name: '56', value: 56 }, + { name: '32', value: 32 }, + { name: '16', value: 16 } ) .setRequired(true)) .addBooleanOption(o => o @@ -81,7 +81,7 @@ module.exports = { await interaction.deferReply({ ephemeral: true }); const sc = interaction.options.getSubcommand(true) - switch (interaction.options.getSubcommandGroup(true)) { + switch (interaction.options.getSubcommandGroup()) { case "role": { switch (sc) { case "name": { @@ -93,7 +93,7 @@ module.exports = { }); if (ArrName.length) { - await sendAsPastebin(ArrName.join("\n"), interaction) + await sendAsPaste(ArrName.join("\n"), interaction) } else if (!ArrName.length) interaction.followUp("Why does not even a single role exist?"); break @@ -114,8 +114,8 @@ module.exports = { }); if (ArrayURL.length) { - if (name) sendAsPastebin(ArrayURL.join("\n"), interaction) - else if (!name) sendAsPastebin(ArrayURL.join(""), interaction) + if (name) sendAsPaste(ArrayURL.join("\n"), interaction) + else if (!name) sendAsPaste(ArrayURL.join(""), interaction) } else if (!ArrayURL.length) interaction.followUp("No role found with an icon"); break @@ -132,7 +132,7 @@ module.exports = { if (hex && color !== '#000000' || !hex && color !== 0) ArrColor.push(`${color} for ${e.name}`); }); - if (ArrColor.length) sendAsPastebin(ArrColor.join("\n"), interaction); + if (ArrColor.length) sendAsPaste(ArrColor.join("\n"), interaction); else if (!ArrColor.length) interaction.followUp("No role found to have color"); break } @@ -180,8 +180,8 @@ module.exports = { }); if (emojiArr.length) { - if (name) sendAsPastebin(emojiArr.join("\n"), interaction); - else if (!name) sendAsPastebin(emojiArr.join(' '), interaction); + if (name) await sendAsPaste(emojiArr.join("\n"), interaction); + else if (!name) await sendAsPaste(emojiArr.join(' '), interaction); } else if (!emojiArr.length) interaction.followUp({ content: "No emoji found" }) break @@ -200,8 +200,8 @@ module.exports = { if (stickersArr.length) { - if (name) sendAsPastebin(stickersArr.join("\n"), interaction); - else if (!name) sendAsPastebin(stickersArr.join(' '), interaction) + if (name) sendAsPaste(stickersArr.join("\n"), interaction); + else if (!name) sendAsPaste(stickersArr.join(' '), interaction) } else if (!stickersArr.length) interaction.followUp("No stickers found"); break @@ -213,7 +213,7 @@ module.exports = { } } -async function sendAsPastebin(data, interaction) { +async function sendAsPaste(data, interaction) { axios.post("https://api.paste.ee/v1/pastes", { key: PasteeDevKey, sections: [ From b4f9671b56e8f4421335233279772c8bd84708a5 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 17 Sep 2022 12:08:14 +0200 Subject: [PATCH 177/236] Added the delwarn command --- Util/Starboard.js | 2 +- commands/Moderation/delwarn.js | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 commands/Moderation/delwarn.js diff --git a/Util/Starboard.js b/Util/Starboard.js index 2132506..38c78dc 100644 --- a/Util/Starboard.js +++ b/Util/Starboard.js @@ -62,7 +62,7 @@ async function brainRemove(reaction, setting) { if (setting.thread && setting.ThdId) ChaThd = await reaction.client.channels.cache.get(setting.ChaId).threads.fetch(setting.ThdId) else ChaThd = reaction.client.channels.cache.get(setting.ChaId) - const dbData = await db.findOne({ where: { messageId: message.id } }) + const dbData = await db.findOne({ where: { messageId: message.id, emoji: setting.emoji } }) if (!dbData) return const starEmbed = createEmbed(message) diff --git a/commands/Moderation/delwarn.js b/commands/Moderation/delwarn.js new file mode 100644 index 0000000..36718a7 --- /dev/null +++ b/commands/Moderation/delwarn.js @@ -0,0 +1,25 @@ +const { SlashCommandBuilder, EmbedBuilder } = require('discord.js') + +module.exports = { + data: new SlashCommandBuilder() + .setName('delogs') + .setDescription("Delete a case") + .addNumberOption(o => o + .setName("case") + .setDescription("Which case need to be deleted?") + .setRequired(true)), + async execute(interaction) { + let id = interaction.options.getNumber("case") + if (!id) return interaction.reply({ content: "I need a case id!", ephemeral: true }) + interaction.deferReply({ ephemeral: true }) + + await interaction.client.db.Cases.destroy({ where: { id: id } }) + + const embed = new EmbedBuilder() + .setName("Deleted") + .setDescription(`Case ${id} deleted`) + .setTimestamp(new Date()); + + interaction.followUp({embeds: [embed]}) + } +} \ No newline at end of file From ca14f72356ed23bd71e10a5fd1c5a772ef7422d9 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 17 Sep 2022 15:13:59 +0200 Subject: [PATCH 178/236] template outdated --- config.json.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.json.template b/config.json.template index edfe49c..e06b253 100644 --- a/config.json.template +++ b/config.json.template @@ -5,7 +5,7 @@ "logCha": "The id of a log channel", "starBoard": "Do you want the starboard to be activated?", "starBoardEmoji": [ - {"emoji": "the reaction to respond to", "id": "The id of the channel", "thread": true, "ThdId": "The id of the thread if the thread part in this object is true"} + {"emoji": "the reaction to respond to", "ChaId": "The id of the channel", "thread": true, "ThdId": "The id of the thread if the thread part in this object is true"} ], "showLink": "Showing the link for inviting the bot, set 'false' to desactivate it, and 'true' to activate", "sqlPass": "A password for the database, can be empty", From bbe6f8c6d27a77e0311386cbb31fdb31c669b68f Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 18 Sep 2022 19:47:53 +0200 Subject: [PATCH 179/236] I would love that this isn't the fix --- Util/Starboard.js | 2 +- commands/Misc/create.js | 27 --------------------------- commands/Misc/get.js | 2 +- context menu/User/Misc/User info.js | 9 +++++++-- 4 files changed, 9 insertions(+), 31 deletions(-) delete mode 100644 commands/Misc/create.js diff --git a/Util/Starboard.js b/Util/Starboard.js index 38c78dc..bd39433 100644 --- a/Util/Starboard.js +++ b/Util/Starboard.js @@ -24,7 +24,7 @@ async function brainAdd(reaction, setting) { if (reaction.users.cache.has(message.author.id)) rcount-- - const dbData = await db.findOne({ where: { messageId: message.id, emoji: setting.emoji } }) + const dbData = await db.findOne({where: {[Op.and]: [{ messageId: message.id }, { emoji: setting.emoji }]}}) if (rcount >= 5 && !dbData) { const starEmbed = createEmbed(message) diff --git a/commands/Misc/create.js b/commands/Misc/create.js deleted file mode 100644 index 8366326..0000000 --- a/commands/Misc/create.js +++ /dev/null @@ -1,27 +0,0 @@ -const { SlashCommandBuilder } = require('discord.js') - -module.exports = { - data: new SlashCommandBuilder() - .setName("create") - .setDescription('Create a text channel') - .addStringOption(o => o - .setName('name') - .setDescription("The name of the channel you want to create")), - async execute(interaction) { - /* - let server = interaction.guild; - let name = interaction.options.getString('name'); - - try { - server.channels.create(name, "text"); - } - catch (err) { - interaction.reply(`\`${err}\``); - } - finally { - interaction.reply("No error!"); - } - */ - interaction.reply("This command is *not* necessary, as it will just create a channel, if you want it, delete the \\\\* and \\*\\ that are on the create.js file in the commands directory") - } -} diff --git a/commands/Misc/get.js b/commands/Misc/get.js index 1219114..8752537 100644 --- a/commands/Misc/get.js +++ b/commands/Misc/get.js @@ -222,7 +222,7 @@ async function sendAsPaste(data, interaction) { }) .then(r => { if (r.data.success) interaction.followUp({ content: r.data.link }) - else { + else if (r.data.success) { console.error(r.data); interaction.followUp("An error ocurred, Pls, check console") } diff --git a/context menu/User/Misc/User info.js b/context menu/User/Misc/User info.js index c4415c5..6eb0a9b 100644 --- a/context menu/User/Misc/User info.js +++ b/context menu/User/Misc/User info.js @@ -1,3 +1,4 @@ +const { GuildMember } = require("discord.js"); const { ContextMenuCommandBuilder, EmbedBuilder } = require("discord.js"); module.exports = { @@ -5,11 +6,15 @@ module.exports = { .setName("User Info") .setType(2), async execute(interaction) { + interaction.deferReply({ephemeral: true}) const member = interaction.targetMember - await interaction.guild.members.fetch(member) + if (!(member instanceof GuildMember)) { + await interaction.guild.members.fetch(member) + } + await interaction.client.users.fetch(member.user) - + let roles = [] member.roles.cache.forEach(e => { if (e.name !== "@everyone") roles.push(`<@&${e.id}>`) From fb985268b9a3b352a6fff08ae28867fcc9fd7d7b Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 18 Sep 2022 19:51:16 +0200 Subject: [PATCH 180/236] Don't say it --- Util/Starboard.js | 1 + 1 file changed, 1 insertion(+) diff --git a/Util/Starboard.js b/Util/Starboard.js index bd39433..1cc5e6f 100644 --- a/Util/Starboard.js +++ b/Util/Starboard.js @@ -1,5 +1,6 @@ const { ButtonBuilder, ActionRowBuilder, EmbedBuilder } = require("discord.js") const { starBoardEmoji } = require("../config.json") +const { Op } = require("sequelize") function StarboardAdd(reaction) { starBoardEmoji.forEach(async e => { From 8e373ed7c6f563db111b2f5c81ed4c5be62070be Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 18 Sep 2022 22:02:05 +0200 Subject: [PATCH 181/236] /Info command added --- Util/Starboard.js | 3 +- commands/Misc/info.js | 134 +++++++++++++++------------- context menu/User/Misc/User info.js | 4 +- 3 files changed, 73 insertions(+), 68 deletions(-) diff --git a/Util/Starboard.js b/Util/Starboard.js index 1cc5e6f..38c78dc 100644 --- a/Util/Starboard.js +++ b/Util/Starboard.js @@ -1,6 +1,5 @@ const { ButtonBuilder, ActionRowBuilder, EmbedBuilder } = require("discord.js") const { starBoardEmoji } = require("../config.json") -const { Op } = require("sequelize") function StarboardAdd(reaction) { starBoardEmoji.forEach(async e => { @@ -25,7 +24,7 @@ async function brainAdd(reaction, setting) { if (reaction.users.cache.has(message.author.id)) rcount-- - const dbData = await db.findOne({where: {[Op.and]: [{ messageId: message.id }, { emoji: setting.emoji }]}}) + const dbData = await db.findOne({ where: { messageId: message.id, emoji: setting.emoji } }) if (rcount >= 5 && !dbData) { const starEmbed = createEmbed(message) diff --git a/commands/Misc/info.js b/commands/Misc/info.js index 4291383..988b1a2 100644 --- a/commands/Misc/info.js +++ b/commands/Misc/info.js @@ -1,4 +1,4 @@ -const { SlashCommandBuilder, GuildMember, EmbedBuilder, escapeMarkdown } = require("discord.js"); +const { SlashCommandBuilder, GuildMember, EmbedBuilder } = require("discord.js"); module.exports = { data: new SlashCommandBuilder() @@ -6,80 +6,86 @@ module.exports = { .setDescription("Get information about something") .addSubcommand(sc => sc .setName("server") - .setDescription("Get Information about the server")), - /*.addSubcommand(sc => sc + .setDescription("Get Information about the server")) + .addSubcommand(sc => sc .setName("user") .setDescription("Get information about a user") .addUserOption(o => o .setName("user") .setDescription("The user to get information") - .setRequired(true))),*/ + .setRequired(true))), async execute(interaction) { - const sc = interaction.options.getSubcommand(); - const replyEmbed = new EmbedBuilder(); - - if (sc === "user") { - const member = interaction.options.getMember("user"); - - if (!(member instanceof GuildMember)) { - await interaction.guild.members.fetch(member); - }; + await interaction.deferReply({ ephemeral: true }) - replyEmbed.setAuthor({name: member.user.tag, iconURL: member.displayAvatarURL({extension: "png",size: 4096})}); - replyEmbed.setColor(`#${Math.floor(Math.random()*16777215).toString(16)}`); - replyEmbed.setThumbnail(Avatar); - } - else if (sc === "server") { - const guild = interaction.guild; - await guild.fetch(); - - let owner = await guild.fetchOwner(); - let threads = await guild.channels.fetchActiveThreads(); - let channelCollection = await guild.channels.fetch(); - let member = await guild.members.fetch(); - - let voice = 0; - let text = 0; - channelCollection.forEach(e => { - if (e.type === "GUILD_VOICE") { - voice=voice+1; - } - else if (e.type === "GUILD_TEXT") { - text=text+1; + switch (interaction.options.getSubcommand(true)) { + case "user": { + const member = interaction.options.getMember("user"); + + if (!(member instanceof GuildMember)) { + await interaction.guild.members.fetch(member); }; - }) - let emoji = await guild.emojis.fetch(); - let emojiCount = 0; - emoji.forEach(e => { - emojiCount=emojiCount+1; - }) + let roles = [] + member.roles.cache.forEach(e => { + if (e.name !== "@everyone") roles.push(`<@&${e.id}>`) + }) + + const avatar = member.user.avatarURL({ extension: "png", size: 4096 }) - let roles = await guild.roles.fetch(); - let rolesCount = 0; - roles.forEach(e => { - rolesCount=rolesCount+1 - }) - - let date = new Date(guild.createdAt); + interaction.followUp({ + embeds: [new EmbedBuilder() + .setAuthor({ name: member.user.tag, iconURL: (avatar ? avatar : undefined) }) + .setDescription(`<@${member.user.id}>`) + .setColor(`#${Math.floor(Math.random() * 16777215).toString(16)}`) + .addFields( + { name: "**Joined**", value: ``, inline: true }, + { name: "**Registered**", value: ``, inline: true }, + { name: `**Roles [${member.roles.cache.size - 1}]**`, value: roles.join(", ") ? roles.join(", ") : "*none*" }, + ) + ] + }); + break + } + case "server": { + await interaction.guild.fetch() - let icon = guild.iconURL({format: "png", size: 4096}); - if (icon) {replyEmbed.setThumbnail(icon)}; - replyEmbed.setAuthor({name: `${guild.name}`, iconURL: icon}); - replyEmbed.setColor(`#${Math.floor(Math.random()*16777215).toString(16)}`); - replyEmbed.addFields( - {name: "**Owner**", value: `${escapeMarkdown(owner.user.tag)}`, inline: true}, - {name: "**Active threads**", value: `${threads.threads.size}`, inline: true}, - {name: "**Text channels**", value: `${text}`, inline: true}, - {name: "**Voice channels**", value: `${voice}`, inline: true}, - {name: "**Members**", value: `${member.size}`, inline: true}, - {name: "**Roles**", value: `${rolesCount}`, inline: true}, - {name: "**Created at**", value: ``, inline:true}, - {name: "**N° Emojis**", value: `${emojiCount}`, inline: true}, - {name: "ID", value: `${guild.id}`, inline: true}, - ); + const replyEmbed = new EmbedBuilder().setAuthor({name: interaction.guild.name, iconURL: interaction.guild.iconURL({extension: 'png', size: 4096})}).setColor(`#${Math.floor(Math.random() * 16777215).toString(16)}`).setFooter({text: `Id: ${interaction.guild.id}`}).setTimestamp(interaction.guild.createdAt) - await interaction.reply({ embeds: [replyEmbed], ephemeral: true}); - }; + let owner = await interaction.guild.fetchOwner() + + let roleCount = 0 + await interaction.guild.roles.fetch().then(e => { + e.forEach(i => { + if (i.name === "@everyone") return + roleCount++ + }) + }) + + let emojiCount = 0 + await interaction.guild.emojis.fetch().then(e => { + e.forEach(i => { + emojiCount++ + }) + }) + + let stickerCont = 0 + await interaction.guild.stickers.fetch().then(e => { + e.forEach(i => { + stickerCont++ + }) + }) + + replyEmbed.setFields( + {name: "Owner", value: `${owner.user.tag}`, inline: true}, + {name: "Roles", value: `${roleCount}`, inline: true}, + {name: "Members", value: `${interaction.guild.memberCount}`, inline: true}, + {name: "Emojis", value: `${emojiCount}`, inline: true}, + {name: "Stickers", value: `${stickerCont}`, inline: true}, + {name: "Rules", value: `<#${interaction.guild.rulesChannelId}>`, inline: true} + ) + interaction.followUp({embeds: [replyEmbed]}) + break + } + } } } \ No newline at end of file diff --git a/context menu/User/Misc/User info.js b/context menu/User/Misc/User info.js index 6eb0a9b..7b7c2a6 100644 --- a/context menu/User/Misc/User info.js +++ b/context menu/User/Misc/User info.js @@ -6,7 +6,7 @@ module.exports = { .setName("User Info") .setType(2), async execute(interaction) { - interaction.deferReply({ephemeral: true}) + await interaction.deferReply({ephemeral: true}) const member = interaction.targetMember if (!(member instanceof GuildMember)) { @@ -20,7 +20,7 @@ module.exports = { if (e.name !== "@everyone") roles.push(`<@&${e.id}>`) }) - interaction.reply({ + interaction.followUp({ ephemeral: true, embeds: [new EmbedBuilder() .setAuthor({ name: member.user.tag, iconURL: member.user.avatarURL({ extension: "png", size: 4096 }) }) .setDescription(`<@${member.user.id}>`) From d86776e6552b05f3df7f5471c74b788460aa9604 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 21 Sep 2022 19:59:30 +0200 Subject: [PATCH 182/236] Starboard With Reply Messages! --- Util/Starboard.js | 71 ++++++++++++++++++++++++++++++----------------- package-lock.json | 32 ++++++++++----------- 2 files changed, 62 insertions(+), 41 deletions(-) diff --git a/Util/Starboard.js b/Util/Starboard.js index 38c78dc..64eea24 100644 --- a/Util/Starboard.js +++ b/Util/Starboard.js @@ -1,4 +1,5 @@ -const { ButtonBuilder, ActionRowBuilder, EmbedBuilder } = require("discord.js") +const { Message } = require("discord.js") +const { ButtonBuilder, ActionRowBuilder, EmbedBuilder, MessageType } = require("discord.js") const { starBoardEmoji } = require("../config.json") function StarboardAdd(reaction) { @@ -19,18 +20,18 @@ async function brainAdd(reaction, setting) { const db = reaction.client.db.Star let ChaThd - if (setting.thread) ChaThd = await reaction.client.channels.cache.get(setting.ChaId).threads.fetch(setting.ThdId) + if (setting.thread && setting.ThdId) ChaThd = await reaction.client.channels.cache.get(setting.ChaId).threads.fetch(setting.ThdId) else ChaThd = reaction.client.channels.cache.get(setting.ChaId) if (reaction.users.cache.has(message.author.id)) rcount-- const dbData = await db.findOne({ where: { messageId: message.id, emoji: setting.emoji } }) - if (rcount >= 5 && !dbData) { - const starEmbed = createEmbed(message) - const button = createButton(message.url) + if (rcount >= 1 && !dbData) { + const starEmbed = await createEmbed(message) + const buttons = await createButton(message) - ChaThd.send({ content: `${setting.emoji} **${rcount}** | <#${message.channel.id}>`, embeds: [starEmbed], components: [button] }) + ChaThd.send({ content: `${setting.emoji} **${rcount}** | <#${message.channel.id}>`, embeds: [starEmbed], components: buttons }) .then(async ownmessage => { await db.create({ messageId: message.id, @@ -41,12 +42,12 @@ async function brainAdd(reaction, setting) { .catch(console.error) } else if (dbData) { - const starEmbed = createEmbed(message) - const button = createButton(message.url) + const starEmbed = await createEmbed(message) + const buttons = await createButton(message) ChaThd.messages.fetch(dbData.messageIdBot) .then((e) => { - e.edit({ content: `${setting.emoji} **${rcount}** | <#${message.channel.id}>`, embeds: [starEmbed], components: [button] }) + e.edit({ content: `${setting.emoji} **${rcount}** | <#${message.channel.id}>`, embeds: [starEmbed], components: buttons }) }) } } @@ -65,8 +66,8 @@ async function brainRemove(reaction, setting) { const dbData = await db.findOne({ where: { messageId: message.id, emoji: setting.emoji } }) if (!dbData) return - const starEmbed = createEmbed(message) - const button = createButton(message.url) + const starEmbed = await createEmbed(message) + const button = await createButton(message) ChaThd.messages.fetch(dbData.messageIdBot) .then(e => { @@ -74,35 +75,55 @@ async function brainRemove(reaction, setting) { }) } -function createEmbed(message) { - const avatar = message.author.avatarURL({ extension: "png", size: 4096 }) +async function createEmbed(MainMessage) { + const avatar = MainMessage.author.avatarURL({ extension: "png", size: 4096 }) const embed = new EmbedBuilder() - .setAuthor({ name: message.author.tag, iconURL: typeof avatar === "string" ? avatar : undefined }) + .setAuthor({ name: (MainMessage.author.tag.endsWith("#0000") ? MainMessage.author.tag.slice(0, -5) : MainMessage.author.tag), iconURL: typeof avatar === "string" ? avatar : undefined }) .setColor(Math.floor(Math.random() * 16777215).toString(16)) .setTimestamp(new Date()); - let yesnt = true - - if (message.content) embed.setDescription(message.content) - else { - message.embeds.forEach(e => { - if (e.description && yesnt) { embed.setDescription(e.description); yesnt = false } - }) + if (MainMessage.content) embed.setDescription(MainMessage.content) + else if (MainMessage.embeds[0]) { + let yesnt = true + MainMessage.embeds.forEach(e => { if (e.description && yesnt) { embed.setDescription(e.description); yesnt = false } }) } - if (message.attachments.size) embed.setImage(message.attachments.first().url) + if (MainMessage.attachments.size) embed.setImage(MainMessage.attachments.first().url) + + if (MainMessage.type === MessageType.Reply) { + let reference = await MainMessage.fetchReference() + if (reference.content) embed.setFields({ name: "Replied to:", value: reference.content }) + else if (reference.embeds[0]) { + let yesnt = true + reference.embeds.forEach(e => { if (e.description && yesnt) { embed.setFields({ name: "Replied to:", value: e.description }); yesnt = false } }) + } + } return embed } -function createButton(url) { - return new ActionRowBuilder() +async function createButton(message) { + let mainButton = new ActionRowBuilder() .addComponents(new ButtonBuilder() .setLabel("Original Message") .setStyle("Link") - .setURL(url) + .setURL(message.url) ) + + if (message.type === MessageType.Reply) { + let reference = await message.fetchReference() + let replyButton = new ActionRowBuilder() + .addComponents(new ButtonBuilder() + .setLabel("Reply Message") + .setStyle("Link") + .setURL(reference.url) + ) + return [mainButton, replyButton] + } + else { + return [mainButton] + } } module.exports = { StarboardAdd, StarboardRemove } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index ba35a4b..eb5a4f4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -439,20 +439,20 @@ "integrity": "sha512-RS1dMM6xuMhdHwQJ0T+XuCD7v1tKnyZ89Eq6q/DbOJWMbIh3ihgAzDhcF70QsFCtk9a5Gn9XU29S7eoEXuwQ5w==" }, "node_modules/discord.js": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.3.0.tgz", - "integrity": "sha512-CpIwoAAuELiHSgVKRMzsCADS6ZlJwAZ9RlvcJYdEgS00aW36dSvXyBgE+S3pigkc7G+jU6BEalMUWIJFveqrBQ==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.4.0.tgz", + "integrity": "sha512-U2CTmVOep2qgMhbSDzmjd1qFUiuKNQqnnwvEYEh18vyU0looj66+wgcMOXQRq72BUCJM5fi+Hir8gfKZ35J88g==", "dependencies": { "@discordjs/builders": "^1.2.0", "@discordjs/collection": "^1.1.0", "@discordjs/rest": "^1.1.0", "@sapphire/snowflake": "^3.2.2", "@types/ws": "^8.5.3", - "discord-api-types": "^0.37.3", + "discord-api-types": "^0.37.10", "fast-deep-equal": "^3.1.3", "lodash.snakecase": "^4.1.1", "tslib": "^2.4.0", - "undici": "^5.9.1", + "undici": "^5.10.0", "ws": "^8.8.1" }, "engines": { @@ -738,9 +738,9 @@ "optional": true }, "node_modules/inflection": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.2.tgz", - "integrity": "sha512-cmZlljCRTBFouT8UzMzrGcVEvkv6D/wBdcdKG7J1QH5cXjtU75Dm+P27v9EKu/Y43UYyCJd1WC4zLebRrC8NBw==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", + "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==", "engines": [ "node >= 0.4.0" ] @@ -2030,20 +2030,20 @@ "integrity": "sha512-RS1dMM6xuMhdHwQJ0T+XuCD7v1tKnyZ89Eq6q/DbOJWMbIh3ihgAzDhcF70QsFCtk9a5Gn9XU29S7eoEXuwQ5w==" }, "discord.js": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.3.0.tgz", - "integrity": "sha512-CpIwoAAuELiHSgVKRMzsCADS6ZlJwAZ9RlvcJYdEgS00aW36dSvXyBgE+S3pigkc7G+jU6BEalMUWIJFveqrBQ==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.4.0.tgz", + "integrity": "sha512-U2CTmVOep2qgMhbSDzmjd1qFUiuKNQqnnwvEYEh18vyU0looj66+wgcMOXQRq72BUCJM5fi+Hir8gfKZ35J88g==", "requires": { "@discordjs/builders": "^1.2.0", "@discordjs/collection": "^1.1.0", "@discordjs/rest": "^1.1.0", "@sapphire/snowflake": "^3.2.2", "@types/ws": "^8.5.3", - "discord-api-types": "^0.37.3", + "discord-api-types": "^0.37.10", "fast-deep-equal": "^3.1.3", "lodash.snakecase": "^4.1.1", "tslib": "^2.4.0", - "undici": "^5.9.1", + "undici": "^5.10.0", "ws": "^8.8.1" }, "dependencies": { @@ -2255,9 +2255,9 @@ "optional": true }, "inflection": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.2.tgz", - "integrity": "sha512-cmZlljCRTBFouT8UzMzrGcVEvkv6D/wBdcdKG7J1QH5cXjtU75Dm+P27v9EKu/Y43UYyCJd1WC4zLebRrC8NBw==" + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", + "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==" }, "inflight": { "version": "1.0.6", From fc640b2476afd8de3199b609e6ba2a5e203f7f7a Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 21 Sep 2022 20:10:36 +0200 Subject: [PATCH 183/236] FIX FIX FIX FIX FIX --- Util/Starboard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Util/Starboard.js b/Util/Starboard.js index 64eea24..9b696d8 100644 --- a/Util/Starboard.js +++ b/Util/Starboard.js @@ -27,7 +27,7 @@ async function brainAdd(reaction, setting) { const dbData = await db.findOne({ where: { messageId: message.id, emoji: setting.emoji } }) - if (rcount >= 1 && !dbData) { + if (rcount >= 5 && !dbData) { const starEmbed = await createEmbed(message) const buttons = await createButton(message) From 13dbff5032e779f73bf8798056e58d8fdbcadded Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 21 Sep 2022 21:49:55 +0200 Subject: [PATCH 184/236] God dammit await --- commands/Moderation/delwarn.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/commands/Moderation/delwarn.js b/commands/Moderation/delwarn.js index 36718a7..2afa3a8 100644 --- a/commands/Moderation/delwarn.js +++ b/commands/Moderation/delwarn.js @@ -9,9 +9,8 @@ module.exports = { .setDescription("Which case need to be deleted?") .setRequired(true)), async execute(interaction) { - let id = interaction.options.getNumber("case") - if (!id) return interaction.reply({ content: "I need a case id!", ephemeral: true }) - interaction.deferReply({ ephemeral: true }) + let id = interaction.options.getNumber("case", true) + await interaction.deferReply({ ephemeral: true }) await interaction.client.db.Cases.destroy({ where: { id: id } }) From e84321764dae70bc5211ea49e902e831ac456015 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Fri, 23 Sep 2022 17:48:24 +0200 Subject: [PATCH 185/236] Don't take message from other servers! --- Util/Starboard.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Util/Starboard.js b/Util/Starboard.js index 9b696d8..1d67628 100644 --- a/Util/Starboard.js +++ b/Util/Starboard.js @@ -1,8 +1,8 @@ -const { Message } = require("discord.js") const { ButtonBuilder, ActionRowBuilder, EmbedBuilder, MessageType } = require("discord.js") -const { starBoardEmoji } = require("../config.json") +const { starBoardEmoji, guildId } = require("../config.json") function StarboardAdd(reaction) { + if (reaction.message.guildId !== guildId) return starBoardEmoji.forEach(async e => { if (reaction.emoji.name === e.emoji && e.ChaId) await brainAdd(reaction, e) }) From e504e99c9ab8e0cc74da616300853a10c204289c Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Fri, 23 Sep 2022 20:31:47 +0200 Subject: [PATCH 186/236] Better. --- Util/Starboard.js | 4 ++-- config.json.template | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Util/Starboard.js b/Util/Starboard.js index 1d67628..f7fde34 100644 --- a/Util/Starboard.js +++ b/Util/Starboard.js @@ -1,8 +1,8 @@ const { ButtonBuilder, ActionRowBuilder, EmbedBuilder, MessageType } = require("discord.js") -const { starBoardEmoji, guildId } = require("../config.json") +const { starBoardEmoji, guildMainId } = require("../config.json") function StarboardAdd(reaction) { - if (reaction.message.guildId !== guildId) return + if (reaction.message.guildId !== guildMainId) return starBoardEmoji.forEach(async e => { if (reaction.emoji.name === e.emoji && e.ChaId) await brainAdd(reaction, e) }) diff --git a/config.json.template b/config.json.template index e06b253..ae98b82 100644 --- a/config.json.template +++ b/config.json.template @@ -1,7 +1,8 @@ { "token": "The token of the bot", "clientId": "The id of the bot", - "guildId": "The id of the discord server", + "guildId": "The id of a discord server for pushing / commands, can be an Array", + "guildMainId": "The id of the Main discord server" "logCha": "The id of a log channel", "starBoard": "Do you want the starboard to be activated?", "starBoardEmoji": [ From b856e7d5e26f4b41cc537643f0a3ef839d456be9 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 24 Sep 2022 12:13:51 +0200 Subject: [PATCH 187/236] Now pushing global commands instead of guild commands --- Util/Dos.js | 4 ++-- deploy-commands.js | 25 +++++++------------------ 2 files changed, 9 insertions(+), 20 deletions(-) diff --git a/Util/Dos.js b/Util/Dos.js index 0fc443a..ca1146b 100644 --- a/Util/Dos.js +++ b/Util/Dos.js @@ -212,13 +212,13 @@ async function ProcessDOS(client) { } case "deploy": { const { send } = require("../deploy-commands.js"); - const { guildId, beta } = require("../config.json"); + const { beta } = require("../config.json"); let all = [] client.commands.forEach(e => { if (!beta && e.name !== "test" || beta) all.push(e.data.toJSON()) }) client.contextMenu.forEach(e => all.push(e.data.toJSON())) - send(all, client.token, guildId, client.user.id); + send(all, client.token, client.user.id); break; } case 'c:': case 'C:': { diff --git a/deploy-commands.js b/deploy-commands.js index 82d7a3a..84d7d1c 100644 --- a/deploy-commands.js +++ b/deploy-commands.js @@ -1,6 +1,6 @@ const { REST } = require('@discordjs/rest'); const { Routes } = require('discord-api-types/v10'); -const { token, clientId, guildId, beta } = require('./config.json'); +const { token, clientId, beta } = require('./config.json'); if (require.main === module) { const fs = require('node:fs'); @@ -35,28 +35,17 @@ if (require.main === module) { const all = []; commands.forEach(e => { if (!beta && e.name !== "test" || beta) all.push(e) }) contextMenu.forEach(e => all.push(e)); - send(all, token, guildId, clientId) + send(all, token, clientId) } -async function send(all, token, guildId, clientId) { +async function send(all, token, clientId) { const rest = new REST({ version: '10' }).setToken(token); try { console.log('Started refreshing application (/) commands.'); - if (guildId instanceof Array) { - guildId.forEach(async guild => { - await rest.put( - Routes.applicationGuildCommands(clientId, guild), - { body: all }, - ).catch(e => { console.error(e) }); - } - ) - } - else { - await rest.put( - Routes.applicationGuildCommands(clientId, guildId), - { body: all }, - ).catch(e => { console.error(e) }) - } + await rest.put( + Routes.applicationCommands(clientId), + { body: all }, + ).catch(e => { console.error(e) }); console.log('Successfully reloaded application (/) commands.'); } catch (error) { console.error(error); From ce5dac82d2b0e3ee1f9aa2a2cc4ffca968ec5ed9 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 24 Sep 2022 18:30:25 +0200 Subject: [PATCH 188/236] if rest.put gives a promise, a try block isn't needed --- deploy-commands.js | 85 ++++++++++++++++++++++------------------------ 1 file changed, 41 insertions(+), 44 deletions(-) diff --git a/deploy-commands.js b/deploy-commands.js index 84d7d1c..ba5bcec 100644 --- a/deploy-commands.js +++ b/deploy-commands.js @@ -3,53 +3,50 @@ const { Routes } = require('discord-api-types/v10'); const { token, clientId, beta } = require('./config.json'); if (require.main === module) { - const fs = require('node:fs'); - const commands = []; - - for (const folder of fs.readdirSync(`${__dirname}/commands`)) { - for (const file of fs.readdirSync(`${__dirname}/commands/${folder}`).filter(file => file.endsWith(".js"))) { - try { - const command = require(`${__dirname}/commands/${folder}/${file}`); - commands.push(command.data.toJSON()); - } catch (err) { - console.error(err); - } - } - } - - const contextMenu = []; - - for (const type of fs.readdirSync(`${__dirname}/context menu`)) { - for (const folder of fs.readdirSync(`${__dirname}/context menu/${type}`)) { - for (const file of fs.readdirSync(`${__dirname}/context menu/${type}/${folder}`).filter(file => file.endsWith(".js"))) { - try { - const contextmenu = require(`${__dirname}/context menu/${type}/${folder}/${file}`); - contextMenu.push(contextmenu.data.toJSON()); - } catch (err) { - console.error(err); - } - } - } - } - - const all = []; - commands.forEach(e => { if (!beta && e.name !== "test" || beta) all.push(e) }) - contextMenu.forEach(e => all.push(e)); - send(all, token, clientId) + const fs = require('node:fs'); + const commands = []; + + for (const folder of fs.readdirSync(`${__dirname}/commands`)) { + for (const file of fs.readdirSync(`${__dirname}/commands/${folder}`).filter(file => file.endsWith(".js"))) { + try { + const command = require(`${__dirname}/commands/${folder}/${file}`); + commands.push(command.data.toJSON()); + } catch (err) { + console.error(err); + } + } + } + + const contextMenu = []; + + for (const type of fs.readdirSync(`${__dirname}/context menu`)) { + for (const folder of fs.readdirSync(`${__dirname}/context menu/${type}`)) { + for (const file of fs.readdirSync(`${__dirname}/context menu/${type}/${folder}`).filter(file => file.endsWith(".js"))) { + try { + const contextmenu = require(`${__dirname}/context menu/${type}/${folder}/${file}`); + contextMenu.push(contextmenu.data.toJSON()); + } catch (err) { + console.error(err); + } + } + } + } + + const all = []; + commands.forEach(e => { if (!beta && e.name !== "test" || beta) all.push(e) }) + contextMenu.forEach(e => all.push(e)); + send(all, token, clientId) } async function send(all, token, clientId) { - const rest = new REST({ version: '10' }).setToken(token); - try { - console.log('Started refreshing application (/) commands.'); - await rest.put( - Routes.applicationCommands(clientId), - { body: all }, - ).catch(e => { console.error(e) }); - console.log('Successfully reloaded application (/) commands.'); - } catch (error) { - console.error(error); - } + const rest = new REST({ version: '10' }).setToken(token); + + console.log(`Started refreshing ${all.length} slash commands.`); + await rest.put( + Routes.applicationCommands(clientId), + { body: all }, + ).catch(e => { console.error(e) }); + console.log(`Successfully reloaded ${all.length} slash commands.`); }; From b90763b7921d44032d896ff4a8444c0efc1ea168 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 25 Sep 2022 10:33:12 +0200 Subject: [PATCH 189/236] if (big error) send discord message --- config.json.template | 1 + main.js | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/config.json.template b/config.json.template index ae98b82..b586946 100644 --- a/config.json.template +++ b/config.json.template @@ -4,6 +4,7 @@ "guildId": "The id of a discord server for pushing / commands, can be an Array", "guildMainId": "The id of the Main discord server" "logCha": "The id of a log channel", + "debugCha": "the id of the debug channel, where all unhandled errors will get", "starBoard": "Do you want the starboard to be activated?", "starBoardEmoji": [ {"emoji": "the reaction to respond to", "ChaId": "The id of the channel", "thread": true, "ThdId": "The id of the thread if the thread part in this object is true"} diff --git a/main.js b/main.js index 39c83fa..7b1220c 100644 --- a/main.js +++ b/main.js @@ -1,10 +1,20 @@ -const { Client, Partials } = require('discord.js'); +const { Client, EmbedBuilder } = require('discord.js'); const { GetJsFile } = require('./Util/GetJSFile.js') -const { token } = require('./config.json'); +const { token, debugCha } = require('./config.json'); -client = new Client({ intents: 34306, presence: { status: 'idle' }, partials: [Partials.Message, Partials.Reaction, Partials.Channel]}); +client = new Client({ intents: 34306, presence: { status: 'idle' }}); client.db = require('./Util/database'); GetJsFile(client) -client.login(token); \ No newline at end of file +client.login(token); + +process.on("uncaughtException", async (err, origin) => { + console.error(err) + if (await client.channels.fetch(debugCha)) (await client.channels.fetch(debugCha)).send({embeds: [new EmbedBuilder().setAuthor({name: "Error", iconURL: "https://raw.githubusercontent.com/abrahammurciano/discord-lumberjack/main/images/error.png"}).setDescription("UncaughtException").setFields({name: "Error", value: err, inline: true},{name: "From", value: origin, inline: true})]}).catch(() => {}) +}); + +process.on("unhandledRejection", async (err, promise) => { + console.error(err) + if (await client.channels.fetch(debugCha)) (await client.channels.fetch(debugCha)).send({embeds: [new EmbedBuilder().setAuthor({name: "Error", iconURL: "https://raw.githubusercontent.com/abrahammurciano/discord-lumberjack/main/images/error.png"}).setDescription("UnhandledRejection").setFields({name: "Error", value: err, inline: true}, {name: "From", value: promise, inline: true})]}).catch(() => {}) +}); \ No newline at end of file From 7a4fd36dd2cd7ccd9743022cf81bab76ccfd98f5 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 25 Sep 2022 11:05:41 +0200 Subject: [PATCH 190/236] setDefaultMemberPermissions moment --- commands/Moderation/ban.js | 3 ++- commands/Moderation/delwarn.js | 3 ++- commands/Moderation/slowmode.js | 5 +++-- commands/Moderation/timeout.js | 2 ++ commands/Moderation/warn.js | 3 ++- 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/commands/Moderation/ban.js b/commands/Moderation/ban.js index 69f7f76..2c85f9f 100644 --- a/commands/Moderation/ban.js +++ b/commands/Moderation/ban.js @@ -1,10 +1,11 @@ -const { SlashCommandBuilder } = require('discord.js'); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js'); const { ban } = require("../../Util/Moderation.js") module.exports = { data: new SlashCommandBuilder() .setName("ban") .setDescription("Ban a member") + .setDefaultMemberPermissions(PermissionFlagsBits.BanMembers) .addUserOption(o =>o .setDescription("The member to ban") .setName("member") diff --git a/commands/Moderation/delwarn.js b/commands/Moderation/delwarn.js index 2afa3a8..e1a9e4b 100644 --- a/commands/Moderation/delwarn.js +++ b/commands/Moderation/delwarn.js @@ -1,9 +1,10 @@ -const { SlashCommandBuilder, EmbedBuilder } = require('discord.js') +const { SlashCommandBuilder, EmbedBuilder, PermissionFlagsBits } = require('discord.js') module.exports = { data: new SlashCommandBuilder() .setName('delogs') .setDescription("Delete a case") + .setDefaultMemberPermissions(PermissionFlagsBits.KickMembers) .addNumberOption(o => o .setName("case") .setDescription("Which case need to be deleted?") diff --git a/commands/Moderation/slowmode.js b/commands/Moderation/slowmode.js index 288a7de..2ed04e4 100644 --- a/commands/Moderation/slowmode.js +++ b/commands/Moderation/slowmode.js @@ -1,10 +1,11 @@ -const { SlashCommandBuilder, EmbedBuilder } = require('discord.js'); -const { ChannelType } = require("discord-api-types/v10") +const { SlashCommandBuilder, EmbedBuilder, PermissionFlagsBits } = require('discord.js'); +const { ChannelType } = require("discord-api-types/v10"); module.exports = { data: new SlashCommandBuilder() .setName('slowmode') .setDescription("Set a slowmode in a channel") + .setDefaultMemberPermissions(PermissionFlagsBits.ManageChannels) .addChannelOption(o => o .setName("channel") .setDescription("What channel do you want to apply slowmode to?") diff --git a/commands/Moderation/timeout.js b/commands/Moderation/timeout.js index 5a38f95..47c1f4c 100644 --- a/commands/Moderation/timeout.js +++ b/commands/Moderation/timeout.js @@ -1,3 +1,4 @@ +const { PermissionFlagsBits } = require('discord.js'); const { SlashCommandBuilder } = require('discord.js'); const { timeout } = require("../../Util/Moderation.js") @@ -5,6 +6,7 @@ module.exports = { data: new SlashCommandBuilder() .setName('timeout') .setDescription(`Timeout a member for up to 28 days.`) + .setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers) .addUserOption(o => o .setName("user") .setDescription("The user to timeout") diff --git a/commands/Moderation/warn.js b/commands/Moderation/warn.js index eedb81d..7e6d9e0 100644 --- a/commands/Moderation/warn.js +++ b/commands/Moderation/warn.js @@ -1,10 +1,11 @@ -const { SlashCommandBuilder } = require('discord.js'); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js'); const { warn } = require('../../Util/Moderation.js') module.exports = { data: new SlashCommandBuilder() .setName('warn') .setDescription("warn a user") + .setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers) .addUserOption(o => o .setName("user") .setDescription("the user to warn") From ffc75563887ce4a98a8846d82cf259c5e4582d9f Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 25 Sep 2022 11:06:40 +0200 Subject: [PATCH 191/236] rename things because deprecated or other --- deploy-commands.js | 8 ++++---- messages/Misc/CrossPost.js | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/deploy-commands.js b/deploy-commands.js index ba5bcec..1a4e6ee 100644 --- a/deploy-commands.js +++ b/deploy-commands.js @@ -38,15 +38,15 @@ if (require.main === module) { send(all, token, clientId) } -async function send(all, token, clientId) { +async function send(commands, token, clientId) { const rest = new REST({ version: '10' }).setToken(token); - console.log(`Started refreshing ${all.length} slash commands.`); + console.log(`Started refreshing ${commands.length} slash commands.`); await rest.put( Routes.applicationCommands(clientId), - { body: all }, + { body: commands }, ).catch(e => { console.error(e) }); - console.log(`Successfully reloaded ${all.length} slash commands.`); + console.log(`Successfully reloaded ${commands.length} slash commands.`); }; diff --git a/messages/Misc/CrossPost.js b/messages/Misc/CrossPost.js index a72ec5a..4a17a9b 100644 --- a/messages/Misc/CrossPost.js +++ b/messages/Misc/CrossPost.js @@ -4,7 +4,7 @@ module.exports = { message: "CrossPost", async code(messages) { await messages.fetch() - if (messages.author === "282286160494067712" && messages.channel.type === ChannelType.GuildNews) { + if (messages.author === "282286160494067712" && messages.channel.type === ChannelType.GuildAnnouncement) { this.execute(messages); } }, From 3b3b7cea4b884b6a4611e0fc732e4a46b40122db Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 25 Sep 2022 15:18:00 +0200 Subject: [PATCH 192/236] no more sub-sub-folder in the context menu folder --- Util/GetJSFile.js | 30 ++++++++++------------ config.json.template | 3 +++ context menu/User/{Moderation => }/Ban.js | 2 +- context menu/User/{Moderation => }/Kick.js | 2 +- context menu/User/{Misc => }/User info.js | 0 context menu/User/{Moderation => }/Warn.js | 2 +- deploy-commands.js | 21 ++++++++------- 7 files changed, 30 insertions(+), 30 deletions(-) rename context menu/User/{Moderation => }/Ban.js (95%) rename context menu/User/{Moderation => }/Kick.js (95%) rename context menu/User/{Misc => }/User info.js (100%) rename context menu/User/{Moderation => }/Warn.js (94%) diff --git a/Util/GetJSFile.js b/Util/GetJSFile.js index 50a07fe..634dc0b 100644 --- a/Util/GetJSFile.js +++ b/Util/GetJSFile.js @@ -2,21 +2,19 @@ const fs = require('node:fs') const { Collection } = require('discord.js'); async function GetContextMenuFiles(Where, printAndOther = true) { - for (const type of fs.readdirSync(`${__dirname}/../context menu`)) { - let special = "┌" - - for (const folder of fs.readdirSync(`${__dirname}/../context menu/${type}`)) { - if (printAndOther) console.log(` ${special} Next Context Menu are loading from "${folder}"`); - special = "├" - - for (const file of fs.readdirSync(`${__dirname}/../context menu/${type}/${folder}`).filter(file => file.endsWith(".js"))) { - try { - const contextMenu = require(`${__dirname}/../context menu/${type}/${folder}/${file}`); - Where.set(contextMenu.data.name, contextMenu); - if (printAndOther) console.log(` │ Context Menu "${contextMenu.data.name}" has been loaded`); - } catch (err) { - console.error(err); - }; + let special = "┌" + + for (const folder of fs.readdirSync(`${__dirname}/../context menu`)) { + if (printAndOther) console.log(` ${special} Next Context Menu are loading from "${folder}"`); + special = "├" + + for (const file of fs.readdirSync(`${__dirname}/../context menu/${folder}`).filter(file => file.endsWith(".js"))) { + try { + const contextMenu = require(`${__dirname}/../context menu/${folder}/${file}`); + Where.set(contextMenu.data.name, contextMenu); + if (printAndOther) console.log(` │ Context Menu "${contextMenu.data.name}" has been loaded`); + } catch (err) { + console.error(err); }; }; }; @@ -110,7 +108,7 @@ async function ReloadJsFile(client) { client.commands = new Collection(); client.messages = new Collection(); client.contextMenu = new Collection(); - + Object.keys(require.cache).forEach(key => delete require.cache[key]) await GetCommandFiles(client.commands, false); diff --git a/config.json.template b/config.json.template index b586946..80db491 100644 --- a/config.json.template +++ b/config.json.template @@ -5,6 +5,9 @@ "guildMainId": "The id of the Main discord server" "logCha": "The id of a log channel", "debugCha": "the id of the debug channel, where all unhandled errors will get", + "reddit": "Do you want the reddit system to work?", + "redditCha": "the channel where reddit post get sent", + "redditTalkCha": "the id of the channel where you talk about reddit", "starBoard": "Do you want the starboard to be activated?", "starBoardEmoji": [ {"emoji": "the reaction to respond to", "ChaId": "The id of the channel", "thread": true, "ThdId": "The id of the thread if the thread part in this object is true"} diff --git a/context menu/User/Moderation/Ban.js b/context menu/User/Ban.js similarity index 95% rename from context menu/User/Moderation/Ban.js rename to context menu/User/Ban.js index 9d88b48..2682069 100644 --- a/context menu/User/Moderation/Ban.js +++ b/context menu/User/Ban.js @@ -1,5 +1,5 @@ const { ContextMenuCommandBuilder, ModalBuilder, ActionRowBuilder, TextInputBuilder, TextInputStyle, escapeMarkdown } = require("discord.js"); -const { ban } = require("../../../Util/Moderation"); +const { ban } = require("../../Util/Moderation"); module.exports = { data: new ContextMenuCommandBuilder() diff --git a/context menu/User/Moderation/Kick.js b/context menu/User/Kick.js similarity index 95% rename from context menu/User/Moderation/Kick.js rename to context menu/User/Kick.js index 78fb1b8..3271f32 100644 --- a/context menu/User/Moderation/Kick.js +++ b/context menu/User/Kick.js @@ -1,5 +1,5 @@ const { ContextMenuCommandBuilder, ModalBuilder, ActionRowBuilder, TextInputBuilder, TextInputStyle } = require('discord.js') -const { kick } = require('../../../Util/Moderation') +const { kick } = require('../../Util/Moderation') module.exports = { data: new ContextMenuCommandBuilder() diff --git a/context menu/User/Misc/User info.js b/context menu/User/User info.js similarity index 100% rename from context menu/User/Misc/User info.js rename to context menu/User/User info.js diff --git a/context menu/User/Moderation/Warn.js b/context menu/User/Warn.js similarity index 94% rename from context menu/User/Moderation/Warn.js rename to context menu/User/Warn.js index 007b6bf..849854a 100644 --- a/context menu/User/Moderation/Warn.js +++ b/context menu/User/Warn.js @@ -1,5 +1,5 @@ const { ContextMenuCommandBuilder, ModalBuilder, ActionRowBuilder, TextInputBuilder, TextInputStyle } = require('discord.js') -const { warn } = require('../../../Util/Moderation') +const { warn } = require('../../Util/Moderation') module.exports = { data: new ContextMenuCommandBuilder() diff --git a/deploy-commands.js b/deploy-commands.js index 1a4e6ee..321e1b9 100644 --- a/deploy-commands.js +++ b/deploy-commands.js @@ -19,19 +19,18 @@ if (require.main === module) { const contextMenu = []; - for (const type of fs.readdirSync(`${__dirname}/context menu`)) { - for (const folder of fs.readdirSync(`${__dirname}/context menu/${type}`)) { - for (const file of fs.readdirSync(`${__dirname}/context menu/${type}/${folder}`).filter(file => file.endsWith(".js"))) { - try { - const contextmenu = require(`${__dirname}/context menu/${type}/${folder}/${file}`); - contextMenu.push(contextmenu.data.toJSON()); - } catch (err) { - console.error(err); - } + for (const folder of fs.readdirSync(`${__dirname}/context menu`)) { + for (const file of fs.readdirSync(`${__dirname}/context menu/${folder}`).filter(file => file.endsWith(".js"))) { + try { + const contextmenu = require(`${__dirname}/context menu/${folder}/${file}`); + contextMenu.push(contextmenu.data.toJSON()); + } catch (err) { + console.error(err); } } } + const all = []; commands.forEach(e => { if (!beta && e.name !== "test" || beta) all.push(e) }) contextMenu.forEach(e => all.push(e)); @@ -41,12 +40,12 @@ if (require.main === module) { async function send(commands, token, clientId) { const rest = new REST({ version: '10' }).setToken(token); - console.log(`Started refreshing ${commands.length} slash commands.`); + console.log(`Started refreshing ${commands.length} interaction commands.`); await rest.put( Routes.applicationCommands(clientId), { body: commands }, ).catch(e => { console.error(e) }); - console.log(`Successfully reloaded ${commands.length} slash commands.`); + console.log(`Successfully reloaded ${commands.length} interaction commands.`); }; From bd2c2c040a63ff09f0862426d7e4b428f261f0b8 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 25 Sep 2022 16:04:53 +0200 Subject: [PATCH 193/236] Reddit-chat can now be a thread, like Pankine wanted --- events/Client/ready.js | 36 ++++++++++++++++++++++++--------- events/Message/MessageCreate.js | 5 ++--- main.js | 16 +++------------ messages/Fun/AtSomeone.js | 1 + messages/Misc/CrossPost.js | 1 + messages/Misc/reddit.js | 15 ++++++++++++++ 6 files changed, 49 insertions(+), 25 deletions(-) create mode 100644 messages/Misc/reddit.js diff --git a/events/Client/ready.js b/events/Client/ready.js index 1dee5cd..7c3f20b 100644 --- a/events/Client/ready.js +++ b/events/Client/ready.js @@ -1,31 +1,49 @@ -const { showLink } = require('../../config.json') -const { ProcessDOS } = require('../../Util/Dos.js') -const { PermissionsBitField } = require('discord.js'); +const { PermissionsBitField, EmbedBuilder } = require('discord.js'); +const { showLink, debugCha } = require('../../config.json'); +const { ProcessDOS } = require('../../Util/Dos.js'); module.exports = { name: 'ready', on: false, async execute(client) { + const base = require(`./ready.js`).base + base(client).then(async client => client.debugCha = await client.channels.fetch(debugCha)) + }, + async base(client) { client.db.Cases.sync(); client.db.Star.sync(); - + let guilds = await client.guilds.fetch() - + guilds.forEach(async guild => { let guildFetched = await guild.fetch() await guildFetched.channels.fetch() - guildFetched.members.fetchMe() + await guildFetched.members.fetchMe() console.log(`Channels of ${guildFetched.name} loaded (${guildFetched.id})`) - }); - + }) + + if (showLink) { console.log(client.generateInvite({ permissions: PermissionsBitField.All, scopes: ["applications.commands", "bot"] })) } - + console.log(`Login as ${client.user.tag}`); ProcessDOS(client) + + + // Errors handler + process.on("uncaughtException", async (err, origin) => { + console.error(err) + if (client.debugCha) client.debugCha.send({ embeds: [new EmbedBuilder().setAuthor({ name: "Error", iconURL: "https://raw.githubusercontent.com/abrahammurciano/discord-lumberjack/main/images/error.png" }).setDescription("UncaughtException").setFields({ name: "Error", value: err, inline: true }, { name: "From", value: origin, inline: true })] }).catch(() => { }) + }); + + process.on("unhandledRejection", async (err, promise) => { + console.error(err) + if (client.debugCha) client.debugCha.send({ embeds: [new EmbedBuilder().setAuthor({ name: "Error", iconURL: "https://raw.githubusercontent.com/abrahammurciano/discord-lumberjack/main/images/error.png" }).setDescription("UnhandledRejection").setFields({ name: "Error", value: err, inline: true }, { name: "From", value: promise, inline: true })] }).catch(() => { }) + }); + return client } }; \ No newline at end of file diff --git a/events/Message/MessageCreate.js b/events/Message/MessageCreate.js index 6c8d746..b794961 100644 --- a/events/Message/MessageCreate.js +++ b/events/Message/MessageCreate.js @@ -2,14 +2,13 @@ module.exports = { name: "messageCreate", on: true, async execute(messages) { - if (messages.partial) try {await messages.fetch()} catch {console.error("A patial message couldn't get fetched"); return}; if (messages.author.id === client.user.id) return; client.messages.forEach(e => { if (e.code) e.code(messages).catch(console.error) }) const message = client.messages.get(messages.content); - if (!message) return; + if (!message || message?.onlyCode) return; - await message.execute(messages).catch(console.error); + message.execute(messages).catch(console.error); } } \ No newline at end of file diff --git a/main.js b/main.js index 7b1220c..e73afc3 100644 --- a/main.js +++ b/main.js @@ -1,20 +1,10 @@ -const { Client, EmbedBuilder } = require('discord.js'); +const { Client } = require('discord.js'); const { GetJsFile } = require('./Util/GetJSFile.js') -const { token, debugCha } = require('./config.json'); +const { token } = require('./config.json'); client = new Client({ intents: 34306, presence: { status: 'idle' }}); client.db = require('./Util/database'); GetJsFile(client) -client.login(token); - -process.on("uncaughtException", async (err, origin) => { - console.error(err) - if (await client.channels.fetch(debugCha)) (await client.channels.fetch(debugCha)).send({embeds: [new EmbedBuilder().setAuthor({name: "Error", iconURL: "https://raw.githubusercontent.com/abrahammurciano/discord-lumberjack/main/images/error.png"}).setDescription("UncaughtException").setFields({name: "Error", value: err, inline: true},{name: "From", value: origin, inline: true})]}).catch(() => {}) -}); - -process.on("unhandledRejection", async (err, promise) => { - console.error(err) - if (await client.channels.fetch(debugCha)) (await client.channels.fetch(debugCha)).send({embeds: [new EmbedBuilder().setAuthor({name: "Error", iconURL: "https://raw.githubusercontent.com/abrahammurciano/discord-lumberjack/main/images/error.png"}).setDescription("UnhandledRejection").setFields({name: "Error", value: err, inline: true}, {name: "From", value: promise, inline: true})]}).catch(() => {}) -}); \ No newline at end of file +client.login(token); \ No newline at end of file diff --git a/messages/Fun/AtSomeone.js b/messages/Fun/AtSomeone.js index 467cdcd..ae1949c 100644 --- a/messages/Fun/AtSomeone.js +++ b/messages/Fun/AtSomeone.js @@ -3,6 +3,7 @@ const { AtSomeone } = require('../../config.json') || false; module.exports = { message: '@someone', + onlyCode: false, async execute(message) { if (!AtSomeone) return; let memberList = await message.guild.members.fetch({ force: true }); diff --git a/messages/Misc/CrossPost.js b/messages/Misc/CrossPost.js index 4a17a9b..2fa938c 100644 --- a/messages/Misc/CrossPost.js +++ b/messages/Misc/CrossPost.js @@ -2,6 +2,7 @@ const { ChannelType } = require('discord.js') module.exports = { message: "CrossPost", + onlyCode: true, async code(messages) { await messages.fetch() if (messages.author === "282286160494067712" && messages.channel.type === ChannelType.GuildAnnouncement) { diff --git a/messages/Misc/reddit.js b/messages/Misc/reddit.js new file mode 100644 index 0000000..dbcfc2f --- /dev/null +++ b/messages/Misc/reddit.js @@ -0,0 +1,15 @@ +const { redditCha, redditTalkCha } = require("../../config.json") + +module.exports = { + message: "reddit", + onlyCode: true, + async code(messages) { + await messages.fetch() + if (messages.channel.id === redditCha && messages.embeds[0]?.title) { + this.execute(messages); + } + }, + async execute(messages) { + await (await messages.client.channels.fetch(redditTalkCha)).threads.create({name: messages.embeds[0].title}) + } +} \ No newline at end of file From 1cd545e60483759b921c957c7344abc57fdd38c1 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 25 Sep 2022 17:12:18 +0200 Subject: [PATCH 194/236] This is a stupid error isn't it? --- messages/Misc/CrossPost.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/messages/Misc/CrossPost.js b/messages/Misc/CrossPost.js index 2fa938c..c558df2 100644 --- a/messages/Misc/CrossPost.js +++ b/messages/Misc/CrossPost.js @@ -5,7 +5,7 @@ module.exports = { onlyCode: true, async code(messages) { await messages.fetch() - if (messages.author === "282286160494067712" && messages.channel.type === ChannelType.GuildAnnouncement) { + if (messages.author.id === "282286160494067712" && messages.channel.type === ChannelType.GuildAnnouncement) { this.execute(messages); } }, From 0133d509ddc533a79be8d47c7ec9241c1b0bfe66 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 25 Sep 2022 22:30:44 +0200 Subject: [PATCH 195/236] Fix embed in errors handler --- events/Client/ready.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/events/Client/ready.js b/events/Client/ready.js index 7c3f20b..e973792 100644 --- a/events/Client/ready.js +++ b/events/Client/ready.js @@ -36,13 +36,13 @@ module.exports = { // Errors handler process.on("uncaughtException", async (err, origin) => { - console.error(err) - if (client.debugCha) client.debugCha.send({ embeds: [new EmbedBuilder().setAuthor({ name: "Error", iconURL: "https://raw.githubusercontent.com/abrahammurciano/discord-lumberjack/main/images/error.png" }).setDescription("UncaughtException").setFields({ name: "Error", value: err, inline: true }, { name: "From", value: origin, inline: true })] }).catch(() => { }) + console.log(err) + if (client.debugCha) client.debugCha.send({ embeds: [new EmbedBuilder().setAuthor({ name: "Error", iconURL: "https://raw.githubusercontent.com/abrahammurciano/discord-lumberjack/main/images/error.png" }).setDescription("UncaughtException").setFields({ name: "Error", value: `${err}`, inline: true }, { name: "From", value: `${origin}`, inline: true })] }).catch(() => {}) }); process.on("unhandledRejection", async (err, promise) => { - console.error(err) - if (client.debugCha) client.debugCha.send({ embeds: [new EmbedBuilder().setAuthor({ name: "Error", iconURL: "https://raw.githubusercontent.com/abrahammurciano/discord-lumberjack/main/images/error.png" }).setDescription("UnhandledRejection").setFields({ name: "Error", value: err, inline: true }, { name: "From", value: promise, inline: true })] }).catch(() => { }) + console.log(err) + if (client.debugCha) client.debugCha.send({ embeds: [new EmbedBuilder().setAuthor({ name: "Error", iconURL: "https://raw.githubusercontent.com/abrahammurciano/discord-lumberjack/main/images/error.png" }).setDescription("UnhandledRejection").setFields({ name: "Error", value: `${err}`, inline: true }, { name: "From", value: `${promise}`, inline: true })] }).catch(() => {}) }); return client } From 3bb2c110e448b197d26f2ccf80322d0a477b0bc5 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Mon, 26 Sep 2022 18:07:37 +0200 Subject: [PATCH 196/236] Create thread on the message itself --- messages/Misc/reddit.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/messages/Misc/reddit.js b/messages/Misc/reddit.js index dbcfc2f..aff317e 100644 --- a/messages/Misc/reddit.js +++ b/messages/Misc/reddit.js @@ -1,4 +1,4 @@ -const { redditCha, redditTalkCha } = require("../../config.json") +const { redditCha } = require("../../config.json") module.exports = { message: "reddit", @@ -10,6 +10,6 @@ module.exports = { } }, async execute(messages) { - await (await messages.client.channels.fetch(redditTalkCha)).threads.create({name: messages.embeds[0].title}) + messages.startThread({name: messages.embeds[0].title}) } } \ No newline at end of file From 743e4cafccb2832bf07f268f43d4cad876b167e3 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 28 Sep 2022 21:50:34 +0200 Subject: [PATCH 197/236] Partial has come back, but message will have a 20 days old limit --- Util/Starboard.js | 9 ++++++++- events/Client/ready.js | 15 +++++++++------ events/Message/MessageCreate.js | 1 + main.js | 4 ++-- 4 files changed, 20 insertions(+), 9 deletions(-) mode change 100644 => 100755 events/Message/MessageCreate.js mode change 100644 => 100755 main.js diff --git a/Util/Starboard.js b/Util/Starboard.js index f7fde34..523e268 100644 --- a/Util/Starboard.js +++ b/Util/Starboard.js @@ -1,4 +1,4 @@ -const { ButtonBuilder, ActionRowBuilder, EmbedBuilder, MessageType } = require("discord.js") +const { ButtonBuilder, ActionRowBuilder, EmbedBuilder, MessageType, Message } = require("discord.js") const { starBoardEmoji, guildMainId } = require("../config.json") function StarboardAdd(reaction) { @@ -28,6 +28,13 @@ async function brainAdd(reaction, setting) { const dbData = await db.findOne({ where: { messageId: message.id, emoji: setting.emoji } }) if (rcount >= 5 && !dbData) { + let mesDate = new Date(message.createdTimestamp) + let now = new Date() + let diffTime = Math.abs(now.getTime - mesDate.getTime) + let diffDays = Math.floor(diffTime / (1000 * 60 * 60 * 24)) + + if (diffDays >= 20) return; + const starEmbed = await createEmbed(message) const buttons = await createButton(message) diff --git a/events/Client/ready.js b/events/Client/ready.js index e973792..71d1a84 100644 --- a/events/Client/ready.js +++ b/events/Client/ready.js @@ -35,14 +35,17 @@ module.exports = { // Errors handler - process.on("uncaughtException", async (err, origin) => { - console.log(err) - if (client.debugCha) client.debugCha.send({ embeds: [new EmbedBuilder().setAuthor({ name: "Error", iconURL: "https://raw.githubusercontent.com/abrahammurciano/discord-lumberjack/main/images/error.png" }).setDescription("UncaughtException").setFields({ name: "Error", value: `${err}`, inline: true }, { name: "From", value: `${origin}`, inline: true })] }).catch(() => {}) + process.on("uncaughtException", async err => { + console.error(err) + if (client.debugCha) client.debugCha.send({ embeds: [new EmbedBuilder().setAuthor({ name: "Error", iconURL: "https://raw.githubusercontent.com/abrahammurciano/discord-lumberjack/main/images/error.png" }).setDescription("UncaughtException").setFields({ name: "Error", value: `${err}`, inline: true }, { name: "From", value: `${err.stack}`, inline: true })] }).catch(() => {}) }); - process.on("unhandledRejection", async (err, promise) => { - console.log(err) - if (client.debugCha) client.debugCha.send({ embeds: [new EmbedBuilder().setAuthor({ name: "Error", iconURL: "https://raw.githubusercontent.com/abrahammurciano/discord-lumberjack/main/images/error.png" }).setDescription("UnhandledRejection").setFields({ name: "Error", value: `${err}`, inline: true }, { name: "From", value: `${promise}`, inline: true })] }).catch(() => {}) + process.on("unhandledRejection", async err => { + console.error(err) + let stack + if (err instanceof Error) stack = err.stack + else stack = err + if (client.debugCha) client.debugCha.send({ embeds: [new EmbedBuilder().setAuthor({ name: "Error", iconURL: "https://raw.githubusercontent.com/abrahammurciano/discord-lumberjack/main/images/error.png" }).setDescription("UnhandledRejection").setFields({ name: "Error", value: `${err}`, inline: true }, { name: "From", value: `${stack}`, inline: true })] }).catch(() => {}) }); return client } diff --git a/events/Message/MessageCreate.js b/events/Message/MessageCreate.js old mode 100644 new mode 100755 index b794961..a3c27cc --- a/events/Message/MessageCreate.js +++ b/events/Message/MessageCreate.js @@ -2,6 +2,7 @@ module.exports = { name: "messageCreate", on: true, async execute(messages) { + if (message.partial) {await message.fetch().catch(e => {console.error("A partial message couldn't get fetch.")})} if (messages.author.id === client.user.id) return; client.messages.forEach(e => { if (e.code) e.code(messages).catch(console.error) }) diff --git a/main.js b/main.js old mode 100644 new mode 100755 index e73afc3..d22b707 --- a/main.js +++ b/main.js @@ -1,8 +1,8 @@ -const { Client } = require('discord.js'); +const { Client, Partials } = require('discord.js'); const { GetJsFile } = require('./Util/GetJSFile.js') const { token } = require('./config.json'); -client = new Client({ intents: 34306, presence: { status: 'idle' }}); +client = new Client({ intents: 34306, presence: { status: 'idle' }, partials: [Partials.Channel, Partials.Message, Partials.Reaction]}); client.db = require('./Util/database'); GetJsFile(client) From bb4fd36bc64b7effea6dcba9886b8738d3932d85 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Thu, 29 Sep 2022 21:17:37 +0200 Subject: [PATCH 198/236] Fix spam log? --- Util/Starboard.js | 14 ++--- events/Client/ready.js | 46 +++++++++++++-- package-lock.json | 130 ++++++++++++++++++++--------------------- 3 files changed, 114 insertions(+), 76 deletions(-) diff --git a/Util/Starboard.js b/Util/Starboard.js index 523e268..7d1b3fb 100644 --- a/Util/Starboard.js +++ b/Util/Starboard.js @@ -1,4 +1,4 @@ -const { ButtonBuilder, ActionRowBuilder, EmbedBuilder, MessageType, Message } = require("discord.js") +const { ButtonBuilder, ActionRowBuilder, EmbedBuilder, MessageType } = require("discord.js") const { starBoardEmoji, guildMainId } = require("../config.json") function StarboardAdd(reaction) { @@ -20,8 +20,8 @@ async function brainAdd(reaction, setting) { const db = reaction.client.db.Star let ChaThd - if (setting.thread && setting.ThdId) ChaThd = await reaction.client.channels.cache.get(setting.ChaId).threads.fetch(setting.ThdId) - else ChaThd = reaction.client.channels.cache.get(setting.ChaId) + if (setting.thread && setting.ThdId) ChaThd = await (await reaction.client.channels.fetch(setting.ChaId)).threads.fetch(setting.ThdId) + else ChaThd = await reaction.client.channels.fetch(setting.ChaId) if (reaction.users.cache.has(message.author.id)) rcount-- @@ -66,13 +66,13 @@ async function brainRemove(reaction, setting) { if (reaction.users.cache.has(message.author.id)) rcount -= 1 - let ChaThd - if (setting.thread && setting.ThdId) ChaThd = await reaction.client.channels.cache.get(setting.ChaId).threads.fetch(setting.ThdId) - else ChaThd = reaction.client.channels.cache.get(setting.ChaId) - const dbData = await db.findOne({ where: { messageId: message.id, emoji: setting.emoji } }) if (!dbData) return + let ChaThd + if (setting.thread && setting.ThdId) ChaThd = await (await reaction.client.channels.fetch(setting.ChaId)).threads.fetch(setting.ThdId) + else ChaThd = await reaction.client.channels.fetch(setting.ChaId) + const starEmbed = await createEmbed(message) const button = await createButton(message) diff --git a/events/Client/ready.js b/events/Client/ready.js index 71d1a84..c981de4 100644 --- a/events/Client/ready.js +++ b/events/Client/ready.js @@ -37,15 +37,53 @@ module.exports = { // Errors handler process.on("uncaughtException", async err => { console.error(err) - if (client.debugCha) client.debugCha.send({ embeds: [new EmbedBuilder().setAuthor({ name: "Error", iconURL: "https://raw.githubusercontent.com/abrahammurciano/discord-lumberjack/main/images/error.png" }).setDescription("UncaughtException").setFields({ name: "Error", value: `${err}`, inline: true }, { name: "From", value: `${err.stack}`, inline: true })] }).catch(() => {}) + if (client.debugCha) client.debugCha.send({ + embeds: [new EmbedBuilder({ + author: { name: "Error", iconURL: "https://raw.githubusercontent.com/abrahammurciano/discord-lumberjack/main/images/error.png" }, + description: "UncaughtException", + fields: [ + { + name: "Error", + value: `${err}\n\n${err.message}`, + inline: true + }, + { + name: "From", + value: `${err.stack}`, + inline: true + } + ] + })] + }).catch(() => {}) }); process.on("unhandledRejection", async err => { console.error(err) - let stack - if (err instanceof Error) stack = err.stack + let stack = "" + let message = "" + if (err instanceof Error) { + if (err.message === "Received one or more errors") return; + stack = err.stack + message = err.message + } else stack = err - if (client.debugCha) client.debugCha.send({ embeds: [new EmbedBuilder().setAuthor({ name: "Error", iconURL: "https://raw.githubusercontent.com/abrahammurciano/discord-lumberjack/main/images/error.png" }).setDescription("UnhandledRejection").setFields({ name: "Error", value: `${err}`, inline: true }, { name: "From", value: `${stack}`, inline: true })] }).catch(() => {}) + if (client.debugCha) client.debugCha.send({ + embeds: [new EmbedBuilder({ + author: { name: "Error", iconURL: "https://raw.githubusercontent.com/abrahammurciano/discord-lumberjack/main/images/error.png" }, + description: "UnhandledRejection", + fields: [ + { + name: "Error", + value: `${err}\n\n${message}`, + inline: true + }, + { + name: "From", + value: `${stack}`, + inline: true + }] + })] + }).catch(() => {}) }); return client } diff --git a/package-lock.json b/package-lock.json index eb5a4f4..b0d675e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,9 +33,9 @@ } }, "node_modules/@discordjs/builders/node_modules/discord-api-types": { - "version": "0.37.10", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.10.tgz", - "integrity": "sha512-NvDh2Puc3wZQzQt2zLavlI5ewBnLFjI46/NJmvWIs6OC0JOkq7KcmH4s80X2+22mSQ3wUyge2mxq3cGYRT2noQ==" + "version": "0.37.11", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.11.tgz", + "integrity": "sha512-cUNXrCdD4hEj5iJ9SligTNur64rNnLX5s6CbvmatRpWKMZtrLTOlyLhuXmVbjfDXeXH7os8Qb71Wa7IEhC27Sw==" }, "node_modules/@discordjs/collection": { "version": "0.7.0", @@ -177,9 +177,9 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "node_modules/@types/node": { - "version": "18.7.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.18.tgz", - "integrity": "sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg==" + "version": "18.7.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.23.tgz", + "integrity": "sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==" }, "node_modules/@types/node-fetch": { "version": "2.6.2", @@ -204,9 +204,9 @@ } }, "node_modules/@types/validator": { - "version": "13.7.6", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.6.tgz", - "integrity": "sha512-uBsnWETsUagQ0n6G2wcXNIufpTNJir0zqzG4p62fhnwzs48d/iuOWEEo0d3iUxN7D+9R/8CSvWGKS+KmaD0mWA==" + "version": "13.7.7", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.7.tgz", + "integrity": "sha512-jiEw2kTUJ8Jsh4A1K4b5Pkjj9Xz6FktLLOQ36ZVLRkmxFbpTvAV2VRoKMojz8UlZxNg/2dZqzpigH4JYn1bkQg==" }, "node_modules/@types/ws": { "version": "8.5.3", @@ -439,13 +439,13 @@ "integrity": "sha512-RS1dMM6xuMhdHwQJ0T+XuCD7v1tKnyZ89Eq6q/DbOJWMbIh3ihgAzDhcF70QsFCtk9a5Gn9XU29S7eoEXuwQ5w==" }, "node_modules/discord.js": { - "version": "14.4.0", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.4.0.tgz", - "integrity": "sha512-U2CTmVOep2qgMhbSDzmjd1qFUiuKNQqnnwvEYEh18vyU0looj66+wgcMOXQRq72BUCJM5fi+Hir8gfKZ35J88g==", + "version": "14.5.0", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.5.0.tgz", + "integrity": "sha512-Kd5OqdeiXe3t9eHUHCzf1r3LmKpeJJ7lKqwlWX1qdC0WfsbO2K3kucIDLfe0INnZVZaErUQ6/U6kGbTDnGgwZg==", "dependencies": { "@discordjs/builders": "^1.2.0", "@discordjs/collection": "^1.1.0", - "@discordjs/rest": "^1.1.0", + "@discordjs/rest": "^1.2.0", "@sapphire/snowflake": "^3.2.2", "@types/ws": "^8.5.3", "discord-api-types": "^0.37.10", @@ -453,7 +453,7 @@ "lodash.snakecase": "^4.1.1", "tslib": "^2.4.0", "undici": "^5.10.0", - "ws": "^8.8.1" + "ws": "^8.9.0" }, "engines": { "node": ">=16.9.0" @@ -468,26 +468,26 @@ } }, "node_modules/discord.js/node_modules/@discordjs/rest": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.1.0.tgz", - "integrity": "sha512-yCrthRTQeUyNThQEpCk7bvQJlwQmz6kU0tf3dcWBv2WX3Bncl41x7Wc+v5b5OsIxfNYq38PvVtWircu9jtYZug==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.2.0.tgz", + "integrity": "sha512-WX79uzMdnBzFNgsDdA440Ia2q7SMk6F8bNaPMmV4i6qcUNJpg+Sgb2spKuQmQPlNTX4HCntR609xHqUkK1tnVQ==", "dependencies": { - "@discordjs/collection": "^1.0.1", + "@discordjs/collection": "^1.1.0", "@sapphire/async-queue": "^1.5.0", "@sapphire/snowflake": "^3.2.2", - "discord-api-types": "^0.37.3", - "file-type": "^17.1.6", + "discord-api-types": "^0.37.10", + "file-type": "^18.0.0", "tslib": "^2.4.0", - "undici": "^5.9.1" + "undici": "^5.10.0" }, "engines": { "node": ">=16.9.0" } }, "node_modules/discord.js/node_modules/discord-api-types": { - "version": "0.37.10", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.10.tgz", - "integrity": "sha512-NvDh2Puc3wZQzQt2zLavlI5ewBnLFjI46/NJmvWIs6OC0JOkq7KcmH4s80X2+22mSQ3wUyge2mxq3cGYRT2noQ==" + "version": "0.37.11", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.11.tgz", + "integrity": "sha512-cUNXrCdD4hEj5iJ9SligTNur64rNnLX5s6CbvmatRpWKMZtrLTOlyLhuXmVbjfDXeXH7os8Qb71Wa7IEhC27Sw==" }, "node_modules/dottie": { "version": "2.0.2", @@ -529,16 +529,16 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/file-type": { - "version": "17.1.6", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.6.tgz", - "integrity": "sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-18.0.0.tgz", + "integrity": "sha512-jjMwFpnW8PKofLE/4ohlhqwDk5k0NC6iy0UHAJFKoY1fQeGMN0GDdLgHQrvCbSpMwbqzoCZhRI5dETCZna5qVA==", "dependencies": { "readable-web-to-node-stream": "^3.0.2", - "strtok3": "^7.0.0-alpha.9", - "token-types": "^5.0.0-alpha.2" + "strtok3": "^7.0.0", + "token-types": "^5.0.1" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sindresorhus/file-type?sponsor=1" @@ -1658,9 +1658,9 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", + "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", "engines": { "node": ">=10.0.0" }, @@ -1697,9 +1697,9 @@ }, "dependencies": { "discord-api-types": { - "version": "0.37.10", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.10.tgz", - "integrity": "sha512-NvDh2Puc3wZQzQt2zLavlI5ewBnLFjI46/NJmvWIs6OC0JOkq7KcmH4s80X2+22mSQ3wUyge2mxq3cGYRT2noQ==" + "version": "0.37.11", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.11.tgz", + "integrity": "sha512-cUNXrCdD4hEj5iJ9SligTNur64rNnLX5s6CbvmatRpWKMZtrLTOlyLhuXmVbjfDXeXH7os8Qb71Wa7IEhC27Sw==" } } }, @@ -1816,9 +1816,9 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "@types/node": { - "version": "18.7.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.18.tgz", - "integrity": "sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg==" + "version": "18.7.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.23.tgz", + "integrity": "sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==" }, "@types/node-fetch": { "version": "2.6.2", @@ -1842,9 +1842,9 @@ } }, "@types/validator": { - "version": "13.7.6", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.6.tgz", - "integrity": "sha512-uBsnWETsUagQ0n6G2wcXNIufpTNJir0zqzG4p62fhnwzs48d/iuOWEEo0d3iUxN7D+9R/8CSvWGKS+KmaD0mWA==" + "version": "13.7.7", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.7.tgz", + "integrity": "sha512-jiEw2kTUJ8Jsh4A1K4b5Pkjj9Xz6FktLLOQ36ZVLRkmxFbpTvAV2VRoKMojz8UlZxNg/2dZqzpigH4JYn1bkQg==" }, "@types/ws": { "version": "8.5.3", @@ -2030,13 +2030,13 @@ "integrity": "sha512-RS1dMM6xuMhdHwQJ0T+XuCD7v1tKnyZ89Eq6q/DbOJWMbIh3ihgAzDhcF70QsFCtk9a5Gn9XU29S7eoEXuwQ5w==" }, "discord.js": { - "version": "14.4.0", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.4.0.tgz", - "integrity": "sha512-U2CTmVOep2qgMhbSDzmjd1qFUiuKNQqnnwvEYEh18vyU0looj66+wgcMOXQRq72BUCJM5fi+Hir8gfKZ35J88g==", + "version": "14.5.0", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.5.0.tgz", + "integrity": "sha512-Kd5OqdeiXe3t9eHUHCzf1r3LmKpeJJ7lKqwlWX1qdC0WfsbO2K3kucIDLfe0INnZVZaErUQ6/U6kGbTDnGgwZg==", "requires": { "@discordjs/builders": "^1.2.0", "@discordjs/collection": "^1.1.0", - "@discordjs/rest": "^1.1.0", + "@discordjs/rest": "^1.2.0", "@sapphire/snowflake": "^3.2.2", "@types/ws": "^8.5.3", "discord-api-types": "^0.37.10", @@ -2044,7 +2044,7 @@ "lodash.snakecase": "^4.1.1", "tslib": "^2.4.0", "undici": "^5.10.0", - "ws": "^8.8.1" + "ws": "^8.9.0" }, "dependencies": { "@discordjs/collection": { @@ -2053,23 +2053,23 @@ "integrity": "sha512-PQ2Bv6pnT7aGPCKWbvvNRww5tYCGpggIQVgpuF9TdDPeR6n6vQYxezXiLVOS9z2B62Dp4c+qepQ15SgJbLYtCQ==" }, "@discordjs/rest": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.1.0.tgz", - "integrity": "sha512-yCrthRTQeUyNThQEpCk7bvQJlwQmz6kU0tf3dcWBv2WX3Bncl41x7Wc+v5b5OsIxfNYq38PvVtWircu9jtYZug==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.2.0.tgz", + "integrity": "sha512-WX79uzMdnBzFNgsDdA440Ia2q7SMk6F8bNaPMmV4i6qcUNJpg+Sgb2spKuQmQPlNTX4HCntR609xHqUkK1tnVQ==", "requires": { - "@discordjs/collection": "^1.0.1", + "@discordjs/collection": "^1.1.0", "@sapphire/async-queue": "^1.5.0", "@sapphire/snowflake": "^3.2.2", - "discord-api-types": "^0.37.3", - "file-type": "^17.1.6", + "discord-api-types": "^0.37.10", + "file-type": "^18.0.0", "tslib": "^2.4.0", - "undici": "^5.9.1" + "undici": "^5.10.0" } }, "discord-api-types": { - "version": "0.37.10", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.10.tgz", - "integrity": "sha512-NvDh2Puc3wZQzQt2zLavlI5ewBnLFjI46/NJmvWIs6OC0JOkq7KcmH4s80X2+22mSQ3wUyge2mxq3cGYRT2noQ==" + "version": "0.37.11", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.11.tgz", + "integrity": "sha512-cUNXrCdD4hEj5iJ9SligTNur64rNnLX5s6CbvmatRpWKMZtrLTOlyLhuXmVbjfDXeXH7os8Qb71Wa7IEhC27Sw==" } } }, @@ -2110,13 +2110,13 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "file-type": { - "version": "17.1.6", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.6.tgz", - "integrity": "sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-18.0.0.tgz", + "integrity": "sha512-jjMwFpnW8PKofLE/4ohlhqwDk5k0NC6iy0UHAJFKoY1fQeGMN0GDdLgHQrvCbSpMwbqzoCZhRI5dETCZna5qVA==", "requires": { "readable-web-to-node-stream": "^3.0.2", - "strtok3": "^7.0.0-alpha.9", - "token-types": "^5.0.0-alpha.2" + "strtok3": "^7.0.0", + "token-types": "^5.0.1" } }, "follow-redirects": { @@ -2917,9 +2917,9 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", + "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", "requires": {} }, "yallist": { From bf20c314cee811bf7b481ae2de8c08331587d263 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Fri, 30 Sep 2022 14:12:14 +0200 Subject: [PATCH 199/236] Stupid Typo --- events/Message/MessageCreate.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/events/Message/MessageCreate.js b/events/Message/MessageCreate.js index a3c27cc..4d68371 100755 --- a/events/Message/MessageCreate.js +++ b/events/Message/MessageCreate.js @@ -2,7 +2,7 @@ module.exports = { name: "messageCreate", on: true, async execute(messages) { - if (message.partial) {await message.fetch().catch(e => {console.error("A partial message couldn't get fetch.")})} + if (messages.partial) {await message.fetch().catch(e => {console.error("A partial message couldn't get fetch.")})} if (messages.author.id === client.user.id) return; client.messages.forEach(e => { if (e.code) e.code(messages).catch(console.error) }) From 1216597061f0358e3dbaeae02e4f51d3e0a5b11b Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Fri, 30 Sep 2022 14:13:05 +0200 Subject: [PATCH 200/236] Forgot half of the fix --- events/Message/MessageCreate.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/events/Message/MessageCreate.js b/events/Message/MessageCreate.js index 4d68371..6a1e29c 100755 --- a/events/Message/MessageCreate.js +++ b/events/Message/MessageCreate.js @@ -2,7 +2,7 @@ module.exports = { name: "messageCreate", on: true, async execute(messages) { - if (messages.partial) {await message.fetch().catch(e => {console.error("A partial message couldn't get fetch.")})} + if (messages.partial) {await messages.fetch().catch(e => {console.error("A partial message couldn't get fetch.")})} if (messages.author.id === client.user.id) return; client.messages.forEach(e => { if (e.code) e.code(messages).catch(console.error) }) From 5df244c9a54bdcdd71e3ae6c255e0804e0f6d3ff Mon Sep 17 00:00:00 2001 From: stuartt_mcoded <34777184+RealMCoded@users.noreply.github.com> Date: Sun, 2 Oct 2022 11:01:11 -0400 Subject: [PATCH 201/236] Update config.json.template you forgot a comma --- config.json.template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config.json.template b/config.json.template index 80db491..fcb914a 100644 --- a/config.json.template +++ b/config.json.template @@ -2,7 +2,7 @@ "token": "The token of the bot", "clientId": "The id of the bot", "guildId": "The id of a discord server for pushing / commands, can be an Array", - "guildMainId": "The id of the Main discord server" + "guildMainId": "The id of the Main discord server", "logCha": "The id of a log channel", "debugCha": "the id of the debug channel, where all unhandled errors will get", "reddit": "Do you want the reddit system to work?", @@ -17,4 +17,4 @@ "PasteeDevKey": "A key to the api of Paste.ee", "OwnerId": "The id of the owner of the bot, can be an Array", "beta": "do you want the test command to be pushed like other? set 'true' here else, set false" -} \ No newline at end of file +} From 3b704d60b2ed95095e0e0de30fc50a65f17040a3 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 2 Oct 2022 17:49:17 +0200 Subject: [PATCH 202/236] Forgot the reddit config --- messages/Misc/reddit.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/messages/Misc/reddit.js b/messages/Misc/reddit.js index aff317e..5638dc4 100644 --- a/messages/Misc/reddit.js +++ b/messages/Misc/reddit.js @@ -1,11 +1,11 @@ -const { redditCha } = require("../../config.json") +const { redditCha, reddit } = require("../../config.json") module.exports = { message: "reddit", onlyCode: true, async code(messages) { await messages.fetch() - if (messages.channel.id === redditCha && messages.embeds[0]?.title) { + if (messages.channel.id === redditCha && messages.embeds[0]?.title && reddit) { this.execute(messages); } }, From d3a7506ed4c4d38fb82969137bc74de84c0ebc73 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 2 Oct 2022 18:02:19 +0200 Subject: [PATCH 203/236] Starboard Fixed maybe? --- Util/Starboard.js | 267 +- events/Client/ready.js | 178 +- events/Message/MessageCreate.js | 28 +- main.js | 18 +- package-lock.json | 5862 +++++++++++++++---------------- package.json | 40 +- 6 files changed, 3195 insertions(+), 3198 deletions(-) diff --git a/Util/Starboard.js b/Util/Starboard.js index 7d1b3fb..ad3396a 100644 --- a/Util/Starboard.js +++ b/Util/Starboard.js @@ -1,136 +1,133 @@ -const { ButtonBuilder, ActionRowBuilder, EmbedBuilder, MessageType } = require("discord.js") -const { starBoardEmoji, guildMainId } = require("../config.json") - -function StarboardAdd(reaction) { - if (reaction.message.guildId !== guildMainId) return - starBoardEmoji.forEach(async e => { - if (reaction.emoji.name === e.emoji && e.ChaId) await brainAdd(reaction, e) - }) -} - -function StarboardRemove(reaction) { - starBoardEmoji.forEach(async e => { - if (reaction.emoji.name === e.emoji && e.ChaId) await brainRemove(reaction, e) - }) -} - -async function brainAdd(reaction, setting) { - const message = reaction.message - let rcount = reaction.count - const db = reaction.client.db.Star - - let ChaThd - if (setting.thread && setting.ThdId) ChaThd = await (await reaction.client.channels.fetch(setting.ChaId)).threads.fetch(setting.ThdId) - else ChaThd = await reaction.client.channels.fetch(setting.ChaId) - - if (reaction.users.cache.has(message.author.id)) rcount-- - - const dbData = await db.findOne({ where: { messageId: message.id, emoji: setting.emoji } }) - - if (rcount >= 5 && !dbData) { - let mesDate = new Date(message.createdTimestamp) - let now = new Date() - let diffTime = Math.abs(now.getTime - mesDate.getTime) - let diffDays = Math.floor(diffTime / (1000 * 60 * 60 * 24)) - - if (diffDays >= 20) return; - - const starEmbed = await createEmbed(message) - const buttons = await createButton(message) - - ChaThd.send({ content: `${setting.emoji} **${rcount}** | <#${message.channel.id}>`, embeds: [starEmbed], components: buttons }) - .then(async ownmessage => { - await db.create({ - messageId: message.id, - messageIdBot: ownmessage.id, - emoji: setting.emoji - }) - }) - .catch(console.error) - } - else if (dbData) { - const starEmbed = await createEmbed(message) - const buttons = await createButton(message) - - ChaThd.messages.fetch(dbData.messageIdBot) - .then((e) => { - e.edit({ content: `${setting.emoji} **${rcount}** | <#${message.channel.id}>`, embeds: [starEmbed], components: buttons }) - }) - } -} - -async function brainRemove(reaction, setting) { - const message = reaction.message - let rcount = reaction.count - const db = reaction.client.db.Star - - if (reaction.users.cache.has(message.author.id)) rcount -= 1 - - const dbData = await db.findOne({ where: { messageId: message.id, emoji: setting.emoji } }) - if (!dbData) return - - let ChaThd - if (setting.thread && setting.ThdId) ChaThd = await (await reaction.client.channels.fetch(setting.ChaId)).threads.fetch(setting.ThdId) - else ChaThd = await reaction.client.channels.fetch(setting.ChaId) - - const starEmbed = await createEmbed(message) - const button = await createButton(message) - - ChaThd.messages.fetch(dbData.messageIdBot) - .then(e => { - e.edit({ content: `${setting.emoji} **${rcount}** | <#${message.channel.id}>`, embeds: [starEmbed], components: [button] }) - }) -} - -async function createEmbed(MainMessage) { - const avatar = MainMessage.author.avatarURL({ extension: "png", size: 4096 }) - - const embed = new EmbedBuilder() - .setAuthor({ name: (MainMessage.author.tag.endsWith("#0000") ? MainMessage.author.tag.slice(0, -5) : MainMessage.author.tag), iconURL: typeof avatar === "string" ? avatar : undefined }) - .setColor(Math.floor(Math.random() * 16777215).toString(16)) - .setTimestamp(new Date()); - - if (MainMessage.content) embed.setDescription(MainMessage.content) - else if (MainMessage.embeds[0]) { - let yesnt = true - MainMessage.embeds.forEach(e => { if (e.description && yesnt) { embed.setDescription(e.description); yesnt = false } }) - } - - if (MainMessage.attachments.size) embed.setImage(MainMessage.attachments.first().url) - - if (MainMessage.type === MessageType.Reply) { - let reference = await MainMessage.fetchReference() - if (reference.content) embed.setFields({ name: "Replied to:", value: reference.content }) - else if (reference.embeds[0]) { - let yesnt = true - reference.embeds.forEach(e => { if (e.description && yesnt) { embed.setFields({ name: "Replied to:", value: e.description }); yesnt = false } }) - } - } - - return embed -} - -async function createButton(message) { - let mainButton = new ActionRowBuilder() - .addComponents(new ButtonBuilder() - .setLabel("Original Message") - .setStyle("Link") - .setURL(message.url) - ) - - if (message.type === MessageType.Reply) { - let reference = await message.fetchReference() - let replyButton = new ActionRowBuilder() - .addComponents(new ButtonBuilder() - .setLabel("Reply Message") - .setStyle("Link") - .setURL(reference.url) - ) - return [mainButton, replyButton] - } - else { - return [mainButton] - } -} - +const { ButtonBuilder, ActionRowBuilder, EmbedBuilder, MessageType } = require("discord.js") +const { starBoardEmoji, guildMainId } = require("../config.json") + +function StarboardAdd(reaction) { + if (reaction.message.guildId !== guildMainId) return + starBoardEmoji.forEach(async e => { + if (reaction.emoji.name === e.emoji && e.ChaId) await brainAdd(reaction, e) + }) +} + +function StarboardRemove(reaction) { + starBoardEmoji.forEach(async e => { + if (reaction.emoji.name === e.emoji && e.ChaId) await brainRemove(reaction, e) + }) +} + +async function brainAdd(reaction, setting) { + const message = reaction.message + let rcount = reaction.count + const db = reaction.client.db.Star + + let ChaThd + if (setting.thread && setting.ThdId) ChaThd = await (await reaction.client.channels.fetch(setting.ChaId)).threads.fetch(setting.ThdId) + else ChaThd = await reaction.client.channels.fetch(setting.ChaId) + + if (reaction.users.cache.has(message.author.id)) rcount-- + + const dbData = await db.findOne({ where: { messageId: message.id, emoji: setting.emoji } }) + + if (rcount >= 5 && !dbData) { + let mesDate = new Date(message.createdTimestamp) + let now = new Date() + let diffTime = Math.abs(now.getTime - mesDate.getTime) + let diffDays = Math.floor(diffTime / (1000 * 60 * 60 * 24)) + + if (diffDays >= 20) return; + + const starEmbed = await createEmbed(message) + const buttons = await createButton(message) + + ChaThd.send({ content: `${setting.emoji} **${rcount}** | <#${message.channel.id}>`, embeds: starEmbed, components: buttons }) + .then(async ownmessage => { + await db.create({ + messageId: message.id, + messageIdBot: ownmessage.id, + emoji: setting.emoji + }) + }) + .catch(console.error) + } + else if (dbData) { + const starEmbed = await createEmbed(message) + const buttons = await createButton(message) + + ChaThd.messages.fetch(dbData.messageIdBot) + .then((e) => { + e.edit({ content: `${setting.emoji} **${rcount}** | <#${message.channel.id}>`, embeds: starEmbed, components: buttons }) + }) + } +} + +async function brainRemove(reaction, setting) { + const message = reaction.message + let rcount = reaction.count + const db = reaction.client.db.Star + + if (reaction.users.cache.has(message.author.id)) rcount -= 1 + + const dbData = await db.findOne({ where: { messageId: message.id, emoji: setting.emoji } }) + if (!dbData) return + + let ChaThd + if (setting.thread && setting.ThdId) ChaThd = await (await reaction.client.channels.fetch(setting.ChaId)).threads.fetch(setting.ThdId) + else ChaThd = await reaction.client.channels.fetch(setting.ChaId) + + const starEmbed = await createEmbed(message) + const buttons = await createButton(message) + + ChaThd.messages.fetch(dbData.messageIdBot) + .then(e => { + e.edit({ content: `${setting.emoji} **${rcount}** | <#${message.channel.id}>`, embeds: starEmbed, components: buttons }) + }) +} + +async function createEmbed(MainMessage) { + const avatar = MainMessage.author.avatarURL({ extension: "png", size: 4096 }) + + const embed = new EmbedBuilder() + .setAuthor({ name: (MainMessage.author.tag.endsWith("#0000") ? MainMessage.author.tag.slice(0, -5) : MainMessage.author.tag), iconURL: typeof avatar === "string" ? avatar : undefined }) + .setColor(Math.floor(Math.random() * 16777215).toString(16)) + .setTimestamp(new Date()); + + if (MainMessage.content) embed.setDescription(MainMessage.content) + else if (MainMessage.embeds[0]) { + let yesnt = true + MainMessage.embeds.forEach(e => { if (e.description && yesnt) { embed.setDescription(e.description); yesnt = false } }) + } + + if (MainMessage.attachments.size) embed.setImage(MainMessage.attachments.first().url) + + if (MainMessage.type === MessageType.Reply) { + await MainMessage.fetchReference().then(reference => { + if (reference.content) embed.setFields({ name: "Replied to:", value: reference.content }) + else if (reference.embeds[0]) { + let yesnt = true + reference.embeds.forEach(e => { if (e.description && yesnt) { embed.setFields({ name: "Replied to:", value: e.description }); yesnt = false } }) + } + }) + } + + return [embed] +} + +async function createButton(message) { + let buttons = [new ActionRowBuilder() + .addComponents(new ButtonBuilder() + .setLabel("Original Message") + .setStyle("Link") + .setURL(message.url) + )] + + if (message.type === MessageType.Reply) { + await message.fetchReference().then(reference => buttons.push(new ActionRowBuilder() + .addComponents(new ButtonBuilder() + .setLabel("Reply Message") + .setStyle("Link") + .setURL(reference.url) + ))) + } + return buttons +} + module.exports = { StarboardAdd, StarboardRemove } \ No newline at end of file diff --git a/events/Client/ready.js b/events/Client/ready.js index c981de4..158aff1 100644 --- a/events/Client/ready.js +++ b/events/Client/ready.js @@ -1,90 +1,90 @@ -const { PermissionsBitField, EmbedBuilder } = require('discord.js'); -const { showLink, debugCha } = require('../../config.json'); -const { ProcessDOS } = require('../../Util/Dos.js'); - -module.exports = { - name: 'ready', - on: false, - async execute(client) { - const base = require(`./ready.js`).base - base(client).then(async client => client.debugCha = await client.channels.fetch(debugCha)) - }, - async base(client) { - client.db.Cases.sync(); - client.db.Star.sync(); - - let guilds = await client.guilds.fetch() - - guilds.forEach(async guild => { - let guildFetched = await guild.fetch() - await guildFetched.channels.fetch() - await guildFetched.members.fetchMe() - console.log(`Channels of ${guildFetched.name} loaded (${guildFetched.id})`) - }) - - - if (showLink) { - console.log(client.generateInvite({ - permissions: PermissionsBitField.All, - scopes: ["applications.commands", "bot"] - })) - } - - console.log(`Login as ${client.user.tag}`); - ProcessDOS(client) - - - // Errors handler - process.on("uncaughtException", async err => { - console.error(err) - if (client.debugCha) client.debugCha.send({ - embeds: [new EmbedBuilder({ - author: { name: "Error", iconURL: "https://raw.githubusercontent.com/abrahammurciano/discord-lumberjack/main/images/error.png" }, - description: "UncaughtException", - fields: [ - { - name: "Error", - value: `${err}\n\n${err.message}`, - inline: true - }, - { - name: "From", - value: `${err.stack}`, - inline: true - } - ] - })] - }).catch(() => {}) - }); - - process.on("unhandledRejection", async err => { - console.error(err) - let stack = "" - let message = "" - if (err instanceof Error) { - if (err.message === "Received one or more errors") return; - stack = err.stack - message = err.message - } - else stack = err - if (client.debugCha) client.debugCha.send({ - embeds: [new EmbedBuilder({ - author: { name: "Error", iconURL: "https://raw.githubusercontent.com/abrahammurciano/discord-lumberjack/main/images/error.png" }, - description: "UnhandledRejection", - fields: [ - { - name: "Error", - value: `${err}\n\n${message}`, - inline: true - }, - { - name: "From", - value: `${stack}`, - inline: true - }] - })] - }).catch(() => {}) - }); - return client - } +const { PermissionsBitField, EmbedBuilder } = require('discord.js'); +const { showLink, debugCha } = require('../../config.json'); +const { ProcessDOS } = require('../../Util/Dos.js'); + +module.exports = { + name: 'ready', + on: false, + async execute(client) { + const base = require(`./ready.js`).base + base(client).then(async client => client.debugCha = await client.channels.fetch(debugCha)) + }, + async base(client) { + client.db.Cases.sync(); + client.db.Star.sync(); + + let guilds = await client.guilds.fetch() + + guilds.forEach(async guild => { + let guildFetched = await guild.fetch() + await guildFetched.channels.fetch() + await guildFetched.members.fetchMe() + console.log(`Channels of ${guildFetched.name} loaded (${guildFetched.id})`) + }) + + + if (showLink) { + console.log(client.generateInvite({ + permissions: PermissionsBitField.All, + scopes: ["applications.commands", "bot"] + })) + } + + console.log(`Login as ${client.user.tag}`); + ProcessDOS(client) + + + // Errors handler + process.on("uncaughtException", async err => { + console.error(err) + if (client.debugCha) client.debugCha.send({ + embeds: [new EmbedBuilder({ + author: { name: "Error", iconURL: "https://raw.githubusercontent.com/abrahammurciano/discord-lumberjack/main/images/error.png" }, + description: "UncaughtException", + fields: [ + { + name: "Error", + value: `${err}\n\n${err.message}`, + inline: true + }, + { + name: "From", + value: `${err.stack}`, + inline: true + } + ] + })] + }).catch(() => {}) + }); + + process.on("unhandledRejection", async err => { + console.error(err) + let stack = "" + let message = "" + if (err instanceof Error) { + if (err.message === "Received one or more errors") return; + stack = err.stack + message = err.message + } + else stack = err + if (client.debugCha) client.debugCha.send({ + embeds: [new EmbedBuilder({ + author: { name: "Error", iconURL: "https://raw.githubusercontent.com/abrahammurciano/discord-lumberjack/main/images/error.png" }, + description: "UnhandledRejection", + fields: [ + { + name: "Error", + value: `${err}\n\n${message}`, + inline: true + }, + { + name: "From", + value: `${stack}`, + inline: true + }] + })] + }).catch(() => {}) + }); + return client + } }; \ No newline at end of file diff --git a/events/Message/MessageCreate.js b/events/Message/MessageCreate.js index 6a1e29c..4fc2afb 100755 --- a/events/Message/MessageCreate.js +++ b/events/Message/MessageCreate.js @@ -1,15 +1,15 @@ -module.exports = { - name: "messageCreate", - on: true, - async execute(messages) { - if (messages.partial) {await messages.fetch().catch(e => {console.error("A partial message couldn't get fetch.")})} - if (messages.author.id === client.user.id) return; - - client.messages.forEach(e => { if (e.code) e.code(messages).catch(console.error) }) - - const message = client.messages.get(messages.content); - if (!message || message?.onlyCode) return; - - message.execute(messages).catch(console.error); - } +module.exports = { + name: "messageCreate", + on: true, + async execute(messages) { + if (messages.partial) {await messages.fetch().catch(e => {console.error("A partial message couldn't get fetch.")})} + if (messages.author.id === client.user.id) return; + + client.messages.forEach(e => { if (e.code) e.code(messages).catch(console.error) }) + + const message = client.messages.get(messages.content); + if (!message || message?.onlyCode) return; + + message.execute(messages).catch(console.error); + } } \ No newline at end of file diff --git a/main.js b/main.js index d22b707..9cec620 100755 --- a/main.js +++ b/main.js @@ -1,10 +1,10 @@ -const { Client, Partials } = require('discord.js'); -const { GetJsFile } = require('./Util/GetJSFile.js') -const { token } = require('./config.json'); - -client = new Client({ intents: 34306, presence: { status: 'idle' }, partials: [Partials.Channel, Partials.Message, Partials.Reaction]}); -client.db = require('./Util/database'); - -GetJsFile(client) - +const { Client, Partials } = require('discord.js'); +const { GetJsFile } = require('./Util/GetJSFile.js') +const { token } = require('./config.json'); + +client = new Client({ intents: 34306, presence: { status: 'idle' }, partials: [Partials.Channel, Partials.Message, Partials.Reaction]}); +client.db = require('./Util/database'); + +GetJsFile(client) + client.login(token); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index b0d675e..23920e4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,2931 +1,2931 @@ -{ - "name": "processes", - "version": "1.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "processes", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "@discordjs/rest": "0.4.1", - "axios": "^0.27.2", - "discord-api-types": "0.33.0", - "discord.js": "^14.2.0", - "sequelize": "6.19.1", - "sqlite3": "^5.0.8" - } - }, - "node_modules/@discordjs/builders": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.2.0.tgz", - "integrity": "sha512-ARy4BUTMU+S0ZI6605NDqfWO+qZqV2d/xfY32z3hVSsd9IaAKJBZ1ILTZLy87oIjW8+gUpQmk9Kt0ZP9bmmd8Q==", - "dependencies": { - "@sapphire/shapeshift": "^3.5.1", - "discord-api-types": "^0.37.3", - "fast-deep-equal": "^3.1.3", - "ts-mixer": "^6.0.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/@discordjs/builders/node_modules/discord-api-types": { - "version": "0.37.11", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.11.tgz", - "integrity": "sha512-cUNXrCdD4hEj5iJ9SligTNur64rNnLX5s6CbvmatRpWKMZtrLTOlyLhuXmVbjfDXeXH7os8Qb71Wa7IEhC27Sw==" - }, - "node_modules/@discordjs/collection": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.7.0.tgz", - "integrity": "sha512-R5i8Wb8kIcBAFEPLLf7LVBQKBDYUL+ekb23sOgpkpyGT+V4P7V83wTxcsqmX+PbqHt4cEHn053uMWfRqh/Z/nA==", - "deprecated": "no longer supported", - "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/@discordjs/rest": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-0.4.1.tgz", - "integrity": "sha512-rtWy+AIfNlfjGkAgA2TJLASdqli07aTNQceVGT6RQQiQaEqV0nsfBO4WtDlDzk7PmO3w+InP3dpwEolJI5jz0A==", - "deprecated": "no longer supported", - "dependencies": { - "@discordjs/collection": "^0.7.0-dev", - "@sapphire/async-queue": "^1.3.1", - "@sapphire/snowflake": "^3.2.1", - "@types/node-fetch": "^2.6.1", - "discord-api-types": "^0.29.0", - "form-data": "^4.0.0", - "node-fetch": "^2.6.7", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/@discordjs/rest/node_modules/discord-api-types": { - "version": "0.29.0", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.29.0.tgz", - "integrity": "sha512-Ekq1ICNpOTVajXKZguNFrsDeTmam+ZeA38txsNLZnANdXUjU6QBPIZLUQTC6MzigFGb0Tt8vk4xLnXmzv0shNg==" - }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "optional": true - }, - "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", - "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", - "dependencies": { - "detect-libc": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.7", - "nopt": "^5.0.0", - "npmlog": "^5.0.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "optional": true, - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "optional": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@sapphire/async-queue": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.0.tgz", - "integrity": "sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==", - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@sapphire/shapeshift": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.6.0.tgz", - "integrity": "sha512-tu2WLRdo5wotHRvsCkspg3qMiP6ETC3Q1dns1Q5V6zKUki+1itq6AbhMwohF9ZcLoYqg+Y8LkgRRtVxxTQVTBQ==", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "lodash.uniqwith": "^4.5.0" - }, - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@sapphire/snowflake": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.2.2.tgz", - "integrity": "sha512-ula2O0kpSZtX9rKXNeQMrHwNd7E4jPDJYUXmEGTFdMRfyfMw+FPyh04oKMjAiDuOi64bYgVkOV3MjK+loImFhQ==", - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, - "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==", - "optional": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - }, - "node_modules/@types/node": { - "version": "18.7.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.23.tgz", - "integrity": "sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==" - }, - "node_modules/@types/node-fetch": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", - "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", - "dependencies": { - "@types/node": "*", - "form-data": "^3.0.0" - } - }, - "node_modules/@types/node-fetch/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/@types/validator": { - "version": "13.7.7", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.7.tgz", - "integrity": "sha512-jiEw2kTUJ8Jsh4A1K4b5Pkjj9Xz6FktLLOQ36ZVLRkmxFbpTvAV2VRoKMojz8UlZxNg/2dZqzpigH4JYn1bkQg==" - }, - "node_modules/@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", - "dependencies": { - "@types/node": "*" - } - }, - "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/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/agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", - "optional": true, - "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "optional": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" - }, - "node_modules/are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "dependencies": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.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/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/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "optional": true, - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 10" - } - }, - "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/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "bin": { - "color-support": "bin.js" - } - }, - "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/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "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": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "optional": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/discord-api-types": { - "version": "0.33.0", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.0.tgz", - "integrity": "sha512-RS1dMM6xuMhdHwQJ0T+XuCD7v1tKnyZ89Eq6q/DbOJWMbIh3ihgAzDhcF70QsFCtk9a5Gn9XU29S7eoEXuwQ5w==" - }, - "node_modules/discord.js": { - "version": "14.5.0", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.5.0.tgz", - "integrity": "sha512-Kd5OqdeiXe3t9eHUHCzf1r3LmKpeJJ7lKqwlWX1qdC0WfsbO2K3kucIDLfe0INnZVZaErUQ6/U6kGbTDnGgwZg==", - "dependencies": { - "@discordjs/builders": "^1.2.0", - "@discordjs/collection": "^1.1.0", - "@discordjs/rest": "^1.2.0", - "@sapphire/snowflake": "^3.2.2", - "@types/ws": "^8.5.3", - "discord-api-types": "^0.37.10", - "fast-deep-equal": "^3.1.3", - "lodash.snakecase": "^4.1.1", - "tslib": "^2.4.0", - "undici": "^5.10.0", - "ws": "^8.9.0" - }, - "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/discord.js/node_modules/@discordjs/collection": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.1.0.tgz", - "integrity": "sha512-PQ2Bv6pnT7aGPCKWbvvNRww5tYCGpggIQVgpuF9TdDPeR6n6vQYxezXiLVOS9z2B62Dp4c+qepQ15SgJbLYtCQ==", - "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/discord.js/node_modules/@discordjs/rest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.2.0.tgz", - "integrity": "sha512-WX79uzMdnBzFNgsDdA440Ia2q7SMk6F8bNaPMmV4i6qcUNJpg+Sgb2spKuQmQPlNTX4HCntR609xHqUkK1tnVQ==", - "dependencies": { - "@discordjs/collection": "^1.1.0", - "@sapphire/async-queue": "^1.5.0", - "@sapphire/snowflake": "^3.2.2", - "discord-api-types": "^0.37.10", - "file-type": "^18.0.0", - "tslib": "^2.4.0", - "undici": "^5.10.0" - }, - "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/discord.js/node_modules/discord-api-types": { - "version": "0.37.11", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.11.tgz", - "integrity": "sha512-cUNXrCdD4hEj5iJ9SligTNur64rNnLX5s6CbvmatRpWKMZtrLTOlyLhuXmVbjfDXeXH7os8Qb71Wa7IEhC27Sw==" - }, - "node_modules/dottie": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", - "integrity": "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==" - }, - "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==" - }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "optional": true - }, - "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==" - }, - "node_modules/file-type": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-18.0.0.tgz", - "integrity": "sha512-jjMwFpnW8PKofLE/4ohlhqwDk5k0NC6iy0UHAJFKoY1fQeGMN0GDdLgHQrvCbSpMwbqzoCZhRI5dETCZna5qVA==", - "dependencies": { - "readable-web-to-node-stream": "^3.0.2", - "strtok3": "^7.0.0", - "token-types": "^5.0.1" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "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": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "optional": true - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" - }, - "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "optional": true - }, - "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==", - "optional": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "optional": true, - "dependencies": { - "ms": "^2.0.0" - } - }, - "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==", - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "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/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "optional": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "optional": true - }, - "node_modules/inflection": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", - "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==", - "engines": [ - "node >= 0.4.0" - ] - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "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/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "optional": true - }, - "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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "optional": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "optional": true - }, - "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.snakecase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", - "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" - }, - "node_modules/lodash.uniqwith": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniqwith/-/lodash.uniqwith-4.5.0.tgz", - "integrity": "sha512-7lYL8bLopMoy4CTICbxygAUq6CdRJ36vFc80DucPueUee+d5NBRxz3FdT9Pes/HEx5mPoT9jwnsEJWz1N7uq7Q==" - }, - "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/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/make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "optional": true, - "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "optional": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "optional": true, - "dependencies": { - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "optionalDependencies": { - "encoding": "^0.1.12" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "optional": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "optional": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "optional": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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/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/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", - "engines": { - "node": "*" - } - }, - "node_modules/moment-timezone": { - "version": "0.5.37", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.37.tgz", - "integrity": "sha512-uEDzDNFhfaywRl+vwXxffjjq1q0Vzr+fcQpQ1bU0kbzorfS7zVtZnCnGc8mhWmF39d4g4YriF6kwA75mJKE/Zg==", - "dependencies": { - "moment": ">= 2.9.0" - }, - "engines": { - "node": "*" - } - }, - "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/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "optional": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-gyp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "optional": true, - "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": ">= 10.12.0" - } - }, - "node_modules/node-gyp/node_modules/are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "optional": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/node-gyp/node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "optional": true, - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/node-gyp/node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "optional": true, - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "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": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "dependencies": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "optional": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/peek-readable": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", - "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==", - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/pg-connection-string": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", - "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "optional": true - }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "optional": true, - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, - "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/readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "dependencies": { - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "optional": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/retry-as-promised": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-5.0.0.tgz", - "integrity": "sha512-6S+5LvtTl2ggBumk04hBo/4Uf6fRJUwIgunGZ7CYEBCeufGFW1Pu6ucUf/UskHeWOIsUcLOGLFXPig5tR5V1nA==" - }, - "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.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/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "optional": true - }, - "node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sequelize": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.19.1.tgz", - "integrity": "sha512-iTgi0y6q6XCFf2+Tzclhpe/EBVlCNOSl5fLNmquAmrgfOsDzEoPbceu0TXmrEe9osYHscX295awi0+dTDR1qzQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/sequelize" - } - ], - "dependencies": { - "@types/debug": "^4.1.7", - "@types/validator": "^13.7.1", - "debug": "^4.3.3", - "dottie": "^2.0.2", - "inflection": "^1.13.2", - "lodash": "^4.17.21", - "moment": "^2.29.1", - "moment-timezone": "^0.5.34", - "pg-connection-string": "^2.5.0", - "retry-as-promised": "^5.0.0", - "semver": "^7.3.5", - "sequelize-pool": "^7.1.0", - "toposort-class": "^1.0.1", - "uuid": "^8.3.2", - "validator": "^13.7.0", - "wkx": "^0.5.0" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependenciesMeta": { - "ibm_db": { - "optional": true - }, - "mariadb": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "pg": { - "optional": true - }, - "pg-hstore": { - "optional": true - }, - "snowflake-sdk": { - "optional": true - }, - "sqlite3": { - "optional": true - }, - "tedious": { - "optional": true - } - } - }, - "node_modules/sequelize-pool": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", - "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "optional": true, - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", - "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", - "optional": true, - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", - "optional": true, - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/sqlite3": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.1.tgz", - "integrity": "sha512-mMinkrQr/LKJqFiFF+AF7imPSzRCCpTCreusZO3D/ssJHVjZOrbu2Caz+zPH5KTmGGXBxXMGSRDssL+44CLxvg==", - "hasInstallScript": true, - "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.0", - "node-addon-api": "^4.2.0", - "tar": "^6.1.11" - }, - "optionalDependencies": { - "node-gyp": "8.x" - }, - "peerDependencies": { - "node-gyp": "8.x" - }, - "peerDependenciesMeta": { - "node-gyp": { - "optional": true - } - } - }, - "node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "optional": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "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/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strtok3": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", - "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^5.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "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/token-types": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", - "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/toposort-class": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", - "integrity": "sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==" - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/ts-mixer": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.1.tgz", - "integrity": "sha512-hvE+ZYXuINrx6Ei6D6hz+PTim0Uf++dYbK9FFifLNwQj+RwKquhQpn868yZsCtJYiclZF1u8l6WZxxKi+vv7Rg==" - }, - "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "node_modules/undici": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.10.0.tgz", - "integrity": "sha512-c8HsD3IbwmjjbLvoZuRI26TZic+TSEe8FPMLLOkN1AfYRhdjnKBU6yL+IwcSCbdZiX4e5t0lfMDLDCqj4Sq70g==", - "engines": { - "node": ">=12.18" - } - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "optional": true, - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "optional": true, - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/validator": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "optional": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/wkx": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", - "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/ws": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", - "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - }, - "dependencies": { - "@discordjs/builders": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.2.0.tgz", - "integrity": "sha512-ARy4BUTMU+S0ZI6605NDqfWO+qZqV2d/xfY32z3hVSsd9IaAKJBZ1ILTZLy87oIjW8+gUpQmk9Kt0ZP9bmmd8Q==", - "requires": { - "@sapphire/shapeshift": "^3.5.1", - "discord-api-types": "^0.37.3", - "fast-deep-equal": "^3.1.3", - "ts-mixer": "^6.0.1", - "tslib": "^2.4.0" - }, - "dependencies": { - "discord-api-types": { - "version": "0.37.11", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.11.tgz", - "integrity": "sha512-cUNXrCdD4hEj5iJ9SligTNur64rNnLX5s6CbvmatRpWKMZtrLTOlyLhuXmVbjfDXeXH7os8Qb71Wa7IEhC27Sw==" - } - } - }, - "@discordjs/collection": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.7.0.tgz", - "integrity": "sha512-R5i8Wb8kIcBAFEPLLf7LVBQKBDYUL+ekb23sOgpkpyGT+V4P7V83wTxcsqmX+PbqHt4cEHn053uMWfRqh/Z/nA==" - }, - "@discordjs/rest": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-0.4.1.tgz", - "integrity": "sha512-rtWy+AIfNlfjGkAgA2TJLASdqli07aTNQceVGT6RQQiQaEqV0nsfBO4WtDlDzk7PmO3w+InP3dpwEolJI5jz0A==", - "requires": { - "@discordjs/collection": "^0.7.0-dev", - "@sapphire/async-queue": "^1.3.1", - "@sapphire/snowflake": "^3.2.1", - "@types/node-fetch": "^2.6.1", - "discord-api-types": "^0.29.0", - "form-data": "^4.0.0", - "node-fetch": "^2.6.7", - "tslib": "^2.3.1" - }, - "dependencies": { - "discord-api-types": { - "version": "0.29.0", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.29.0.tgz", - "integrity": "sha512-Ekq1ICNpOTVajXKZguNFrsDeTmam+ZeA38txsNLZnANdXUjU6QBPIZLUQTC6MzigFGb0Tt8vk4xLnXmzv0shNg==" - } - } - }, - "@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "optional": true - }, - "@mapbox/node-pre-gyp": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", - "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", - "requires": { - "detect-libc": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.7", - "nopt": "^5.0.0", - "npmlog": "^5.0.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" - } - }, - "@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "optional": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "optional": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "@sapphire/async-queue": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.0.tgz", - "integrity": "sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==" - }, - "@sapphire/shapeshift": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.6.0.tgz", - "integrity": "sha512-tu2WLRdo5wotHRvsCkspg3qMiP6ETC3Q1dns1Q5V6zKUki+1itq6AbhMwohF9ZcLoYqg+Y8LkgRRtVxxTQVTBQ==", - "requires": { - "fast-deep-equal": "^3.1.3", - "lodash.uniqwith": "^4.5.0" - } - }, - "@sapphire/snowflake": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.2.2.tgz", - "integrity": "sha512-ula2O0kpSZtX9rKXNeQMrHwNd7E4jPDJYUXmEGTFdMRfyfMw+FPyh04oKMjAiDuOi64bYgVkOV3MjK+loImFhQ==" - }, - "@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "optional": true - }, - "@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", - "requires": { - "@types/ms": "*" - } - }, - "@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - }, - "@types/node": { - "version": "18.7.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.23.tgz", - "integrity": "sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==" - }, - "@types/node-fetch": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", - "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", - "requires": { - "@types/node": "*", - "form-data": "^3.0.0" - }, - "dependencies": { - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - } - } - }, - "@types/validator": { - "version": "13.7.7", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.7.tgz", - "integrity": "sha512-jiEw2kTUJ8Jsh4A1K4b5Pkjj9Xz6FktLLOQ36ZVLRkmxFbpTvAV2VRoKMojz8UlZxNg/2dZqzpigH4JYn1bkQg==" - }, - "@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", - "requires": { - "@types/node": "*" - } - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" - } - }, - "agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", - "optional": true, - "requires": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "optional": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" - }, - "are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "requires": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "optional": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "optional": true - }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "optional": true - }, - "detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==" - }, - "discord-api-types": { - "version": "0.33.0", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.0.tgz", - "integrity": "sha512-RS1dMM6xuMhdHwQJ0T+XuCD7v1tKnyZ89Eq6q/DbOJWMbIh3ihgAzDhcF70QsFCtk9a5Gn9XU29S7eoEXuwQ5w==" - }, - "discord.js": { - "version": "14.5.0", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.5.0.tgz", - "integrity": "sha512-Kd5OqdeiXe3t9eHUHCzf1r3LmKpeJJ7lKqwlWX1qdC0WfsbO2K3kucIDLfe0INnZVZaErUQ6/U6kGbTDnGgwZg==", - "requires": { - "@discordjs/builders": "^1.2.0", - "@discordjs/collection": "^1.1.0", - "@discordjs/rest": "^1.2.0", - "@sapphire/snowflake": "^3.2.2", - "@types/ws": "^8.5.3", - "discord-api-types": "^0.37.10", - "fast-deep-equal": "^3.1.3", - "lodash.snakecase": "^4.1.1", - "tslib": "^2.4.0", - "undici": "^5.10.0", - "ws": "^8.9.0" - }, - "dependencies": { - "@discordjs/collection": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.1.0.tgz", - "integrity": "sha512-PQ2Bv6pnT7aGPCKWbvvNRww5tYCGpggIQVgpuF9TdDPeR6n6vQYxezXiLVOS9z2B62Dp4c+qepQ15SgJbLYtCQ==" - }, - "@discordjs/rest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.2.0.tgz", - "integrity": "sha512-WX79uzMdnBzFNgsDdA440Ia2q7SMk6F8bNaPMmV4i6qcUNJpg+Sgb2spKuQmQPlNTX4HCntR609xHqUkK1tnVQ==", - "requires": { - "@discordjs/collection": "^1.1.0", - "@sapphire/async-queue": "^1.5.0", - "@sapphire/snowflake": "^3.2.2", - "discord-api-types": "^0.37.10", - "file-type": "^18.0.0", - "tslib": "^2.4.0", - "undici": "^5.10.0" - } - }, - "discord-api-types": { - "version": "0.37.11", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.11.tgz", - "integrity": "sha512-cUNXrCdD4hEj5iJ9SligTNur64rNnLX5s6CbvmatRpWKMZtrLTOlyLhuXmVbjfDXeXH7os8Qb71Wa7IEhC27Sw==" - } - } - }, - "dottie": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", - "integrity": "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==" - }, - "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==" - }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "optional": true, - "requires": { - "iconv-lite": "^0.6.2" - } - }, - "env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "optional": true - }, - "err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "optional": true - }, - "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==" - }, - "file-type": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-18.0.0.tgz", - "integrity": "sha512-jjMwFpnW8PKofLE/4ohlhqwDk5k0NC6iy0UHAJFKoY1fQeGMN0GDdLgHQrvCbSpMwbqzoCZhRI5dETCZna5qVA==", - "requires": { - "readable-web-to-node-stream": "^3.0.2", - "strtok3": "^7.0.0", - "token-types": "^5.0.1" - } - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "requires": { - "minipass": "^3.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "optional": true - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" - }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "optional": true - }, - "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==", - "optional": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "optional": true, - "requires": { - "ms": "^2.0.0" - } - }, - "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==", - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "optional": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "optional": true - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "optional": true - }, - "inflection": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", - "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "optional": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "optional": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "optional": true - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.snakecase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", - "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" - }, - "lodash.uniqwith": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniqwith/-/lodash.uniqwith-4.5.0.tgz", - "integrity": "sha512-7lYL8bLopMoy4CTICbxygAUq6CdRJ36vFc80DucPueUee+d5NBRxz3FdT9Pes/HEx5mPoT9jwnsEJWz1N7uq7Q==" - }, - "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" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "optional": true, - "requires": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - } - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "optional": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "optional": true, - "requires": { - "encoding": "^0.1.12", - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - } - }, - "minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "optional": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "optional": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "optional": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, - "moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" - }, - "moment-timezone": { - "version": "0.5.37", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.37.tgz", - "integrity": "sha512-uEDzDNFhfaywRl+vwXxffjjq1q0Vzr+fcQpQ1bU0kbzorfS7zVtZnCnGc8mhWmF39d4g4YriF6kwA75mJKE/Zg==", - "requires": { - "moment": ">= 2.9.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "optional": true - }, - "node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "node-gyp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "optional": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "dependencies": { - "are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "optional": true, - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - } - }, - "npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "optional": true, - "requires": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - } - } - } - }, - "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "requires": { - "abbrev": "1" - } - }, - "npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "requires": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "optional": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - }, - "peek-readable": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", - "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==" - }, - "pg-connection-string": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", - "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "optional": true - }, - "promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "optional": true, - "requires": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "requires": { - "readable-stream": "^3.6.0" - } - }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "optional": true - }, - "retry-as-promised": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-5.0.0.tgz", - "integrity": "sha512-6S+5LvtTl2ggBumk04hBo/4Uf6fRJUwIgunGZ7CYEBCeufGFW1Pu6ucUf/UskHeWOIsUcLOGLFXPig5tR5V1nA==" - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "optional": true - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "sequelize": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.19.1.tgz", - "integrity": "sha512-iTgi0y6q6XCFf2+Tzclhpe/EBVlCNOSl5fLNmquAmrgfOsDzEoPbceu0TXmrEe9osYHscX295awi0+dTDR1qzQ==", - "requires": { - "@types/debug": "^4.1.7", - "@types/validator": "^13.7.1", - "debug": "^4.3.3", - "dottie": "^2.0.2", - "inflection": "^1.13.2", - "lodash": "^4.17.21", - "moment": "^2.29.1", - "moment-timezone": "^0.5.34", - "pg-connection-string": "^2.5.0", - "retry-as-promised": "^5.0.0", - "semver": "^7.3.5", - "sequelize-pool": "^7.1.0", - "toposort-class": "^1.0.1", - "uuid": "^8.3.2", - "validator": "^13.7.0", - "wkx": "^0.5.0" - } - }, - "sequelize-pool": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", - "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==" - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "optional": true - }, - "socks": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", - "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", - "optional": true, - "requires": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - } - }, - "socks-proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", - "optional": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - } - }, - "sqlite3": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.1.tgz", - "integrity": "sha512-mMinkrQr/LKJqFiFF+AF7imPSzRCCpTCreusZO3D/ssJHVjZOrbu2Caz+zPH5KTmGGXBxXMGSRDssL+44CLxvg==", - "requires": { - "@mapbox/node-pre-gyp": "^1.0.0", - "node-addon-api": "^4.2.0", - "node-gyp": "8.x", - "tar": "^6.1.11" - } - }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "optional": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "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" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strtok3": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", - "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", - "requires": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^5.0.0" - } - }, - "tar": { - "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", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "token-types": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", - "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", - "requires": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - } - }, - "toposort-class": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", - "integrity": "sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==" - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "ts-mixer": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.1.tgz", - "integrity": "sha512-hvE+ZYXuINrx6Ei6D6hz+PTim0Uf++dYbK9FFifLNwQj+RwKquhQpn868yZsCtJYiclZF1u8l6WZxxKi+vv7Rg==" - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "undici": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.10.0.tgz", - "integrity": "sha512-c8HsD3IbwmjjbLvoZuRI26TZic+TSEe8FPMLLOkN1AfYRhdjnKBU6yL+IwcSCbdZiX4e5t0lfMDLDCqj4Sq70g==" - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "optional": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "optional": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - }, - "validator": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "optional": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "wkx": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", - "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", - "requires": { - "@types/node": "*" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "ws": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", - "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", - "requires": {} - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } -} +{ + "name": "processes", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "processes", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@discordjs/rest": "0.4.1", + "axios": "^0.27.2", + "discord-api-types": "0.33.0", + "discord.js": "^14.2.0", + "sequelize": "6.19.1", + "sqlite3": "^5.0.8" + } + }, + "node_modules/@discordjs/builders": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.2.0.tgz", + "integrity": "sha512-ARy4BUTMU+S0ZI6605NDqfWO+qZqV2d/xfY32z3hVSsd9IaAKJBZ1ILTZLy87oIjW8+gUpQmk9Kt0ZP9bmmd8Q==", + "dependencies": { + "@sapphire/shapeshift": "^3.5.1", + "discord-api-types": "^0.37.3", + "fast-deep-equal": "^3.1.3", + "ts-mixer": "^6.0.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/@discordjs/builders/node_modules/discord-api-types": { + "version": "0.37.11", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.11.tgz", + "integrity": "sha512-cUNXrCdD4hEj5iJ9SligTNur64rNnLX5s6CbvmatRpWKMZtrLTOlyLhuXmVbjfDXeXH7os8Qb71Wa7IEhC27Sw==" + }, + "node_modules/@discordjs/collection": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.7.0.tgz", + "integrity": "sha512-R5i8Wb8kIcBAFEPLLf7LVBQKBDYUL+ekb23sOgpkpyGT+V4P7V83wTxcsqmX+PbqHt4cEHn053uMWfRqh/Z/nA==", + "deprecated": "no longer supported", + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/@discordjs/rest": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-0.4.1.tgz", + "integrity": "sha512-rtWy+AIfNlfjGkAgA2TJLASdqli07aTNQceVGT6RQQiQaEqV0nsfBO4WtDlDzk7PmO3w+InP3dpwEolJI5jz0A==", + "deprecated": "no longer supported", + "dependencies": { + "@discordjs/collection": "^0.7.0-dev", + "@sapphire/async-queue": "^1.3.1", + "@sapphire/snowflake": "^3.2.1", + "@types/node-fetch": "^2.6.1", + "discord-api-types": "^0.29.0", + "form-data": "^4.0.0", + "node-fetch": "^2.6.7", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/@discordjs/rest/node_modules/discord-api-types": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.29.0.tgz", + "integrity": "sha512-Ekq1ICNpOTVajXKZguNFrsDeTmam+ZeA38txsNLZnANdXUjU6QBPIZLUQTC6MzigFGb0Tt8vk4xLnXmzv0shNg==" + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "optional": true + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", + "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "optional": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "optional": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@sapphire/async-queue": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.0.tgz", + "integrity": "sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sapphire/shapeshift": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.7.0.tgz", + "integrity": "sha512-A6vI1zJoxhjWo4grsxpBRBgk96SqSdjLX5WlzKp9H+bJbkM07mvwcbtbVAmUZHbi/OG3HLfiZ1rlw4BhH6tsBQ==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "lodash.uniqwith": "^4.5.0" + }, + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sapphire/snowflake": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.2.2.tgz", + "integrity": "sha512-ula2O0kpSZtX9rKXNeQMrHwNd7E4jPDJYUXmEGTFdMRfyfMw+FPyh04oKMjAiDuOi64bYgVkOV3MjK+loImFhQ==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" + }, + "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==", + "optional": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" + }, + "node_modules/@types/node": { + "version": "18.7.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.23.tgz", + "integrity": "sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==" + }, + "node_modules/@types/node-fetch": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", + "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", + "dependencies": { + "@types/node": "*", + "form-data": "^3.0.0" + } + }, + "node_modules/@types/node-fetch/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/@types/validator": { + "version": "13.7.7", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.7.tgz", + "integrity": "sha512-jiEw2kTUJ8Jsh4A1K4b5Pkjj9Xz6FktLLOQ36ZVLRkmxFbpTvAV2VRoKMojz8UlZxNg/2dZqzpigH4JYn1bkQg==" + }, + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dependencies": { + "@types/node": "*" + } + }, + "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/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/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "optional": true, + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "optional": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.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/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/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "optional": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "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/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" + } + }, + "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/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "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": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/discord-api-types": { + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.0.tgz", + "integrity": "sha512-RS1dMM6xuMhdHwQJ0T+XuCD7v1tKnyZ89Eq6q/DbOJWMbIh3ihgAzDhcF70QsFCtk9a5Gn9XU29S7eoEXuwQ5w==" + }, + "node_modules/discord.js": { + "version": "14.5.0", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.5.0.tgz", + "integrity": "sha512-Kd5OqdeiXe3t9eHUHCzf1r3LmKpeJJ7lKqwlWX1qdC0WfsbO2K3kucIDLfe0INnZVZaErUQ6/U6kGbTDnGgwZg==", + "dependencies": { + "@discordjs/builders": "^1.2.0", + "@discordjs/collection": "^1.1.0", + "@discordjs/rest": "^1.2.0", + "@sapphire/snowflake": "^3.2.2", + "@types/ws": "^8.5.3", + "discord-api-types": "^0.37.10", + "fast-deep-equal": "^3.1.3", + "lodash.snakecase": "^4.1.1", + "tslib": "^2.4.0", + "undici": "^5.10.0", + "ws": "^8.9.0" + }, + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/discord.js/node_modules/@discordjs/collection": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.1.0.tgz", + "integrity": "sha512-PQ2Bv6pnT7aGPCKWbvvNRww5tYCGpggIQVgpuF9TdDPeR6n6vQYxezXiLVOS9z2B62Dp4c+qepQ15SgJbLYtCQ==", + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/discord.js/node_modules/@discordjs/rest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.2.0.tgz", + "integrity": "sha512-WX79uzMdnBzFNgsDdA440Ia2q7SMk6F8bNaPMmV4i6qcUNJpg+Sgb2spKuQmQPlNTX4HCntR609xHqUkK1tnVQ==", + "dependencies": { + "@discordjs/collection": "^1.1.0", + "@sapphire/async-queue": "^1.5.0", + "@sapphire/snowflake": "^3.2.2", + "discord-api-types": "^0.37.10", + "file-type": "^18.0.0", + "tslib": "^2.4.0", + "undici": "^5.10.0" + }, + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/discord.js/node_modules/discord-api-types": { + "version": "0.37.11", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.11.tgz", + "integrity": "sha512-cUNXrCdD4hEj5iJ9SligTNur64rNnLX5s6CbvmatRpWKMZtrLTOlyLhuXmVbjfDXeXH7os8Qb71Wa7IEhC27Sw==" + }, + "node_modules/dottie": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", + "integrity": "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==" + }, + "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==" + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "optional": true + }, + "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==" + }, + "node_modules/file-type": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-18.0.0.tgz", + "integrity": "sha512-jjMwFpnW8PKofLE/4ohlhqwDk5k0NC6iy0UHAJFKoY1fQeGMN0GDdLgHQrvCbSpMwbqzoCZhRI5dETCZna5qVA==", + "dependencies": { + "readable-web-to-node-stream": "^3.0.2", + "strtok3": "^7.0.0", + "token-types": "^5.0.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "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": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "optional": true + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "optional": true + }, + "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==", + "optional": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "optional": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "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==", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "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/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "optional": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "optional": true + }, + "node_modules/inflection": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", + "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==", + "engines": [ + "node >= 0.4.0" + ] + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "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/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "optional": true + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "optional": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "optional": true + }, + "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.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" + }, + "node_modules/lodash.uniqwith": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniqwith/-/lodash.uniqwith-4.5.0.tgz", + "integrity": "sha512-7lYL8bLopMoy4CTICbxygAUq6CdRJ36vFc80DucPueUee+d5NBRxz3FdT9Pes/HEx5mPoT9jwnsEJWz1N7uq7Q==" + }, + "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/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/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "optional": true, + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", + "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "optional": true, + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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/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/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.37", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.37.tgz", + "integrity": "sha512-uEDzDNFhfaywRl+vwXxffjjq1q0Vzr+fcQpQ1bU0kbzorfS7zVtZnCnGc8mhWmF39d4g4YriF6kwA75mJKE/Zg==", + "dependencies": { + "moment": ">= 2.9.0" + }, + "engines": { + "node": "*" + } + }, + "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/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "optional": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/node-gyp/node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "optional": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "optional": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "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": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "optional": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/peek-readable": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", + "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/pg-connection-string": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", + "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "optional": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "optional": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "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/readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "dependencies": { + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "optional": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/retry-as-promised": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-5.0.0.tgz", + "integrity": "sha512-6S+5LvtTl2ggBumk04hBo/4Uf6fRJUwIgunGZ7CYEBCeufGFW1Pu6ucUf/UskHeWOIsUcLOGLFXPig5tR5V1nA==" + }, + "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.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/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "optional": true + }, + "node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sequelize": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.19.1.tgz", + "integrity": "sha512-iTgi0y6q6XCFf2+Tzclhpe/EBVlCNOSl5fLNmquAmrgfOsDzEoPbceu0TXmrEe9osYHscX295awi0+dTDR1qzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/sequelize" + } + ], + "dependencies": { + "@types/debug": "^4.1.7", + "@types/validator": "^13.7.1", + "debug": "^4.3.3", + "dottie": "^2.0.2", + "inflection": "^1.13.2", + "lodash": "^4.17.21", + "moment": "^2.29.1", + "moment-timezone": "^0.5.34", + "pg-connection-string": "^2.5.0", + "retry-as-promised": "^5.0.0", + "semver": "^7.3.5", + "sequelize-pool": "^7.1.0", + "toposort-class": "^1.0.1", + "uuid": "^8.3.2", + "validator": "^13.7.0", + "wkx": "^0.5.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependenciesMeta": { + "ibm_db": { + "optional": true + }, + "mariadb": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-hstore": { + "optional": true + }, + "snowflake-sdk": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "tedious": { + "optional": true + } + } + }, + "node_modules/sequelize-pool": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", + "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "optional": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "optional": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "optional": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sqlite3": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.1.tgz", + "integrity": "sha512-mMinkrQr/LKJqFiFF+AF7imPSzRCCpTCreusZO3D/ssJHVjZOrbu2Caz+zPH5KTmGGXBxXMGSRDssL+44CLxvg==", + "hasInstallScript": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.0", + "node-addon-api": "^4.2.0", + "tar": "^6.1.11" + }, + "optionalDependencies": { + "node-gyp": "8.x" + }, + "peerDependencies": { + "node-gyp": "8.x" + }, + "peerDependenciesMeta": { + "node-gyp": { + "optional": true + } + } + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "optional": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "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/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strtok3": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", + "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "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/token-types": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", + "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/toposort-class": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", + "integrity": "sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==" + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/ts-mixer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.1.tgz", + "integrity": "sha512-hvE+ZYXuINrx6Ei6D6hz+PTim0Uf++dYbK9FFifLNwQj+RwKquhQpn868yZsCtJYiclZF1u8l6WZxxKi+vv7Rg==" + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/undici": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.10.0.tgz", + "integrity": "sha512-c8HsD3IbwmjjbLvoZuRI26TZic+TSEe8FPMLLOkN1AfYRhdjnKBU6yL+IwcSCbdZiX4e5t0lfMDLDCqj4Sq70g==", + "engines": { + "node": ">=12.18" + } + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "optional": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "optional": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validator": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "optional": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wkx": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", + "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/ws": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", + "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + }, + "dependencies": { + "@discordjs/builders": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.2.0.tgz", + "integrity": "sha512-ARy4BUTMU+S0ZI6605NDqfWO+qZqV2d/xfY32z3hVSsd9IaAKJBZ1ILTZLy87oIjW8+gUpQmk9Kt0ZP9bmmd8Q==", + "requires": { + "@sapphire/shapeshift": "^3.5.1", + "discord-api-types": "^0.37.3", + "fast-deep-equal": "^3.1.3", + "ts-mixer": "^6.0.1", + "tslib": "^2.4.0" + }, + "dependencies": { + "discord-api-types": { + "version": "0.37.11", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.11.tgz", + "integrity": "sha512-cUNXrCdD4hEj5iJ9SligTNur64rNnLX5s6CbvmatRpWKMZtrLTOlyLhuXmVbjfDXeXH7os8Qb71Wa7IEhC27Sw==" + } + } + }, + "@discordjs/collection": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.7.0.tgz", + "integrity": "sha512-R5i8Wb8kIcBAFEPLLf7LVBQKBDYUL+ekb23sOgpkpyGT+V4P7V83wTxcsqmX+PbqHt4cEHn053uMWfRqh/Z/nA==" + }, + "@discordjs/rest": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-0.4.1.tgz", + "integrity": "sha512-rtWy+AIfNlfjGkAgA2TJLASdqli07aTNQceVGT6RQQiQaEqV0nsfBO4WtDlDzk7PmO3w+InP3dpwEolJI5jz0A==", + "requires": { + "@discordjs/collection": "^0.7.0-dev", + "@sapphire/async-queue": "^1.3.1", + "@sapphire/snowflake": "^3.2.1", + "@types/node-fetch": "^2.6.1", + "discord-api-types": "^0.29.0", + "form-data": "^4.0.0", + "node-fetch": "^2.6.7", + "tslib": "^2.3.1" + }, + "dependencies": { + "discord-api-types": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.29.0.tgz", + "integrity": "sha512-Ekq1ICNpOTVajXKZguNFrsDeTmam+ZeA38txsNLZnANdXUjU6QBPIZLUQTC6MzigFGb0Tt8vk4xLnXmzv0shNg==" + } + } + }, + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "optional": true + }, + "@mapbox/node-pre-gyp": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", + "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", + "requires": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + } + }, + "@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "optional": true, + "requires": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "optional": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@sapphire/async-queue": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.0.tgz", + "integrity": "sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==" + }, + "@sapphire/shapeshift": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.7.0.tgz", + "integrity": "sha512-A6vI1zJoxhjWo4grsxpBRBgk96SqSdjLX5WlzKp9H+bJbkM07mvwcbtbVAmUZHbi/OG3HLfiZ1rlw4BhH6tsBQ==", + "requires": { + "fast-deep-equal": "^3.1.3", + "lodash.uniqwith": "^4.5.0" + } + }, + "@sapphire/snowflake": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.2.2.tgz", + "integrity": "sha512-ula2O0kpSZtX9rKXNeQMrHwNd7E4jPDJYUXmEGTFdMRfyfMw+FPyh04oKMjAiDuOi64bYgVkOV3MjK+loImFhQ==" + }, + "@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "optional": true + }, + "@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "requires": { + "@types/ms": "*" + } + }, + "@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" + }, + "@types/node": { + "version": "18.7.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.23.tgz", + "integrity": "sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==" + }, + "@types/node-fetch": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", + "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", + "requires": { + "@types/node": "*", + "form-data": "^3.0.0" + }, + "dependencies": { + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, + "@types/validator": { + "version": "13.7.7", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.7.tgz", + "integrity": "sha512-jiEw2kTUJ8Jsh4A1K4b5Pkjj9Xz6FktLLOQ36ZVLRkmxFbpTvAV2VRoKMojz8UlZxNg/2dZqzpigH4JYn1bkQg==" + }, + "@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "requires": { + "@types/node": "*" + } + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "optional": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "optional": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "requires": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "optional": true, + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "optional": true + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "optional": true + }, + "detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==" + }, + "discord-api-types": { + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.0.tgz", + "integrity": "sha512-RS1dMM6xuMhdHwQJ0T+XuCD7v1tKnyZ89Eq6q/DbOJWMbIh3ihgAzDhcF70QsFCtk9a5Gn9XU29S7eoEXuwQ5w==" + }, + "discord.js": { + "version": "14.5.0", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.5.0.tgz", + "integrity": "sha512-Kd5OqdeiXe3t9eHUHCzf1r3LmKpeJJ7lKqwlWX1qdC0WfsbO2K3kucIDLfe0INnZVZaErUQ6/U6kGbTDnGgwZg==", + "requires": { + "@discordjs/builders": "^1.2.0", + "@discordjs/collection": "^1.1.0", + "@discordjs/rest": "^1.2.0", + "@sapphire/snowflake": "^3.2.2", + "@types/ws": "^8.5.3", + "discord-api-types": "^0.37.10", + "fast-deep-equal": "^3.1.3", + "lodash.snakecase": "^4.1.1", + "tslib": "^2.4.0", + "undici": "^5.10.0", + "ws": "^8.9.0" + }, + "dependencies": { + "@discordjs/collection": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.1.0.tgz", + "integrity": "sha512-PQ2Bv6pnT7aGPCKWbvvNRww5tYCGpggIQVgpuF9TdDPeR6n6vQYxezXiLVOS9z2B62Dp4c+qepQ15SgJbLYtCQ==" + }, + "@discordjs/rest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.2.0.tgz", + "integrity": "sha512-WX79uzMdnBzFNgsDdA440Ia2q7SMk6F8bNaPMmV4i6qcUNJpg+Sgb2spKuQmQPlNTX4HCntR609xHqUkK1tnVQ==", + "requires": { + "@discordjs/collection": "^1.1.0", + "@sapphire/async-queue": "^1.5.0", + "@sapphire/snowflake": "^3.2.2", + "discord-api-types": "^0.37.10", + "file-type": "^18.0.0", + "tslib": "^2.4.0", + "undici": "^5.10.0" + } + }, + "discord-api-types": { + "version": "0.37.11", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.11.tgz", + "integrity": "sha512-cUNXrCdD4hEj5iJ9SligTNur64rNnLX5s6CbvmatRpWKMZtrLTOlyLhuXmVbjfDXeXH7os8Qb71Wa7IEhC27Sw==" + } + } + }, + "dottie": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", + "integrity": "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==" + }, + "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==" + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + } + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "optional": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "optional": true + }, + "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==" + }, + "file-type": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-18.0.0.tgz", + "integrity": "sha512-jjMwFpnW8PKofLE/4ohlhqwDk5k0NC6iy0UHAJFKoY1fQeGMN0GDdLgHQrvCbSpMwbqzoCZhRI5dETCZna5qVA==", + "requires": { + "readable-web-to-node-stream": "^3.0.2", + "strtok3": "^7.0.0", + "token-types": "^5.0.1" + } + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "optional": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "optional": true + }, + "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==", + "optional": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "optional": true, + "requires": { + "ms": "^2.0.0" + } + }, + "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==", + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "optional": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "optional": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "optional": true + }, + "inflection": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", + "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "optional": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "optional": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "optional": true + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" + }, + "lodash.uniqwith": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniqwith/-/lodash.uniqwith-4.5.0.tgz", + "integrity": "sha512-7lYL8bLopMoy4CTICbxygAUq6CdRJ36vFc80DucPueUee+d5NBRxz3FdT9Pes/HEx5mPoT9jwnsEJWz1N7uq7Q==" + }, + "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" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "optional": true, + "requires": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + } + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minipass": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", + "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "optional": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "optional": true, + "requires": { + "encoding": "^0.1.12", + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "optional": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "optional": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "optional": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" + }, + "moment-timezone": { + "version": "0.5.37", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.37.tgz", + "integrity": "sha512-uEDzDNFhfaywRl+vwXxffjjq1q0Vzr+fcQpQ1bU0kbzorfS7zVtZnCnGc8mhWmF39d4g4YriF6kwA75mJKE/Zg==", + "requires": { + "moment": ">= 2.9.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "optional": true + }, + "node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "optional": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "dependencies": { + "are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "optional": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + } + }, + "npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "optional": true, + "requires": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + } + } + } + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "requires": { + "abbrev": "1" + } + }, + "npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "requires": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "optional": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "peek-readable": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", + "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==" + }, + "pg-connection-string": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", + "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "optional": true + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "optional": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "requires": { + "readable-stream": "^3.6.0" + } + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "optional": true + }, + "retry-as-promised": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-5.0.0.tgz", + "integrity": "sha512-6S+5LvtTl2ggBumk04hBo/4Uf6fRJUwIgunGZ7CYEBCeufGFW1Pu6ucUf/UskHeWOIsUcLOGLFXPig5tR5V1nA==" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "optional": true + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "sequelize": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.19.1.tgz", + "integrity": "sha512-iTgi0y6q6XCFf2+Tzclhpe/EBVlCNOSl5fLNmquAmrgfOsDzEoPbceu0TXmrEe9osYHscX295awi0+dTDR1qzQ==", + "requires": { + "@types/debug": "^4.1.7", + "@types/validator": "^13.7.1", + "debug": "^4.3.3", + "dottie": "^2.0.2", + "inflection": "^1.13.2", + "lodash": "^4.17.21", + "moment": "^2.29.1", + "moment-timezone": "^0.5.34", + "pg-connection-string": "^2.5.0", + "retry-as-promised": "^5.0.0", + "semver": "^7.3.5", + "sequelize-pool": "^7.1.0", + "toposort-class": "^1.0.1", + "uuid": "^8.3.2", + "validator": "^13.7.0", + "wkx": "^0.5.0" + } + }, + "sequelize-pool": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", + "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "optional": true + }, + "socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "optional": true, + "requires": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "optional": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + } + }, + "sqlite3": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.1.tgz", + "integrity": "sha512-mMinkrQr/LKJqFiFF+AF7imPSzRCCpTCreusZO3D/ssJHVjZOrbu2Caz+zPH5KTmGGXBxXMGSRDssL+44CLxvg==", + "requires": { + "@mapbox/node-pre-gyp": "^1.0.0", + "node-addon-api": "^4.2.0", + "node-gyp": "8.x", + "tar": "^6.1.11" + } + }, + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "optional": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "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" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strtok3": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", + "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", + "requires": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^5.0.0" + } + }, + "tar": { + "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", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "token-types": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", + "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", + "requires": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + } + }, + "toposort-class": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", + "integrity": "sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==" + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "ts-mixer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.1.tgz", + "integrity": "sha512-hvE+ZYXuINrx6Ei6D6hz+PTim0Uf++dYbK9FFifLNwQj+RwKquhQpn868yZsCtJYiclZF1u8l6WZxxKi+vv7Rg==" + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "undici": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.10.0.tgz", + "integrity": "sha512-c8HsD3IbwmjjbLvoZuRI26TZic+TSEe8FPMLLOkN1AfYRhdjnKBU6yL+IwcSCbdZiX4e5t0lfMDLDCqj4Sq70g==" + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "optional": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "optional": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "validator": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "optional": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "wkx": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", + "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", + "requires": { + "@types/node": "*" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "ws": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", + "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", + "requires": {} + }, + "yallist": { + "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 256f1a4..28cb818 100644 --- a/package.json +++ b/package.json @@ -1,20 +1,20 @@ -{ - "name": "processes", - "version": "1.0.0", - "description": "", - "main": "main.js", - "scripts": { - "start": "node main.js" - }, - "keywords": [], - "author": "5jiji", - "license": "ISC", - "dependencies": { - "@discordjs/rest": "0.4.1", - "axios": "^0.27.2", - "discord-api-types": "0.33.0", - "discord.js": "^14.2.0", - "sequelize": "6.19.1", - "sqlite3": "^5.0.8" - } -} +{ + "name": "processes", + "version": "1.0.0", + "description": "", + "main": "main.js", + "scripts": { + "start": "node main.js" + }, + "keywords": [], + "author": "5jiji", + "license": "ISC", + "dependencies": { + "@discordjs/rest": "0.4.1", + "axios": "^0.27.2", + "discord-api-types": "0.33.0", + "discord.js": "^14.2.0", + "sequelize": "6.19.1", + "sqlite3": "^5.0.8" + } +} From 58e6572fcab89b15e189f633b19546821c862577 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 9 Oct 2022 12:04:48 +0200 Subject: [PATCH 204/236] Edit bot's message from a context menu & some changed --- .vscode/javascript.code-snippets | 2 +- commands/Misc/info.js | 24 +++++++++++------------ commands/Misc/test.js | 6 ++++-- context menu/Messages/bot-edit-message.js | 24 +++++++++++++++++++++++ context menu/User/User info.js | 12 ++++++------ events/Message/MessageCreate.js | 4 ++-- messages/Fun/AtSomeone.js | 21 ++++++++++++++------ 7 files changed, 64 insertions(+), 29 deletions(-) create mode 100644 context menu/Messages/bot-edit-message.js diff --git a/.vscode/javascript.code-snippets b/.vscode/javascript.code-snippets index 10e41c9..fa21688 100644 --- a/.vscode/javascript.code-snippets +++ b/.vscode/javascript.code-snippets @@ -34,7 +34,7 @@ "module.exports = {", " data: new ContextMenuCommandBuilder()", " .setName('$0')", - " .setType(1),", + " .setType(3),", " async execute(interaction) {", " ", " }", diff --git a/commands/Misc/info.js b/commands/Misc/info.js index 988b1a2..7a84824 100644 --- a/commands/Misc/info.js +++ b/commands/Misc/info.js @@ -38,8 +38,8 @@ module.exports = { .setDescription(`<@${member.user.id}>`) .setColor(`#${Math.floor(Math.random() * 16777215).toString(16)}`) .addFields( - { name: "**Joined**", value: ``, inline: true }, - { name: "**Registered**", value: ``, inline: true }, + { name: "**Joined**", value: ` ()`, inline: true }, + { name: "**Registered**", value: ` ()`, inline: true }, { name: `**Roles [${member.roles.cache.size - 1}]**`, value: roles.join(", ") ? roles.join(", ") : "*none*" }, ) ] @@ -49,7 +49,7 @@ module.exports = { case "server": { await interaction.guild.fetch() - const replyEmbed = new EmbedBuilder().setAuthor({name: interaction.guild.name, iconURL: interaction.guild.iconURL({extension: 'png', size: 4096})}).setColor(`#${Math.floor(Math.random() * 16777215).toString(16)}`).setFooter({text: `Id: ${interaction.guild.id}`}).setTimestamp(interaction.guild.createdAt) + const replyEmbed = new EmbedBuilder().setAuthor({ name: interaction.guild.name, iconURL: interaction.guild.iconURL({ extension: 'png', size: 4096 }) }).setColor(`#${Math.floor(Math.random() * 16777215).toString(16)}`).setFooter({ text: `Id: ${interaction.guild.id}` }).setTimestamp(interaction.guild.createdAt) let owner = await interaction.guild.fetchOwner() @@ -67,23 +67,23 @@ module.exports = { emojiCount++ }) }) - + let stickerCont = 0 await interaction.guild.stickers.fetch().then(e => { e.forEach(i => { stickerCont++ }) }) - + replyEmbed.setFields( - {name: "Owner", value: `${owner.user.tag}`, inline: true}, - {name: "Roles", value: `${roleCount}`, inline: true}, - {name: "Members", value: `${interaction.guild.memberCount}`, inline: true}, - {name: "Emojis", value: `${emojiCount}`, inline: true}, - {name: "Stickers", value: `${stickerCont}`, inline: true}, - {name: "Rules", value: `<#${interaction.guild.rulesChannelId}>`, inline: true} + { name: "Owner", value: `${owner.user.tag}`, inline: true }, + { name: "Roles", value: `${roleCount}`, inline: true }, + { name: "Members", value: `${interaction.guild.memberCount}`, inline: true }, + { name: "Emojis", value: `${emojiCount}`, inline: true }, + { name: "Stickers", value: `${stickerCont}`, inline: true }, + { name: "Rules", value: `<#${interaction.guild.rulesChannelId}>`, inline: true } ) - interaction.followUp({embeds: [replyEmbed]}) + interaction.followUp({ embeds: [replyEmbed] }) break } } diff --git a/commands/Misc/test.js b/commands/Misc/test.js index 1a36c72..8879f7d 100644 --- a/commands/Misc/test.js +++ b/commands/Misc/test.js @@ -1,3 +1,4 @@ +const { CommandInteraction } = require("discord.js"); const { SlashCommandBuilder } = require("discord.js"); module.exports = { @@ -23,9 +24,10 @@ module.exports = { ) ), async execute(interaction) { - switch (interaction.option.getSubcommand()) { + switch (interaction.options.getSubcommand()) { case "simple": { - interaction.reply({ content: interaction.option.getString("content"), ephemeral: interaction.option.getBoolean("ephemeral") }) + interaction.reply({ content: interaction.options.getString("content"), ephemeral: interaction.options.getBoolean("ephemeral") }) + break } case "other": { const { ActionRowBuilder, SelectMenuBuilder, EmbedBuilder } = require("discord.js"); diff --git a/context menu/Messages/bot-edit-message.js b/context menu/Messages/bot-edit-message.js new file mode 100644 index 0000000..c8b9d69 --- /dev/null +++ b/context menu/Messages/bot-edit-message.js @@ -0,0 +1,24 @@ +const { codeBlock } = require('discord.js'); +const { ContextMenuCommandInteraction } = require('discord.js'); +const { ContextMenuCommandBuilder, ModalBuilder, TextInputStyle, ActionRowBuilder, TextInputBuilder } = require('discord.js'); + +module.exports = { + data: new ContextMenuCommandBuilder() + .setName('Edit Bot Message') + .setType(3), + async execute(interaction) { + if (interaction.targetMessage.author.id !== interaction.client.user.id) return; + await interaction.targetMessage.fetch() + await interaction.showModal(new ModalBuilder().setCustomId("edit-message").setTitle("Edit Message").addComponents(new ActionRowBuilder().addComponents(new TextInputBuilder() + .setCustomId("message") + .setLabel("message") + .setValue(interaction.targetMessage.content) + .setStyle(TextInputStyle.Paragraph) + .setRequired(true)))); + interaction.awaitModalSubmit({time: 1_000_000}).then(e => { + interaction.targetMessage.edit(e.fields.getField("message").value) + .then(() => e.reply({content: "Done", ephemeral: true})) + .catch(err => {e.reply({content: `An error occured: ${codeBlock(err)}`, ephemeral: true})}) + }) + } +} \ No newline at end of file diff --git a/context menu/User/User info.js b/context menu/User/User info.js index 7b7c2a6..55988e9 100644 --- a/context menu/User/User info.js +++ b/context menu/User/User info.js @@ -6,7 +6,7 @@ module.exports = { .setName("User Info") .setType(2), async execute(interaction) { - await interaction.deferReply({ephemeral: true}) + await interaction.deferReply({ ephemeral: true }) const member = interaction.targetMember if (!(member instanceof GuildMember)) { @@ -19,16 +19,16 @@ module.exports = { member.roles.cache.forEach(e => { if (e.name !== "@everyone") roles.push(`<@&${e.id}>`) }) - + interaction.followUp({ ephemeral: true, embeds: [new EmbedBuilder() .setAuthor({ name: member.user.tag, iconURL: member.user.avatarURL({ extension: "png", size: 4096 }) }) .setDescription(`<@${member.user.id}>`) - .setColor(`#${Math.floor(Math.random()*16777215).toString(16)}`) + .setColor(`#${Math.floor(Math.random() * 16777215).toString(16)}`) .addFields( - {name: "**Joined**", value: ``, inline: true }, - {name: "**Registered**", value: ``, inline: true }, - {name: `**Roles [${member.roles.cache.size - 1}]**`, value: roles.join(", ") ? roles.join(", ") : "*none*"}, + { name: "**Joined**", value: ` ()`, inline: true }, + { name: "**Registered**", value: ` ()`, inline: true }, + { name: `**Roles [${member.roles.cache.size - 1}]**`, value: roles.join(", ") ? roles.join(", ") : "*none*" }, ) ] }) diff --git a/events/Message/MessageCreate.js b/events/Message/MessageCreate.js index 4fc2afb..0afe122 100755 --- a/events/Message/MessageCreate.js +++ b/events/Message/MessageCreate.js @@ -8,8 +8,8 @@ module.exports = { client.messages.forEach(e => { if (e.code) e.code(messages).catch(console.error) }) const message = client.messages.get(messages.content); - if (!message || message?.onlyCode) return; + if (message?.onlyCode) return; - message.execute(messages).catch(console.error); + if (message?.execute) message.execute(messages).catch(console.error); } } \ No newline at end of file diff --git a/messages/Fun/AtSomeone.js b/messages/Fun/AtSomeone.js index ae1949c..00029e7 100644 --- a/messages/Fun/AtSomeone.js +++ b/messages/Fun/AtSomeone.js @@ -1,19 +1,28 @@ const { GuildMember } = require('discord.js'); const { AtSomeone } = require('../../config.json') || false; + +async function randomMember(memberList) { + let member = memberList.random(); + + if (!(member instanceof GuildMember)) { + await message.guild.members.fetch(member); + } + return member +} module.exports = { message: '@someone', onlyCode: false, async execute(message) { if (!AtSomeone) return; let memberList = await message.guild.members.fetch({ force: true }); - let member = memberList.random(); - - if (!(member instanceof GuildMember)) { - await message.guild.members.fetch(member); + let member = await randomMember(memberList) + + while (member.user.bot) { + member = await randomMember(memberList) } - let messageSent = await message.channel.send(`<@${member.user.id}>`); - messageSent.delete() + console.log(`${message.author.tag} has used @someone and ping ${member.user.tag}`) + message.channel.send(`<@${member.user.id}>`).then(e => {e.delete()}) } }; \ No newline at end of file From 8b905c28c8bb5ac3001cedc480b20ef66b91e01f Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 12 Oct 2022 17:22:48 +0200 Subject: [PATCH 205/236] Fix of the context menu for editing bot messages --- context menu/Messages/bot-edit-message.js | 10 +- package-lock.json | 221 ++++++++++++++-------- 2 files changed, 143 insertions(+), 88 deletions(-) diff --git a/context menu/Messages/bot-edit-message.js b/context menu/Messages/bot-edit-message.js index c8b9d69..f561504 100644 --- a/context menu/Messages/bot-edit-message.js +++ b/context menu/Messages/bot-edit-message.js @@ -1,14 +1,12 @@ -const { codeBlock } = require('discord.js'); -const { ContextMenuCommandInteraction } = require('discord.js'); -const { ContextMenuCommandBuilder, ModalBuilder, TextInputStyle, ActionRowBuilder, TextInputBuilder } = require('discord.js'); +const { ContextMenuCommandBuilder, ModalBuilder, TextInputStyle, ActionRowBuilder, TextInputBuilder, codeBlock } = require('discord.js'); module.exports = { data: new ContextMenuCommandBuilder() .setName('Edit Bot Message') .setType(3), async execute(interaction) { - if (interaction.targetMessage.author.id !== interaction.client.user.id) return; - await interaction.targetMessage.fetch() + if (interaction.targetMessage.author.id !== interaction.client.user.id) return interaction.reply({content: `This isn't a bot message, please chose a message from myself, <@${interaction.client.user.id}>`, ephemeral: true}); + Promise.all([interaction.targetMessage.fetch(), interaction.targetMessage.channel.fetch()]) await interaction.showModal(new ModalBuilder().setCustomId("edit-message").setTitle("Edit Message").addComponents(new ActionRowBuilder().addComponents(new TextInputBuilder() .setCustomId("message") .setLabel("message") @@ -18,7 +16,7 @@ module.exports = { interaction.awaitModalSubmit({time: 1_000_000}).then(e => { interaction.targetMessage.edit(e.fields.getField("message").value) .then(() => e.reply({content: "Done", ephemeral: true})) - .catch(err => {e.reply({content: `An error occured: ${codeBlock(err)}`, ephemeral: true})}) + .catch(err => {e.client.debugCha.send({content: `An error occured: ${codeBlock(err)} for editing a bot message`, ephemeral: true});e.reply({content: `An Error Occured: ${codeBlock(err)}`})}) }) } } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 23920e4..665701a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,12 +18,13 @@ } }, "node_modules/@discordjs/builders": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.2.0.tgz", - "integrity": "sha512-ARy4BUTMU+S0ZI6605NDqfWO+qZqV2d/xfY32z3hVSsd9IaAKJBZ1ILTZLy87oIjW8+gUpQmk9Kt0ZP9bmmd8Q==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.3.0.tgz", + "integrity": "sha512-Pvca6Nw8Hp+n3N+Wp17xjygXmMvggbh5ywUsOYE2Et4xkwwVRwgzxDJiMUuYapPtnYt4w/8aKlf5khc8ipLvhg==", "dependencies": { - "@sapphire/shapeshift": "^3.5.1", - "discord-api-types": "^0.37.3", + "@discordjs/util": "^0.1.0", + "@sapphire/shapeshift": "^3.7.0", + "discord-api-types": "^0.37.12", "fast-deep-equal": "^3.1.3", "ts-mixer": "^6.0.1", "tslib": "^2.4.0" @@ -33,9 +34,9 @@ } }, "node_modules/@discordjs/builders/node_modules/discord-api-types": { - "version": "0.37.11", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.11.tgz", - "integrity": "sha512-cUNXrCdD4hEj5iJ9SligTNur64rNnLX5s6CbvmatRpWKMZtrLTOlyLhuXmVbjfDXeXH7os8Qb71Wa7IEhC27Sw==" + "version": "0.37.12", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.12.tgz", + "integrity": "sha512-SMBP4V6/A9mE7shBQAiTxNWnQlYTdiKMGvc7G23neayxaTJeFYh5FviJSWUa0BTdXcph1h/jT03Nbyv5XgZkzw==" }, "node_modules/@discordjs/collection": { "version": "0.7.0", @@ -70,6 +71,14 @@ "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.29.0.tgz", "integrity": "sha512-Ekq1ICNpOTVajXKZguNFrsDeTmam+ZeA38txsNLZnANdXUjU6QBPIZLUQTC6MzigFGb0Tt8vk4xLnXmzv0shNg==" }, + "node_modules/@discordjs/util": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-0.1.0.tgz", + "integrity": "sha512-e7d+PaTLVQav6rOc2tojh2y6FE8S7REkqLldq1XF4soCx74XB/DIjbVbVLtBemf0nLW77ntz0v+o5DytKwFNLQ==", + "engines": { + "node": ">=16.9.0" + } + }, "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", @@ -177,9 +186,9 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "node_modules/@types/node": { - "version": "18.7.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.23.tgz", - "integrity": "sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==" + "version": "18.8.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.4.tgz", + "integrity": "sha512-WdlVphvfR/GJCLEMbNA8lJ0lhFNBj4SW3O+O5/cEGw9oYrv0al9zTwuQsq+myDUXgNx2jgBynoVgZ2MMJ6pbow==" }, "node_modules/@types/node-fetch": { "version": "2.6.2", @@ -312,6 +321,17 @@ "concat-map": "0.0.1" } }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, "node_modules/cacache": { "version": "15.3.0", "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", @@ -439,20 +459,21 @@ "integrity": "sha512-RS1dMM6xuMhdHwQJ0T+XuCD7v1tKnyZ89Eq6q/DbOJWMbIh3ihgAzDhcF70QsFCtk9a5Gn9XU29S7eoEXuwQ5w==" }, "node_modules/discord.js": { - "version": "14.5.0", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.5.0.tgz", - "integrity": "sha512-Kd5OqdeiXe3t9eHUHCzf1r3LmKpeJJ7lKqwlWX1qdC0WfsbO2K3kucIDLfe0INnZVZaErUQ6/U6kGbTDnGgwZg==", - "dependencies": { - "@discordjs/builders": "^1.2.0", - "@discordjs/collection": "^1.1.0", - "@discordjs/rest": "^1.2.0", + "version": "14.6.0", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.6.0.tgz", + "integrity": "sha512-On1K7xpJZRe0KsziIaDih2ksYPhgxym/ZqV45i1f3yig4vUotikqs7qp5oXiTzQ/UTiNRCixUWFTh7vA1YBCqw==", + "dependencies": { + "@discordjs/builders": "^1.3.0", + "@discordjs/collection": "^1.2.0", + "@discordjs/rest": "^1.3.0", + "@discordjs/util": "^0.1.0", "@sapphire/snowflake": "^3.2.2", "@types/ws": "^8.5.3", - "discord-api-types": "^0.37.10", + "discord-api-types": "^0.37.12", "fast-deep-equal": "^3.1.3", "lodash.snakecase": "^4.1.1", "tslib": "^2.4.0", - "undici": "^5.10.0", + "undici": "^5.11.0", "ws": "^8.9.0" }, "engines": { @@ -460,34 +481,35 @@ } }, "node_modules/discord.js/node_modules/@discordjs/collection": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.1.0.tgz", - "integrity": "sha512-PQ2Bv6pnT7aGPCKWbvvNRww5tYCGpggIQVgpuF9TdDPeR6n6vQYxezXiLVOS9z2B62Dp4c+qepQ15SgJbLYtCQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.2.0.tgz", + "integrity": "sha512-VvrrtGb7vbfPHzbhGq9qZB5o8FOB+kfazrxdt0OtxzSkoBuw9dURMkCwWizZ00+rDpiK2HmLHBZX+y6JsG9khw==", "engines": { "node": ">=16.9.0" } }, "node_modules/discord.js/node_modules/@discordjs/rest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.2.0.tgz", - "integrity": "sha512-WX79uzMdnBzFNgsDdA440Ia2q7SMk6F8bNaPMmV4i6qcUNJpg+Sgb2spKuQmQPlNTX4HCntR609xHqUkK1tnVQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.3.0.tgz", + "integrity": "sha512-U6X5J+r/MxYpPTlHFuPxXEf92aKsBaD2teBC7sWkKILIr30O8c9+XshfL7KFBCavnAqS/qE+PF9fgRilO3N44g==", "dependencies": { - "@discordjs/collection": "^1.1.0", + "@discordjs/collection": "^1.2.0", + "@discordjs/util": "^0.1.0", "@sapphire/async-queue": "^1.5.0", "@sapphire/snowflake": "^3.2.2", - "discord-api-types": "^0.37.10", + "discord-api-types": "^0.37.12", "file-type": "^18.0.0", "tslib": "^2.4.0", - "undici": "^5.10.0" + "undici": "^5.11.0" }, "engines": { "node": ">=16.9.0" } }, "node_modules/discord.js/node_modules/discord-api-types": { - "version": "0.37.11", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.11.tgz", - "integrity": "sha512-cUNXrCdD4hEj5iJ9SligTNur64rNnLX5s6CbvmatRpWKMZtrLTOlyLhuXmVbjfDXeXH7os8Qb71Wa7IEhC27Sw==" + "version": "0.37.12", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.12.tgz", + "integrity": "sha512-SMBP4V6/A9mE7shBQAiTxNWnQlYTdiKMGvc7G23neayxaTJeFYh5FviJSWUa0BTdXcph1h/jT03Nbyv5XgZkzw==" }, "node_modules/dottie": { "version": "2.0.2", @@ -1299,9 +1321,9 @@ "optional": true }, "node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -1427,9 +1449,9 @@ } }, "node_modules/sqlite3": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.1.tgz", - "integrity": "sha512-mMinkrQr/LKJqFiFF+AF7imPSzRCCpTCreusZO3D/ssJHVjZOrbu2Caz+zPH5KTmGGXBxXMGSRDssL+44CLxvg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.2.tgz", + "integrity": "sha512-D0Reg6pRWAFXFUnZKsszCI67tthFD8fGPewRddDCX6w4cYwz3MbvuwRICbL+YQjBAh9zbw+lJ/V9oC8nG5j6eg==", "hasInstallScript": true, "dependencies": { "@mapbox/node-pre-gyp": "^1.0.0", @@ -1460,6 +1482,14 @@ "node": ">= 8" } }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -1561,9 +1591,12 @@ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "node_modules/undici": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.10.0.tgz", - "integrity": "sha512-c8HsD3IbwmjjbLvoZuRI26TZic+TSEe8FPMLLOkN1AfYRhdjnKBU6yL+IwcSCbdZiX4e5t0lfMDLDCqj4Sq70g==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.11.0.tgz", + "integrity": "sha512-oWjWJHzFet0Ow4YZBkyiJwiK5vWqEYoH7BINzJAJOLedZ++JpAlCbUktW2GQ2DS2FpKmxD/JMtWUUWl1BtghGw==", + "dependencies": { + "busboy": "^1.6.0" + }, "engines": { "node": ">=12.18" } @@ -1685,21 +1718,22 @@ }, "dependencies": { "@discordjs/builders": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.2.0.tgz", - "integrity": "sha512-ARy4BUTMU+S0ZI6605NDqfWO+qZqV2d/xfY32z3hVSsd9IaAKJBZ1ILTZLy87oIjW8+gUpQmk9Kt0ZP9bmmd8Q==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.3.0.tgz", + "integrity": "sha512-Pvca6Nw8Hp+n3N+Wp17xjygXmMvggbh5ywUsOYE2Et4xkwwVRwgzxDJiMUuYapPtnYt4w/8aKlf5khc8ipLvhg==", "requires": { - "@sapphire/shapeshift": "^3.5.1", - "discord-api-types": "^0.37.3", + "@discordjs/util": "^0.1.0", + "@sapphire/shapeshift": "^3.7.0", + "discord-api-types": "^0.37.12", "fast-deep-equal": "^3.1.3", "ts-mixer": "^6.0.1", "tslib": "^2.4.0" }, "dependencies": { "discord-api-types": { - "version": "0.37.11", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.11.tgz", - "integrity": "sha512-cUNXrCdD4hEj5iJ9SligTNur64rNnLX5s6CbvmatRpWKMZtrLTOlyLhuXmVbjfDXeXH7os8Qb71Wa7IEhC27Sw==" + "version": "0.37.12", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.12.tgz", + "integrity": "sha512-SMBP4V6/A9mE7shBQAiTxNWnQlYTdiKMGvc7G23neayxaTJeFYh5FviJSWUa0BTdXcph1h/jT03Nbyv5XgZkzw==" } } }, @@ -1730,6 +1764,11 @@ } } }, + "@discordjs/util": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-0.1.0.tgz", + "integrity": "sha512-e7d+PaTLVQav6rOc2tojh2y6FE8S7REkqLldq1XF4soCx74XB/DIjbVbVLtBemf0nLW77ntz0v+o5DytKwFNLQ==" + }, "@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", @@ -1816,9 +1855,9 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "@types/node": { - "version": "18.7.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.23.tgz", - "integrity": "sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==" + "version": "18.8.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.4.tgz", + "integrity": "sha512-WdlVphvfR/GJCLEMbNA8lJ0lhFNBj4SW3O+O5/cEGw9oYrv0al9zTwuQsq+myDUXgNx2jgBynoVgZ2MMJ6pbow==" }, "@types/node-fetch": { "version": "2.6.2", @@ -1935,6 +1974,14 @@ "concat-map": "0.0.1" } }, + "busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "requires": { + "streamsearch": "^1.1.0" + } + }, "cacache": { "version": "15.3.0", "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", @@ -2030,46 +2077,48 @@ "integrity": "sha512-RS1dMM6xuMhdHwQJ0T+XuCD7v1tKnyZ89Eq6q/DbOJWMbIh3ihgAzDhcF70QsFCtk9a5Gn9XU29S7eoEXuwQ5w==" }, "discord.js": { - "version": "14.5.0", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.5.0.tgz", - "integrity": "sha512-Kd5OqdeiXe3t9eHUHCzf1r3LmKpeJJ7lKqwlWX1qdC0WfsbO2K3kucIDLfe0INnZVZaErUQ6/U6kGbTDnGgwZg==", - "requires": { - "@discordjs/builders": "^1.2.0", - "@discordjs/collection": "^1.1.0", - "@discordjs/rest": "^1.2.0", + "version": "14.6.0", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.6.0.tgz", + "integrity": "sha512-On1K7xpJZRe0KsziIaDih2ksYPhgxym/ZqV45i1f3yig4vUotikqs7qp5oXiTzQ/UTiNRCixUWFTh7vA1YBCqw==", + "requires": { + "@discordjs/builders": "^1.3.0", + "@discordjs/collection": "^1.2.0", + "@discordjs/rest": "^1.3.0", + "@discordjs/util": "^0.1.0", "@sapphire/snowflake": "^3.2.2", "@types/ws": "^8.5.3", - "discord-api-types": "^0.37.10", + "discord-api-types": "^0.37.12", "fast-deep-equal": "^3.1.3", "lodash.snakecase": "^4.1.1", "tslib": "^2.4.0", - "undici": "^5.10.0", + "undici": "^5.11.0", "ws": "^8.9.0" }, "dependencies": { "@discordjs/collection": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.1.0.tgz", - "integrity": "sha512-PQ2Bv6pnT7aGPCKWbvvNRww5tYCGpggIQVgpuF9TdDPeR6n6vQYxezXiLVOS9z2B62Dp4c+qepQ15SgJbLYtCQ==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.2.0.tgz", + "integrity": "sha512-VvrrtGb7vbfPHzbhGq9qZB5o8FOB+kfazrxdt0OtxzSkoBuw9dURMkCwWizZ00+rDpiK2HmLHBZX+y6JsG9khw==" }, "@discordjs/rest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.2.0.tgz", - "integrity": "sha512-WX79uzMdnBzFNgsDdA440Ia2q7SMk6F8bNaPMmV4i6qcUNJpg+Sgb2spKuQmQPlNTX4HCntR609xHqUkK1tnVQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.3.0.tgz", + "integrity": "sha512-U6X5J+r/MxYpPTlHFuPxXEf92aKsBaD2teBC7sWkKILIr30O8c9+XshfL7KFBCavnAqS/qE+PF9fgRilO3N44g==", "requires": { - "@discordjs/collection": "^1.1.0", + "@discordjs/collection": "^1.2.0", + "@discordjs/util": "^0.1.0", "@sapphire/async-queue": "^1.5.0", "@sapphire/snowflake": "^3.2.2", - "discord-api-types": "^0.37.10", + "discord-api-types": "^0.37.12", "file-type": "^18.0.0", "tslib": "^2.4.0", - "undici": "^5.10.0" + "undici": "^5.11.0" } }, "discord-api-types": { - "version": "0.37.11", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.11.tgz", - "integrity": "sha512-cUNXrCdD4hEj5iJ9SligTNur64rNnLX5s6CbvmatRpWKMZtrLTOlyLhuXmVbjfDXeXH7os8Qb71Wa7IEhC27Sw==" + "version": "0.37.12", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.12.tgz", + "integrity": "sha512-SMBP4V6/A9mE7shBQAiTxNWnQlYTdiKMGvc7G23neayxaTJeFYh5FviJSWUa0BTdXcph1h/jT03Nbyv5XgZkzw==" } } }, @@ -2665,9 +2714,9 @@ "optional": true }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "requires": { "lru-cache": "^6.0.0" } @@ -2738,9 +2787,9 @@ } }, "sqlite3": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.1.tgz", - "integrity": "sha512-mMinkrQr/LKJqFiFF+AF7imPSzRCCpTCreusZO3D/ssJHVjZOrbu2Caz+zPH5KTmGGXBxXMGSRDssL+44CLxvg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.2.tgz", + "integrity": "sha512-D0Reg6pRWAFXFUnZKsszCI67tthFD8fGPewRddDCX6w4cYwz3MbvuwRICbL+YQjBAh9zbw+lJ/V9oC8nG5j6eg==", "requires": { "@mapbox/node-pre-gyp": "^1.0.0", "node-addon-api": "^4.2.0", @@ -2757,6 +2806,11 @@ "minipass": "^3.1.1" } }, + "streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -2835,9 +2889,12 @@ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "undici": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.10.0.tgz", - "integrity": "sha512-c8HsD3IbwmjjbLvoZuRI26TZic+TSEe8FPMLLOkN1AfYRhdjnKBU6yL+IwcSCbdZiX4e5t0lfMDLDCqj4Sq70g==" + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.11.0.tgz", + "integrity": "sha512-oWjWJHzFet0Ow4YZBkyiJwiK5vWqEYoH7BINzJAJOLedZ++JpAlCbUktW2GQ2DS2FpKmxD/JMtWUUWl1BtghGw==", + "requires": { + "busboy": "^1.6.0" + } }, "unique-filename": { "version": "1.1.1", From 5afd951f0cce6eb49db7c79d6792ad6aac1cc37d Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 12 Oct 2022 17:31:46 +0200 Subject: [PATCH 206/236] Fricking await --- context menu/Messages/bot-edit-message.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/context menu/Messages/bot-edit-message.js b/context menu/Messages/bot-edit-message.js index f561504..01f7ac9 100644 --- a/context menu/Messages/bot-edit-message.js +++ b/context menu/Messages/bot-edit-message.js @@ -6,7 +6,7 @@ module.exports = { .setType(3), async execute(interaction) { if (interaction.targetMessage.author.id !== interaction.client.user.id) return interaction.reply({content: `This isn't a bot message, please chose a message from myself, <@${interaction.client.user.id}>`, ephemeral: true}); - Promise.all([interaction.targetMessage.fetch(), interaction.targetMessage.channel.fetch()]) + await Promise.all([interaction.targetMessage.fetch(), interaction.targetMessage.channel.fetch()]) await interaction.showModal(new ModalBuilder().setCustomId("edit-message").setTitle("Edit Message").addComponents(new ActionRowBuilder().addComponents(new TextInputBuilder() .setCustomId("message") .setLabel("message") From 70ab6d5528dcd240739b626e964899cadc7f7dc2 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 12 Oct 2022 17:36:34 +0200 Subject: [PATCH 207/236] You actually need to fetch the message THEN the channel god dammit --- context menu/Messages/bot-edit-message.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/context menu/Messages/bot-edit-message.js b/context menu/Messages/bot-edit-message.js index 01f7ac9..bfb3fe5 100644 --- a/context menu/Messages/bot-edit-message.js +++ b/context menu/Messages/bot-edit-message.js @@ -6,7 +6,8 @@ module.exports = { .setType(3), async execute(interaction) { if (interaction.targetMessage.author.id !== interaction.client.user.id) return interaction.reply({content: `This isn't a bot message, please chose a message from myself, <@${interaction.client.user.id}>`, ephemeral: true}); - await Promise.all([interaction.targetMessage.fetch(), interaction.targetMessage.channel.fetch()]) + await interaction.targetMessage.fetch() + await interaction.targetMessage.channel.fetch() await interaction.showModal(new ModalBuilder().setCustomId("edit-message").setTitle("Edit Message").addComponents(new ActionRowBuilder().addComponents(new TextInputBuilder() .setCustomId("message") .setLabel("message") From d01d33eb9a85bf2aedd7ef81e593e47e54a7f4a0 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 12 Oct 2022 17:39:15 +0200 Subject: [PATCH 208/236] DO NOT say it was that if was the problem --- context menu/Messages/bot-edit-message.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/context menu/Messages/bot-edit-message.js b/context menu/Messages/bot-edit-message.js index bfb3fe5..6b34f44 100644 --- a/context menu/Messages/bot-edit-message.js +++ b/context menu/Messages/bot-edit-message.js @@ -5,17 +5,19 @@ module.exports = { .setName('Edit Bot Message') .setType(3), async execute(interaction) { - if (interaction.targetMessage.author.id !== interaction.client.user.id) return interaction.reply({content: `This isn't a bot message, please chose a message from myself, <@${interaction.client.user.id}>`, ephemeral: true}); - await interaction.targetMessage.fetch() - await interaction.targetMessage.channel.fetch() + const message = interaction.targetMessage + + await message.fetch() + await message.channel.fetch() + if (message.author.id !== interaction.client.user.id) return interaction.reply({content: `This isn't a bot message, please chose a message from myself, <@${interaction.client.user.id}>`, ephemeral: true}); await interaction.showModal(new ModalBuilder().setCustomId("edit-message").setTitle("Edit Message").addComponents(new ActionRowBuilder().addComponents(new TextInputBuilder() .setCustomId("message") .setLabel("message") - .setValue(interaction.targetMessage.content) + .setValue(message.content) .setStyle(TextInputStyle.Paragraph) .setRequired(true)))); interaction.awaitModalSubmit({time: 1_000_000}).then(e => { - interaction.targetMessage.edit(e.fields.getField("message").value) + message.edit(e.fields.getField("message").value) .then(() => e.reply({content: "Done", ephemeral: true})) .catch(err => {e.client.debugCha.send({content: `An error occured: ${codeBlock(err)} for editing a bot message`, ephemeral: true});e.reply({content: `An Error Occured: ${codeBlock(err)}`})}) }) From d6d5ac32d0486f3d7a3b813fd0f17b7e8cfbed15 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Fri, 14 Oct 2022 20:32:20 +0200 Subject: [PATCH 209/236] Would it work now? i hope so... --- events/Client/ready.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/events/Client/ready.js b/events/Client/ready.js index 158aff1..120eae0 100644 --- a/events/Client/ready.js +++ b/events/Client/ready.js @@ -1,3 +1,4 @@ +const { Client } = require('discord.js'); const { PermissionsBitField, EmbedBuilder } = require('discord.js'); const { showLink, debugCha } = require('../../config.json'); const { ProcessDOS } = require('../../Util/Dos.js'); @@ -17,8 +18,14 @@ module.exports = { guilds.forEach(async guild => { let guildFetched = await guild.fetch() - await guildFetched.channels.fetch() await guildFetched.members.fetchMe() + let channels = await guildFetched.channels.fetch() + channels.forEach(async channel => { + await channel.fetch() + if (channel.threads) { + await Promise.all([channel.threads.fetchActive(), channel.threads.fetchArchived()]) + } + }) console.log(`Channels of ${guildFetched.name} loaded (${guildFetched.id})`) }) @@ -54,7 +61,7 @@ module.exports = { } ] })] - }).catch(() => {}) + }).catch(() => { }) }); process.on("unhandledRejection", async err => { @@ -83,7 +90,7 @@ module.exports = { inline: true }] })] - }).catch(() => {}) + }).catch(() => { }) }); return client } From 25a0a881ce850541430f6212190cd3dfc2d881c7 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Fri, 14 Oct 2022 20:42:22 +0200 Subject: [PATCH 210/236] Forgot catchs god dammit --- events/Client/ready.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/events/Client/ready.js b/events/Client/ready.js index 120eae0..16f6fde 100644 --- a/events/Client/ready.js +++ b/events/Client/ready.js @@ -21,9 +21,9 @@ module.exports = { await guildFetched.members.fetchMe() let channels = await guildFetched.channels.fetch() channels.forEach(async channel => { - await channel.fetch() + await channel.fetch().catch(() => {}) if (channel.threads) { - await Promise.all([channel.threads.fetchActive(), channel.threads.fetchArchived()]) + await Promise.all([channel.threads.fetchActive(), channel.threads.fetchArchived()]).catch(() => {}) } }) console.log(`Channels of ${guildFetched.name} loaded (${guildFetched.id})`) From 052909826d7750dfe168d30a2ebb58ab76ff99a0 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 26 Oct 2022 17:20:59 +0200 Subject: [PATCH 211/236] Should fix errors when starting up --- events/Client/ready.js | 3 +- package-lock.json | 72 +++++++++++++++++++++--------------------- 2 files changed, 37 insertions(+), 38 deletions(-) diff --git a/events/Client/ready.js b/events/Client/ready.js index 16f6fde..0648208 100644 --- a/events/Client/ready.js +++ b/events/Client/ready.js @@ -1,4 +1,3 @@ -const { Client } = require('discord.js'); const { PermissionsBitField, EmbedBuilder } = require('discord.js'); const { showLink, debugCha } = require('../../config.json'); const { ProcessDOS } = require('../../Util/Dos.js'); @@ -22,7 +21,7 @@ module.exports = { let channels = await guildFetched.channels.fetch() channels.forEach(async channel => { await channel.fetch().catch(() => {}) - if (channel.threads) { + if (channel.threads && channel.permissionsFor(client.id).has(PermissionsBitField.Flags.ReadMessageHistory)) { await Promise.all([channel.threads.fetchActive(), channel.threads.fetchArchived()]).catch(() => {}) } }) diff --git a/package-lock.json b/package-lock.json index 665701a..eca3bcf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,9 +34,9 @@ } }, "node_modules/@discordjs/builders/node_modules/discord-api-types": { - "version": "0.37.12", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.12.tgz", - "integrity": "sha512-SMBP4V6/A9mE7shBQAiTxNWnQlYTdiKMGvc7G23neayxaTJeFYh5FviJSWUa0BTdXcph1h/jT03Nbyv5XgZkzw==" + "version": "0.37.14", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.14.tgz", + "integrity": "sha512-byBH7SfDCMJwxdqeS8k5sihltH88/YPhuwx+vF2cftSxFLdxyHyU/ZxDL3bq+LB2c4ls/TymE76/ISlLfniUXg==" }, "node_modules/@discordjs/collection": { "version": "0.7.0", @@ -186,9 +186,9 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "node_modules/@types/node": { - "version": "18.8.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.4.tgz", - "integrity": "sha512-WdlVphvfR/GJCLEMbNA8lJ0lhFNBj4SW3O+O5/cEGw9oYrv0al9zTwuQsq+myDUXgNx2jgBynoVgZ2MMJ6pbow==" + "version": "18.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.6.tgz", + "integrity": "sha512-j3CEDa2vd96K0AXF8Wur7UucACvnjkk8hYyQAHhUNciabZLDl9nfAEVUSwmh245OOZV15bRA3Y590Gi5jUcDJg==" }, "node_modules/@types/node-fetch": { "version": "2.6.2", @@ -213,9 +213,9 @@ } }, "node_modules/@types/validator": { - "version": "13.7.7", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.7.tgz", - "integrity": "sha512-jiEw2kTUJ8Jsh4A1K4b5Pkjj9Xz6FktLLOQ36ZVLRkmxFbpTvAV2VRoKMojz8UlZxNg/2dZqzpigH4JYn1bkQg==" + "version": "13.7.9", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.9.tgz", + "integrity": "sha512-y5KJ1PjGXPpU4CZ7lThDu31s+FqvzhqwMOR6Go/x6xaQMFjgzwfzfOvCwABsylr/5n8sB1qFQm1Vi7TaCB8P+A==" }, "node_modules/@types/ws": { "version": "8.5.3", @@ -507,9 +507,9 @@ } }, "node_modules/discord.js/node_modules/discord-api-types": { - "version": "0.37.12", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.12.tgz", - "integrity": "sha512-SMBP4V6/A9mE7shBQAiTxNWnQlYTdiKMGvc7G23neayxaTJeFYh5FviJSWUa0BTdXcph1h/jT03Nbyv5XgZkzw==" + "version": "0.37.14", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.14.tgz", + "integrity": "sha512-byBH7SfDCMJwxdqeS8k5sihltH88/YPhuwx+vF2cftSxFLdxyHyU/ZxDL3bq+LB2c4ls/TymE76/ISlLfniUXg==" }, "node_modules/dottie": { "version": "2.0.2", @@ -1020,9 +1020,9 @@ } }, "node_modules/moment-timezone": { - "version": "0.5.37", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.37.tgz", - "integrity": "sha512-uEDzDNFhfaywRl+vwXxffjjq1q0Vzr+fcQpQ1bU0kbzorfS7zVtZnCnGc8mhWmF39d4g4YriF6kwA75mJKE/Zg==", + "version": "0.5.38", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.38.tgz", + "integrity": "sha512-nMIrzGah4+oYZPflDvLZUgoVUO4fvAqHstvG3xAUnMolWncuAiLDWNnJZj6EwJGMGfb1ZcuTFE6GI3hNOVWI/Q==", "dependencies": { "moment": ">= 2.9.0" }, @@ -1691,9 +1691,9 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", - "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.10.0.tgz", + "integrity": "sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw==", "engines": { "node": ">=10.0.0" }, @@ -1731,9 +1731,9 @@ }, "dependencies": { "discord-api-types": { - "version": "0.37.12", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.12.tgz", - "integrity": "sha512-SMBP4V6/A9mE7shBQAiTxNWnQlYTdiKMGvc7G23neayxaTJeFYh5FviJSWUa0BTdXcph1h/jT03Nbyv5XgZkzw==" + "version": "0.37.14", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.14.tgz", + "integrity": "sha512-byBH7SfDCMJwxdqeS8k5sihltH88/YPhuwx+vF2cftSxFLdxyHyU/ZxDL3bq+LB2c4ls/TymE76/ISlLfniUXg==" } } }, @@ -1855,9 +1855,9 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "@types/node": { - "version": "18.8.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.4.tgz", - "integrity": "sha512-WdlVphvfR/GJCLEMbNA8lJ0lhFNBj4SW3O+O5/cEGw9oYrv0al9zTwuQsq+myDUXgNx2jgBynoVgZ2MMJ6pbow==" + "version": "18.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.6.tgz", + "integrity": "sha512-j3CEDa2vd96K0AXF8Wur7UucACvnjkk8hYyQAHhUNciabZLDl9nfAEVUSwmh245OOZV15bRA3Y590Gi5jUcDJg==" }, "@types/node-fetch": { "version": "2.6.2", @@ -1881,9 +1881,9 @@ } }, "@types/validator": { - "version": "13.7.7", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.7.tgz", - "integrity": "sha512-jiEw2kTUJ8Jsh4A1K4b5Pkjj9Xz6FktLLOQ36ZVLRkmxFbpTvAV2VRoKMojz8UlZxNg/2dZqzpigH4JYn1bkQg==" + "version": "13.7.9", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.9.tgz", + "integrity": "sha512-y5KJ1PjGXPpU4CZ7lThDu31s+FqvzhqwMOR6Go/x6xaQMFjgzwfzfOvCwABsylr/5n8sB1qFQm1Vi7TaCB8P+A==" }, "@types/ws": { "version": "8.5.3", @@ -2116,9 +2116,9 @@ } }, "discord-api-types": { - "version": "0.37.12", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.12.tgz", - "integrity": "sha512-SMBP4V6/A9mE7shBQAiTxNWnQlYTdiKMGvc7G23neayxaTJeFYh5FviJSWUa0BTdXcph1h/jT03Nbyv5XgZkzw==" + "version": "0.37.14", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.14.tgz", + "integrity": "sha512-byBH7SfDCMJwxdqeS8k5sihltH88/YPhuwx+vF2cftSxFLdxyHyU/ZxDL3bq+LB2c4ls/TymE76/ISlLfniUXg==" } } }, @@ -2504,9 +2504,9 @@ "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" }, "moment-timezone": { - "version": "0.5.37", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.37.tgz", - "integrity": "sha512-uEDzDNFhfaywRl+vwXxffjjq1q0Vzr+fcQpQ1bU0kbzorfS7zVtZnCnGc8mhWmF39d4g4YriF6kwA75mJKE/Zg==", + "version": "0.5.38", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.38.tgz", + "integrity": "sha512-nMIrzGah4+oYZPflDvLZUgoVUO4fvAqHstvG3xAUnMolWncuAiLDWNnJZj6EwJGMGfb1ZcuTFE6GI3hNOVWI/Q==", "requires": { "moment": ">= 2.9.0" } @@ -2974,9 +2974,9 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "ws": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", - "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.10.0.tgz", + "integrity": "sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw==", "requires": {} }, "yallist": { From 7063c81a4d611a6e21a19c2c476d0dbfe0d034d5 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 12 Nov 2022 23:41:36 +0100 Subject: [PATCH 212/236] Timeout fix --- Util/Moderation.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Util/Moderation.js b/Util/Moderation.js index ddd6cbe..f9cb0d4 100644 --- a/Util/Moderation.js +++ b/Util/Moderation.js @@ -146,12 +146,12 @@ async function warn(interaction, user, reason, joke = false, db) { async function timeout(interaction, member, reason, unit, RealLen, joke = false, db) { let length = RealLen; - + if (!(member instanceof GuildMember)) { - await interaction.guild.members.fetch(member) + member = await interaction.guild.members.fetch(member) } - if (member.id === interaction.client.user.id) { + if (member.user.id === interaction.client.user.id) { if (reason === "No reason provided") return interaction.followUp(`Timed out undefined for ${RealLen} ${unit}`); else if (reason !== "No reason provided") return interaction.followUp(`Timed out undefined for ${RealLen} ${unit} for **${reason}.**`) }; @@ -179,9 +179,9 @@ async function timeout(interaction, member, reason, unit, RealLen, joke = false, }) }).catch(err => { console.error(err); return interaction.followUp(`Couldn't timeout ${escapeMarkdown(member.user.tag)}: \`\`\`${err}\`\`\``) }) } - replyEmbed - + } + await interaction.followUp(replyEmbed) } module.exports = { ban, kick, warn, timeout } \ No newline at end of file From d6207611bafd34409bd5bb4389fec1db539c02ec Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 15 Nov 2022 20:13:41 +0100 Subject: [PATCH 213/236] No more buch error in startup --- commands/Moderation/timeout.js | 1 + events/Client/ready.js | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/commands/Moderation/timeout.js b/commands/Moderation/timeout.js index 47c1f4c..5d42198 100644 --- a/commands/Moderation/timeout.js +++ b/commands/Moderation/timeout.js @@ -30,6 +30,7 @@ module.exports = { .setName("reason") .setDescription('Why should this user be timed out?')), async execute(interaction) { + interaction.deferReply() timeout(interaction, interaction.options.getMember('member', true), interaction.options.getString('reason'), interaction.options.getString('unit', true), interaction.options.getInteger('duration', true), interaction.options.getBoolean('joke', true), interaction.client.db.Cases) }, }; diff --git a/events/Client/ready.js b/events/Client/ready.js index 0648208..d785e39 100644 --- a/events/Client/ready.js +++ b/events/Client/ready.js @@ -20,10 +20,11 @@ module.exports = { await guildFetched.members.fetchMe() let channels = await guildFetched.channels.fetch() channels.forEach(async channel => { - await channel.fetch().catch(() => {}) - if (channel.threads && channel.permissionsFor(client.id).has(PermissionsBitField.Flags.ReadMessageHistory)) { - await Promise.all([channel.threads.fetchActive(), channel.threads.fetchArchived()]).catch(() => {}) - } + await channel.fetch().then(async e => { + if (e.threads && e.permissionsFor(client.id).has(PermissionsBitField.Flags.ReadMessageHistory)) { + await Promise.all([e.threads.fetchActive(), e.threads.fetchArchived()]).catch(() => {}) + } + }).catch(() => {}) }) console.log(`Channels of ${guildFetched.name} loaded (${guildFetched.id})`) }) From a8d4e82be7d44fa03c3055275516590953c06389 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 19 Nov 2022 20:02:49 +0100 Subject: [PATCH 214/236] Finaly found the fucking timeout problem --- Util/Moderation.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Util/Moderation.js b/Util/Moderation.js index f9cb0d4..a62870f 100644 --- a/Util/Moderation.js +++ b/Util/Moderation.js @@ -151,7 +151,7 @@ async function timeout(interaction, member, reason, unit, RealLen, joke = false, member = await interaction.guild.members.fetch(member) } - if (member.user.id === interaction.client.user.id) { + if (member.user.id === interaction.client.id) { if (reason === "No reason provided") return interaction.followUp(`Timed out undefined for ${RealLen} ${unit}`); else if (reason !== "No reason provided") return interaction.followUp(`Timed out undefined for ${RealLen} ${unit} for **${reason}.**`) }; From 8aa0cda3e0761c5922778776399445591d24412a Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 19 Nov 2022 20:18:36 +0100 Subject: [PATCH 215/236] Fuck it, finaly found it --- Util/Moderation.js | 4 ++-- commands/Moderation/timeout.js | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Util/Moderation.js b/Util/Moderation.js index a62870f..7dbda56 100644 --- a/Util/Moderation.js +++ b/Util/Moderation.js @@ -146,12 +146,12 @@ async function warn(interaction, user, reason, joke = false, db) { async function timeout(interaction, member, reason, unit, RealLen, joke = false, db) { let length = RealLen; - + console.log(member) if (!(member instanceof GuildMember)) { member = await interaction.guild.members.fetch(member) } - if (member.user.id === interaction.client.id) { + if (member.user.id === interaction.client.user.id) { if (reason === "No reason provided") return interaction.followUp(`Timed out undefined for ${RealLen} ${unit}`); else if (reason !== "No reason provided") return interaction.followUp(`Timed out undefined for ${RealLen} ${unit} for **${reason}.**`) }; diff --git a/commands/Moderation/timeout.js b/commands/Moderation/timeout.js index 5d42198..4a8d83a 100644 --- a/commands/Moderation/timeout.js +++ b/commands/Moderation/timeout.js @@ -1,5 +1,4 @@ -const { PermissionFlagsBits } = require('discord.js'); -const { SlashCommandBuilder } = require('discord.js'); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js'); const { timeout } = require("../../Util/Moderation.js") module.exports = { @@ -31,6 +30,6 @@ module.exports = { .setDescription('Why should this user be timed out?')), async execute(interaction) { interaction.deferReply() - timeout(interaction, interaction.options.getMember('member', true), interaction.options.getString('reason'), interaction.options.getString('unit', true), interaction.options.getInteger('duration', true), interaction.options.getBoolean('joke', true), interaction.client.db.Cases) + timeout(interaction, interaction.options.getMember('user', true), interaction.options.getString('reason'), interaction.options.getString('unit', true), interaction.options.getInteger('duration', true), interaction.options.getBoolean('joke', true), interaction.client.db.Cases) }, }; From ab060034c76dfd5d9f7a2e0662a46767156d5d9a Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 19 Nov 2022 21:21:49 +0100 Subject: [PATCH 216/236] Boi Finaly --- Util/Moderation.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/Util/Moderation.js b/Util/Moderation.js index 7dbda56..542e435 100644 --- a/Util/Moderation.js +++ b/Util/Moderation.js @@ -151,11 +151,22 @@ async function timeout(interaction, member, reason, unit, RealLen, joke = false, member = await interaction.guild.members.fetch(member) } + const replyEmbed = new EmbedBuilder() + .setColor("#43b582") + .setDescription(`**${escapeMarkdown(member.user.tag)} has been timeout for ${RealLen} ${unit} for **${reason}.**`); + if (member.user.id === interaction.client.user.id) { - if (reason === "No reason provided") return interaction.followUp(`Timed out undefined for ${RealLen} ${unit}`); - else if (reason !== "No reason provided") return interaction.followUp(`Timed out undefined for ${RealLen} ${unit} for **${reason}.**`) + if (reason === "No reason provided") { + replyEmbed.setDescription(`Timed out undefined for ${RealLen} ${unit}`) + return interaction.followUp({embeds: [replyEmbed]}); + } + else if (reason !== "No reason provided") { + replyEmbed.setDescription(`Timed out undefined for ${RealLen} ${unit} for **${reason}.**`) + return interaction.followUp({embeds: [replyEmbed]}) + } }; + switch (unit) { case "seconds": length = Math.floor(length * 1000); case "minutes": length = Math.floor(length * 60 * 1000); @@ -166,7 +177,7 @@ async function timeout(interaction, member, reason, unit, RealLen, joke = false, if (length > 2.419e+9) { replyEmbed.setColor("#FF0000"); replyEmbed.setDescription(`**I cannot timeout ${escapeMarkdown(member.user.tag)} for *that* long! You provided a time longer than 28 days!**`); - await interaction.followUp({ embeds: [replyEmbed] }); + return interaction.followUp({ embeds: [replyEmbed] }); } else if (length < 2.419e+9) { if (!joke) { @@ -181,7 +192,7 @@ async function timeout(interaction, member, reason, unit, RealLen, joke = false, } } - await interaction.followUp(replyEmbed) + await interaction.followUp({embeds: replyEmbed}) } module.exports = { ban, kick, warn, timeout } \ No newline at end of file From 46391fdb9f93083e010d0e7332ab1afb03022290 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 19 Nov 2022 21:23:27 +0100 Subject: [PATCH 217/236] Forgot that debugging thing --- Util/Moderation.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Util/Moderation.js b/Util/Moderation.js index 542e435..9b98f36 100644 --- a/Util/Moderation.js +++ b/Util/Moderation.js @@ -146,7 +146,7 @@ async function warn(interaction, user, reason, joke = false, db) { async function timeout(interaction, member, reason, unit, RealLen, joke = false, db) { let length = RealLen; - console.log(member) + if (!(member instanceof GuildMember)) { member = await interaction.guild.members.fetch(member) } From 018a567d475d4d6ebefa77641a892312915ba335 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 19 Nov 2022 21:26:35 +0100 Subject: [PATCH 218/236] i always forgot await with deferReply --- commands/Moderation/timeout.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/Moderation/timeout.js b/commands/Moderation/timeout.js index 4a8d83a..d64d6bd 100644 --- a/commands/Moderation/timeout.js +++ b/commands/Moderation/timeout.js @@ -29,7 +29,7 @@ module.exports = { .setName("reason") .setDescription('Why should this user be timed out?')), async execute(interaction) { - interaction.deferReply() + await interaction.deferReply() timeout(interaction, interaction.options.getMember('user', true), interaction.options.getString('reason'), interaction.options.getString('unit', true), interaction.options.getInteger('duration', true), interaction.options.getBoolean('joke', true), interaction.client.db.Cases) }, }; From ff8cb02da4f4f8333234ef7dd09feffcf3b0add9 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 19 Nov 2022 21:29:43 +0100 Subject: [PATCH 219/236] break in switch --- Util/Moderation.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Util/Moderation.js b/Util/Moderation.js index 9b98f36..cab35f6 100644 --- a/Util/Moderation.js +++ b/Util/Moderation.js @@ -168,10 +168,10 @@ async function timeout(interaction, member, reason, unit, RealLen, joke = false, switch (unit) { - case "seconds": length = Math.floor(length * 1000); - case "minutes": length = Math.floor(length * 60 * 1000); - case "hours": length = Math.floor(length * 60 * 60 * 1000); - case "days": length = Math.floor(length * 24 * 60 * 60 * 1000); + case "seconds": {length = Math.floor(length * 1000);break} + case "minutes": {length = Math.floor(length * 60 * 1000);break} + case "hours": {length = Math.floor(length * 60 * 60 * 1000);break} + case "days": {length = Math.floor(length * 24 * 60 * 60 * 1000);break} } if (length > 2.419e+9) { From 6269b4e267d25f876c92680349797be216fcba2f Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 19 Nov 2022 21:33:15 +0100 Subject: [PATCH 220/236] It's a fucking array --- Util/Moderation.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Util/Moderation.js b/Util/Moderation.js index cab35f6..ab9a153 100644 --- a/Util/Moderation.js +++ b/Util/Moderation.js @@ -192,7 +192,7 @@ async function timeout(interaction, member, reason, unit, RealLen, joke = false, } } - await interaction.followUp({embeds: replyEmbed}) + await interaction.followUp({embeds: [replyEmbed]}) } module.exports = { ban, kick, warn, timeout } \ No newline at end of file From 0fc304ff0aad69bfa1cf667268f040c2b0800995 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 19 Nov 2022 21:39:29 +0100 Subject: [PATCH 221/236] added the joke part + the correct logic --- Util/Moderation.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Util/Moderation.js b/Util/Moderation.js index ab9a153..2a14aac 100644 --- a/Util/Moderation.js +++ b/Util/Moderation.js @@ -181,18 +181,20 @@ async function timeout(interaction, member, reason, unit, RealLen, joke = false, } else if (length < 2.419e+9) { if (!joke) { - await member.timeout(length, reason + "| Timeout by" + interaction.user.tag).then(() => { + member.timeout(length, reason + "| Timeout by" + interaction.user.tag).then(async () => { db.create({ type: "timeout", reason: reason, Executor: interaction.user.tag, userID: member.user.id }) - }).catch(err => { console.error(err); return interaction.followUp(`Couldn't timeout ${escapeMarkdown(member.user.tag)}: \`\`\`${err}\`\`\``) }) + await interaction.followUp({embeds: [replyEmbed]}) + }).catch(err => { console.error(err); replyEmbed.setDescription(`Couldn't timeout ${escapeMarkdown(member.user.tag)}: \`\`\`${err}\`\`\``);return interaction.followUp({embeds: [replyEmbed]}) }) + } + else if (joke) { + await interaction.followUp({embeds: [replyEmbed]}) } - } - await interaction.followUp({embeds: [replyEmbed]}) } module.exports = { ban, kick, warn, timeout } \ No newline at end of file From 32c95c9b09c9d2f74fe681aca07485abcac7497f Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 19 Nov 2022 21:40:59 +0100 Subject: [PATCH 222/236] color red if failed --- Util/Moderation.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Util/Moderation.js b/Util/Moderation.js index 2a14aac..7db1b2c 100644 --- a/Util/Moderation.js +++ b/Util/Moderation.js @@ -189,7 +189,7 @@ async function timeout(interaction, member, reason, unit, RealLen, joke = false, userID: member.user.id }) await interaction.followUp({embeds: [replyEmbed]}) - }).catch(err => { console.error(err); replyEmbed.setDescription(`Couldn't timeout ${escapeMarkdown(member.user.tag)}: \`\`\`${err}\`\`\``);return interaction.followUp({embeds: [replyEmbed]}) }) + }).catch(err => { console.error(err); replyEmbed.setDescription(`Couldn't timeout ${escapeMarkdown(member.user.tag)}: \`\`\`${err}\`\`\``);replyEmbed.setColor("#ff0000");return interaction.followUp({embeds: [replyEmbed]}) }) } else if (joke) { await interaction.followUp({embeds: [replyEmbed]}) From c666f434eb7a79891cb60d360b67f0123fd99a3d Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 19 Nov 2022 21:44:06 +0100 Subject: [PATCH 223/236] Final commit for timeout. --- Util/Moderation.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Util/Moderation.js b/Util/Moderation.js index 7db1b2c..dcb63cc 100644 --- a/Util/Moderation.js +++ b/Util/Moderation.js @@ -153,7 +153,7 @@ async function timeout(interaction, member, reason, unit, RealLen, joke = false, const replyEmbed = new EmbedBuilder() .setColor("#43b582") - .setDescription(`**${escapeMarkdown(member.user.tag)} has been timeout for ${RealLen} ${unit} for **${reason}.**`); + .setDescription(`**${escapeMarkdown(member.user.tag)} has been timed out for ${RealLen} ${unit} for "${reason}".**`); if (member.user.id === interaction.client.user.id) { if (reason === "No reason provided") { From cc528735890def65fa0dce383bf91d3be7e69ef7 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 19 Nov 2022 21:45:38 +0100 Subject: [PATCH 224/236] No reason Provided --- Util/Moderation.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Util/Moderation.js b/Util/Moderation.js index dcb63cc..292d646 100644 --- a/Util/Moderation.js +++ b/Util/Moderation.js @@ -144,7 +144,7 @@ async function warn(interaction, user, reason, joke = false, db) { await interaction.followUp({ embeds: [replyEmbed] }) } -async function timeout(interaction, member, reason, unit, RealLen, joke = false, db) { +async function timeout(interaction, member, reason = "No reason provided", unit, RealLen, joke = false, db) { let length = RealLen; if (!(member instanceof GuildMember)) { From f3e08d37daf37800625627af6a1347e129535cda Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 19 Nov 2022 21:47:58 +0100 Subject: [PATCH 225/236] No reason provided 2 --- Util/Moderation.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Util/Moderation.js b/Util/Moderation.js index 292d646..e340184 100644 --- a/Util/Moderation.js +++ b/Util/Moderation.js @@ -144,8 +144,11 @@ async function warn(interaction, user, reason, joke = false, db) { await interaction.followUp({ embeds: [replyEmbed] }) } -async function timeout(interaction, member, reason = "No reason provided", unit, RealLen, joke = false, db) { +async function timeout(interaction, member, reason , unit, RealLen, joke = false, db) { let length = RealLen; + if (reason) { + reason = "No reason provided" + } if (!(member instanceof GuildMember)) { member = await interaction.guild.members.fetch(member) From 344f138fdc4ef5b7e9877b5912a9d6b48c478500 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 19 Nov 2022 21:52:13 +0100 Subject: [PATCH 226/236] joke first --- Util/Moderation.js | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/Util/Moderation.js b/Util/Moderation.js index e340184..db32144 100644 --- a/Util/Moderation.js +++ b/Util/Moderation.js @@ -75,7 +75,7 @@ async function kick(interaction, member, reason = "No reason provided", joke = f if (member.user.id === interaction.user.id) return interaction.followUp("Why do you want to kick yourself?") if (member.user.id === interaction.client.user.id) return interaction.followUp("❌ Why would you kick me? 😢") - + if (member.kickable) { await member.user.send({ embeds: [dmEmbed] }).catch(e => { console.error(`Couldn't message ${member.user.tag} (kick)`) }) @@ -107,7 +107,7 @@ async function warn(interaction, user, reason, joke = false, db) { await interaction.client.users.fetch(user) } - const avatar = await user.avatarURL({extention: 'png', size: 4096}) + const avatar = await user.avatarURL({ extention: 'png', size: 4096 }) const dmEmbed = new EmbedBuilder() .setColor("#f04a47") .setDescription(`**You have been warned from ${interaction.guild.name} for**: ${reason}`); @@ -115,7 +115,7 @@ async function warn(interaction, user, reason, joke = false, db) { .setColor("#43b582") .setDescription(`**${escapeMarkdown(user.tag)} has been warned for:** ${reason}`); const logEmbed = new EmbedBuilder() - .setAuthor({name: `Case idk | Warn | ${user.tag} | ${user.id}`, iconURL: (avatar ? avatar : undefined)}) + .setAuthor({ name: `Case idk | Warn | ${user.tag} | ${user.id}`, iconURL: (avatar ? avatar : undefined) }) .setColor("#f04a47") .setTimestamp(new Date()) .addFields( @@ -133,8 +133,8 @@ async function warn(interaction, user, reason, joke = false, db) { Executor: interaction.user.tag, userID: user.id }); - - logEmbed.setAuthor({name: `Case ${dbcr.id} | Warn | ${user.tag} | ${user.id}`, iconURL: (avatar ? avatar : undefined)}) + + logEmbed.setAuthor({ name: `Case ${dbcr.id} | Warn | ${user.tag} | ${user.id}`, iconURL: (avatar ? avatar : undefined) }) let logChannel = await interaction.guild.channels.fetch(logCha) await logChannel.send({ embeds: [logEmbed] }) @@ -144,12 +144,12 @@ async function warn(interaction, user, reason, joke = false, db) { await interaction.followUp({ embeds: [replyEmbed] }) } -async function timeout(interaction, member, reason , unit, RealLen, joke = false, db) { +async function timeout(interaction, member, reason, unit, RealLen, joke = false, db) { let length = RealLen; if (reason) { reason = "No reason provided" } - + if (!(member instanceof GuildMember)) { member = await interaction.guild.members.fetch(member) } @@ -160,21 +160,24 @@ async function timeout(interaction, member, reason , unit, RealLen, joke = false if (member.user.id === interaction.client.user.id) { if (reason === "No reason provided") { - replyEmbed.setDescription(`Timed out undefined for ${RealLen} ${unit}`) - return interaction.followUp({embeds: [replyEmbed]}); + replyEmbed.setDescription(`Timed out undefined for ${RealLen} ${unit}`) + return interaction.followUp({ embeds: [replyEmbed] }); } else if (reason !== "No reason provided") { replyEmbed.setDescription(`Timed out undefined for ${RealLen} ${unit} for **${reason}.**`) - return interaction.followUp({embeds: [replyEmbed]}) + return interaction.followUp({ embeds: [replyEmbed] }) } }; + if (joke) { + return interaction.followUp({ embeds: [replyEmbed] }) + } switch (unit) { - case "seconds": {length = Math.floor(length * 1000);break} - case "minutes": {length = Math.floor(length * 60 * 1000);break} - case "hours": {length = Math.floor(length * 60 * 60 * 1000);break} - case "days": {length = Math.floor(length * 24 * 60 * 60 * 1000);break} + case "seconds": { length = Math.floor(length * 1000); break } + case "minutes": { length = Math.floor(length * 60 * 1000); break } + case "hours": { length = Math.floor(length * 60 * 60 * 1000); break } + case "days": { length = Math.floor(length * 24 * 60 * 60 * 1000); break } } if (length > 2.419e+9) { @@ -191,11 +194,8 @@ async function timeout(interaction, member, reason , unit, RealLen, joke = false Executor: interaction.user.tag, userID: member.user.id }) - await interaction.followUp({embeds: [replyEmbed]}) - }).catch(err => { console.error(err); replyEmbed.setDescription(`Couldn't timeout ${escapeMarkdown(member.user.tag)}: \`\`\`${err}\`\`\``);replyEmbed.setColor("#ff0000");return interaction.followUp({embeds: [replyEmbed]}) }) - } - else if (joke) { - await interaction.followUp({embeds: [replyEmbed]}) + await interaction.followUp({ embeds: [replyEmbed] }) + }).catch(err => { console.error(err); replyEmbed.setDescription(`Couldn't timeout ${escapeMarkdown(member.user.tag)}: \`\`\`${err}\`\`\``); replyEmbed.setColor("#ff0000"); return interaction.followUp({ embeds: [replyEmbed] }) }) } } } From 2418940efd7f590b93cca37ce9659fb61b2df11e Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 19 Nov 2022 21:54:30 +0100 Subject: [PATCH 227/236] No reason provided 3 (Is it becomming like the stanley parable ultra deluxe?) --- Util/Moderation.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Util/Moderation.js b/Util/Moderation.js index db32144..295b7ae 100644 --- a/Util/Moderation.js +++ b/Util/Moderation.js @@ -146,7 +146,7 @@ async function warn(interaction, user, reason, joke = false, db) { async function timeout(interaction, member, reason, unit, RealLen, joke = false, db) { let length = RealLen; - if (reason) { + if (reason == undefined) { reason = "No reason provided" } From 8252c945949e248aba8a1ca37049b8633a748b2d Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 19 Nov 2022 21:57:51 +0100 Subject: [PATCH 228/236] Some more logical edit of the log --- Util/Moderation.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Util/Moderation.js b/Util/Moderation.js index 295b7ae..8f27287 100644 --- a/Util/Moderation.js +++ b/Util/Moderation.js @@ -156,8 +156,14 @@ async function timeout(interaction, member, reason, unit, RealLen, joke = false, const replyEmbed = new EmbedBuilder() .setColor("#43b582") - .setDescription(`**${escapeMarkdown(member.user.tag)} has been timed out for ${RealLen} ${unit} for "${reason}".**`); + if (reason !== "No reason provided") { + replyEmbed.setDescription(`**${escapeMarkdown(member.user.tag)} has been timed out for ${RealLen} ${unit} for "${reason}".**`); + } + else if (reason === "No reason provided") { + replyEmbed.setDescription(`**${escapeMarkdown(member.user.tag)} has been timed out for ${RealLen} ${unit}.**`) + } + if (member.user.id === interaction.client.user.id) { if (reason === "No reason provided") { replyEmbed.setDescription(`Timed out undefined for ${RealLen} ${unit}`) From 74bfef5d42174f3a26257fb5ea89372d5d73b7e3 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sat, 19 Nov 2022 22:12:55 +0100 Subject: [PATCH 229/236] 28 days fix --- Util/Moderation.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Util/Moderation.js b/Util/Moderation.js index 8f27287..8f54e4e 100644 --- a/Util/Moderation.js +++ b/Util/Moderation.js @@ -186,12 +186,12 @@ async function timeout(interaction, member, reason, unit, RealLen, joke = false, case "days": { length = Math.floor(length * 24 * 60 * 60 * 1000); break } } - if (length > 2.419e+9) { + if (length > 2.419e+9 + 1) { replyEmbed.setColor("#FF0000"); replyEmbed.setDescription(`**I cannot timeout ${escapeMarkdown(member.user.tag)} for *that* long! You provided a time longer than 28 days!**`); return interaction.followUp({ embeds: [replyEmbed] }); } - else if (length < 2.419e+9) { + else if (length <= 2.419e+9) { if (!joke) { member.timeout(length, reason + "| Timeout by" + interaction.user.tag).then(async () => { db.create({ From 78916e468dcb3a10c2da2c0a392800adf30b2462 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 20 Nov 2022 10:25:46 +0100 Subject: [PATCH 230/236] better role-selector system --- events/Interaction/InteractionCreate.js | 31 +++++++++++++++++-------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/events/Interaction/InteractionCreate.js b/events/Interaction/InteractionCreate.js index fa2f856..e1e97f4 100644 --- a/events/Interaction/InteractionCreate.js +++ b/events/Interaction/InteractionCreate.js @@ -1,10 +1,12 @@ +const { InteractionType, codeBlock } = require("discord.js"); + module.exports = { name: 'interactionCreate', on: true, async execute(interaction) { if (interaction.partial) return; - if (interaction.type == 2) { + if (interaction.type == InteractionType.ApplicationCommand) { if (interaction.commandType == 1) { const command = client.commands.get(interaction.commandName); if (!command) return; @@ -24,32 +26,41 @@ module.exports = { }); } } - else if (interaction.type == 3) { + else if (interaction.type == InteractionType.MessageComponent) { if (interaction.isSelectMenu) { if (interaction.customId !== "role-selector") return; await interaction.deferReply({ ephemeral: true }) - await interaction.member.fetch(); + let arr = [] + interaction.values.forEach(roleId => { + arr.push(interaction.guild.roles.fetch(roleId)) + }) + arr = await Promise.all(await interaction.member.fetch(), arr).catch(e => {});arr.slice(1) + const roles = interaction.member.roles; let response = [] - for (let roleId of interaction.values) { - const role = await interaction.guild.roles.fetch(roleId); + arr.forEach(async role => { if (role) { if (roles.cache.has(role.id)) { await roles.remove(role) - response.push(`Removed ${role.name}`) + response.push(`- ${role.name}`) } else if (!roles.cache.has(role.id)) { await roles.add(role) - response.push(`Added ${role.name}`) + response.push(`+ ${role.name}`) } } else if (!role) { - console.log(`${roleId} doesn't exist`) + console.log(`${role.id} doesn't exist`) } - } - interaction.followUp(response.join("\n")) + + interaction.followUp(`${codeBlock("diff", response.join("\n"))}`) + }); } } + else if (interaction.isModalSubmit) { + if (!interaction.customId.startsWith("edit-message")) return + + } } } \ No newline at end of file From 3c0947115555010bb7988c608e8480a1e3dc559e Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 20 Nov 2022 10:56:04 +0100 Subject: [PATCH 231/236] 28 days fix --- Util/Moderation.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Util/Moderation.js b/Util/Moderation.js index 8f54e4e..a99e8ce 100644 --- a/Util/Moderation.js +++ b/Util/Moderation.js @@ -186,12 +186,12 @@ async function timeout(interaction, member, reason, unit, RealLen, joke = false, case "days": { length = Math.floor(length * 24 * 60 * 60 * 1000); break } } - if (length > 2.419e+9 + 1) { + if (length > 2.4192e+9) { replyEmbed.setColor("#FF0000"); replyEmbed.setDescription(`**I cannot timeout ${escapeMarkdown(member.user.tag)} for *that* long! You provided a time longer than 28 days!**`); return interaction.followUp({ embeds: [replyEmbed] }); } - else if (length <= 2.419e+9) { + else if (length <= 2.4192e+9) { if (!joke) { member.timeout(length, reason + "| Timeout by" + interaction.user.tag).then(async () => { db.create({ From 26d4c260b01700a1a1a27273a8e1af8596c1d2ac Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 20 Nov 2022 11:09:46 +0100 Subject: [PATCH 232/236] role-selector fix --- events/Interaction/InteractionCreate.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/events/Interaction/InteractionCreate.js b/events/Interaction/InteractionCreate.js index e1e97f4..88c8fdf 100644 --- a/events/Interaction/InteractionCreate.js +++ b/events/Interaction/InteractionCreate.js @@ -34,7 +34,8 @@ module.exports = { interaction.values.forEach(roleId => { arr.push(interaction.guild.roles.fetch(roleId)) }) - arr = await Promise.all(await interaction.member.fetch(), arr).catch(e => {});arr.slice(1) + await interaction.member.fetch() + arr = await Promise.all(arr).catch(e => {}) const roles = interaction.member.roles; From 572bc768f7d3c1f07b76c638a8044574311aa49f Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Sun, 20 Nov 2022 11:12:27 +0100 Subject: [PATCH 233/236] What were you doing in here? --- events/Interaction/InteractionCreate.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/events/Interaction/InteractionCreate.js b/events/Interaction/InteractionCreate.js index 88c8fdf..5b1ead7 100644 --- a/events/Interaction/InteractionCreate.js +++ b/events/Interaction/InteractionCreate.js @@ -5,7 +5,7 @@ module.exports = { on: true, async execute(interaction) { if (interaction.partial) return; - + if (interaction.type == InteractionType.ApplicationCommand) { if (interaction.commandType == 1) { const command = client.commands.get(interaction.commandName); @@ -35,8 +35,8 @@ module.exports = { arr.push(interaction.guild.roles.fetch(roleId)) }) await interaction.member.fetch() - arr = await Promise.all(arr).catch(e => {}) - + arr = await Promise.all(arr).catch(e => { }) + const roles = interaction.member.roles; let response = [] @@ -54,9 +54,8 @@ module.exports = { else if (!role) { console.log(`${role.id} doesn't exist`) } - - interaction.followUp(`${codeBlock("diff", response.join("\n"))}`) }); + interaction.followUp(`${codeBlock("diff", response.join("\n"))}`) } } else if (interaction.isModalSubmit) { From bf852de6ca2f769f51ab62b3587b379405dfbc21 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 29 Nov 2022 15:25:10 +0100 Subject: [PATCH 234/236] ping.js --- commands/Misc/ping.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 commands/Misc/ping.js diff --git a/commands/Misc/ping.js b/commands/Misc/ping.js new file mode 100644 index 0000000..79bf2ca --- /dev/null +++ b/commands/Misc/ping.js @@ -0,0 +1,16 @@ +const { SlashCommandBuilder } = require('discord.js') + +module.exports = { + data: new SlashCommandBuilder() + .setName('ping') + .setDescription('Pong!'), + async execute(interaction) { + const replyEmbed = { + color: Math.floor(Math.random() * 16777215), + description: `Pong!\nLatency of the bot:${Date.now() - interaction.createdTimestamp}ms` + } + await interaction.reply({embeds: [replyEmbed]}) + replyEmbed.description += `\nRound-trip: ${Date.now() - interaction.createdTimestamp}ms` + return await interaction.editReply({embeds: [replyEmbed]}) + } +} \ No newline at end of file From 99859232731fa8b4e775304c6825082dc12525b0 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Tue, 29 Nov 2022 15:28:14 +0100 Subject: [PATCH 235/236] forgot ephemeral --- commands/Misc/ping.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/Misc/ping.js b/commands/Misc/ping.js index 79bf2ca..c415634 100644 --- a/commands/Misc/ping.js +++ b/commands/Misc/ping.js @@ -9,7 +9,7 @@ module.exports = { color: Math.floor(Math.random() * 16777215), description: `Pong!\nLatency of the bot:${Date.now() - interaction.createdTimestamp}ms` } - await interaction.reply({embeds: [replyEmbed]}) + await interaction.reply({embeds: [replyEmbed], ephemeral: true}) replyEmbed.description += `\nRound-trip: ${Date.now() - interaction.createdTimestamp}ms` return await interaction.editReply({embeds: [replyEmbed]}) } From 3e505f6aa6dd99106761e2566e1e3952194a03f6 Mon Sep 17 00:00:00 2001 From: 5jiji <60753482+5jiji@users.noreply.github.com> Date: Wed, 30 Nov 2022 23:07:48 +0100 Subject: [PATCH 236/236] better README (not that much tho...) --- README.md | 10 +++++----- events/Interaction/InteractionCreate.js | 9 ++++++--- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 0414043..f221ae9 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,8 @@ This bot is made with the Node.js runtime. 1. Install Node.js 17. 2. Download the latest release [here](https://github.com/Progressbar-Discord-Server/Processes/releases) -2. Copy `config.json.template` to `config.json` and fill in the variables. -3. Run `npm i` to install the required modules. -4. Register the slash commands with `node deploy-commands.js`. -5. Start the bot with `node .`. The database will automatically be created for you. -6. Invite the bot with the link the console send \ No newline at end of file +3. Copy `config.json.template` to `config.json` and fill in the variables. +4. Run `npm i` to install the required modules. +5. Register the slash commands with `node deploy-commands.js`. +6. Start the bot with `node .`. The database will automatically be created for you. +7. Invite the bot with the link the console send (Only if "showLink" variable in config.json is true) \ No newline at end of file diff --git a/events/Interaction/InteractionCreate.js b/events/Interaction/InteractionCreate.js index 5b1ead7..125db6d 100644 --- a/events/Interaction/InteractionCreate.js +++ b/events/Interaction/InteractionCreate.js @@ -41,7 +41,7 @@ module.exports = { let response = [] arr.forEach(async role => { - if (role) { + if (role != null) { if (roles.cache.has(role.id)) { await roles.remove(role) response.push(`- ${role.name}`) @@ -51,10 +51,13 @@ module.exports = { response.push(`+ ${role.name}`) } } - else if (!role) { - console.log(`${role.id} doesn't exist`) + else if (role == null) { + let ownerIds = require("../../config.json").OwnerId + let rng = Math.floor(Math.random() * ownerIds.length) + response.push(`${role.id} doesn't exist, Please contact <@${ownerIds[rng]}>`) } }); + debugger interaction.followUp(`${codeBlock("diff", response.join("\n"))}`) } }