Add button to create extensions!
This commit is contained in:
parent
14213bff37
commit
b2291086b0
|
@ -32,5 +32,11 @@
|
|||
"name": "list",
|
||||
"description": "List all extensions on the LiteNet Phone System",
|
||||
"type": 1
|
||||
},
|
||||
{
|
||||
"name": "button",
|
||||
"description": "Send the get an extension button!",
|
||||
"type": 1,
|
||||
"default_member_permissions": 0
|
||||
}
|
||||
]
|
||||
|
|
446
index.js
446
index.js
|
@ -206,7 +206,7 @@ const {
|
|||
Routes
|
||||
} = require('discord.js');
|
||||
const dcClient = new Discord.Client({
|
||||
intents: ["Guilds"]
|
||||
intents: ["Guilds", "GuildMembers"]
|
||||
});
|
||||
const rest = new REST({
|
||||
version: '10'
|
||||
|
@ -217,7 +217,7 @@ var sendLog;
|
|||
dcClient.on('ready', async () => {
|
||||
await dcClient.channels.fetch(config.discord.logId).then((channel) => {
|
||||
sendLog = (message) => {
|
||||
channel.send(`\`\`\`ansi\n${message}\`\`\``);
|
||||
//channel.send(`\`\`\`ansi\n${message}\`\`\``);
|
||||
console.log(message);
|
||||
};
|
||||
|
||||
|
@ -398,8 +398,78 @@ dcClient.on('ready', async () => {
|
|||
})
|
||||
}
|
||||
})
|
||||
|
||||
});
|
||||
|
||||
// Automatically create extensions for all existing members that don't have one
|
||||
// Temporarily disabled, until I can fix it.
|
||||
// dcClient.guilds.fetch(config.discord.guildId).then((guild) => {
|
||||
// console.log(guild.name)
|
||||
// let waitR = 0;
|
||||
// let waitW = 0;
|
||||
// y = guild.members.fetch().then((members) => {
|
||||
// clearInterval(x)
|
||||
// console.log(members.size)
|
||||
// members.forEach((member) => {
|
||||
// if (member.user.bot) return;
|
||||
// setTimeout(() => {
|
||||
// console.log(`Checking ${member.user.tag}`)
|
||||
// timeoutA = setTimeout(() => {
|
||||
// findNextExtension().then((result) => {
|
||||
// let uid = member.user.id;
|
||||
// let ext = result.result;
|
||||
// let name = member.user.tag;
|
||||
// createExtension(ext, name, uid).then((result) => {
|
||||
// sendLog(`${colors.cyan("[INFO]")} Created extension ${result.result.createExtension.extension} for ${member.user.tag}`);
|
||||
// }).catch((error) => {
|
||||
// sendLog(`${colors.red("[ERROR]")} ${member.user.tag} ${error}`);
|
||||
// });
|
||||
// })
|
||||
// }, 10000) // 10 second timeout, assume no extension exists
|
||||
// lookupExtension(member.id, "uid").then((result) => {
|
||||
// clearTimeout(timeoutA);
|
||||
// if (result.status == "exists") {
|
||||
// // Extension already exists, do nothing
|
||||
// } else {
|
||||
// console.log()
|
||||
// findNextExtension().then((result) => {
|
||||
// let uid = member.user.id;
|
||||
// let ext = result.result;
|
||||
// let name = member.user.tag;
|
||||
// createExtension(ext, name, uid).then((result) => {
|
||||
// sendLog(`${colors.cyan("[INFO]")} Created extension ${result.result.createExtension.extension} for ${member.user.tag}`);
|
||||
// }).catch((error) => {
|
||||
// sendLog(`${colors.red("[ERROR]")} ${member.user.tag} ${error}`);
|
||||
// });
|
||||
// })
|
||||
// }
|
||||
// }).catch((error) => {
|
||||
// clearTimeout(timeoutA);
|
||||
// console.log(error)
|
||||
// findNextExtension().then((result) => {
|
||||
// let uid = member.user.id;
|
||||
// let ext = result.result;
|
||||
// let name = member.user.tag;
|
||||
// createExtension(ext, name, uid).then((result) => {
|
||||
// sendLog(`${colors.cyan("[INFO]")} Created extension ${result.result.createExtension.extension} for ${member.user.tag}`);
|
||||
// }).catch((error) => {
|
||||
// sendLog(`${colors.red("[ERROR]")} ${member.user.tag} ${error}`);
|
||||
// });
|
||||
// })
|
||||
// console.log(`Creating extension for ${member.user.tag} in ${waitW} seconds`)
|
||||
// });
|
||||
// }, waitR * 1000)
|
||||
// console.log(`Waiting ${waitR} seconds to check ${member.user.tag}`)
|
||||
// waitR+=2;
|
||||
// });
|
||||
// }).catch((error) => {
|
||||
// sendLog(`${colors.red("[ERROR]")} ${error}`);
|
||||
// });
|
||||
// x = setInterval(() => {
|
||||
// console.log(y)
|
||||
// }, 1000)
|
||||
// });
|
||||
|
||||
});
|
||||
|
||||
dcClient.on("guildMemberRemove", (member) => {
|
||||
|
@ -420,167 +490,257 @@ dcClient.on("guildMemberRemove", (member) => {
|
|||
});
|
||||
|
||||
dcClient.on('interactionCreate', async interaction => {
|
||||
if (!interaction.isCommand()) return;
|
||||
const {
|
||||
commandName
|
||||
} = interaction;
|
||||
switch (commandName) {
|
||||
case "new":
|
||||
await interaction.deferReply({
|
||||
ephemeral: true
|
||||
});
|
||||
lookupExtension(interaction.user.id, "uid").then((result) => {
|
||||
if (result.status == "exists") {
|
||||
// The user already has an extension, return an ephemeral message saying so
|
||||
interaction.editReply({
|
||||
content: "You already have an extension!",
|
||||
ephemeral: true
|
||||
});
|
||||
}
|
||||
}).catch((error) => {
|
||||
// The user doesn't have an extension, create one
|
||||
findNextExtension().then((result) => {
|
||||
if (result.status == "success") {
|
||||
let uid = interaction.user.id;
|
||||
let ext = result.result;
|
||||
let name = interaction.user.tag;
|
||||
interaction.editReply(`Creating extension ${ext}...`)
|
||||
// Create the extension
|
||||
createExtension(ext, name, uid).then((result) => {
|
||||
if (result.status == "created") {
|
||||
interaction.editReply({
|
||||
content: "",
|
||||
embeds: [{
|
||||
"title": "Extension Created!",
|
||||
"color": 0x00ff00,
|
||||
"description": `The SIP server is \`${config.freepbx.server}\``,
|
||||
"fields": [{
|
||||
"name": "Extension/Username",
|
||||
"value": ext
|
||||
},
|
||||
{
|
||||
"name": "Password",
|
||||
"value": `||${result.result.fetchExtension.user.extPassword}||`
|
||||
}
|
||||
]
|
||||
}]
|
||||
})
|
||||
sendLog(`${colors.cyan("[INFO]")} Created extension ${ext} for user ${uid}`);
|
||||
// Add the role to the user on Discord based on the ID in the config file
|
||||
let role = interaction.guild.roles.cache.find(role => role.id === config.discord.roleId);
|
||||
interaction.member.roles.add(role);
|
||||
}
|
||||
}).catch((error) => {
|
||||
interaction.editReply(`Error creating extension: ${error}`);
|
||||
if (interaction.isCommand()) {
|
||||
const {
|
||||
commandName
|
||||
} = interaction;
|
||||
switch (commandName) {
|
||||
case "new":
|
||||
await interaction.deferReply({
|
||||
ephemeral: true
|
||||
});
|
||||
lookupExtension(interaction.user.id, "uid").then((result) => {
|
||||
if (result.status == "exists") {
|
||||
// The user already has an extension, return an ephemeral message saying so
|
||||
interaction.editReply({
|
||||
content: "You already have an extension!",
|
||||
ephemeral: true
|
||||
});
|
||||
}
|
||||
}).catch((error) => {
|
||||
interaction.editReply(`Error finding next available extension: ${error}`);
|
||||
// The user doesn't have an extension, create one
|
||||
findNextExtension().then((result) => {
|
||||
if (result.status == "success") {
|
||||
let uid = interaction.user.id;
|
||||
let ext = result.result;
|
||||
let name = interaction.user.tag;
|
||||
interaction.editReply(`Creating extension ${ext}...`)
|
||||
// Create the extension
|
||||
createExtension(ext, name, uid).then((result) => {
|
||||
if (result.status == "created") {
|
||||
interaction.editReply({
|
||||
content: "",
|
||||
embeds: [{
|
||||
"title": "Extension Created!",
|
||||
"color": 0x00ff00,
|
||||
"description": `The SIP server is \`${config.freepbx.server}\``,
|
||||
"fields": [{
|
||||
"name": "Extension/Username",
|
||||
"value": ext
|
||||
},
|
||||
{
|
||||
"name": "Password",
|
||||
"value": `||${result.result.fetchExtension.user.extPassword}||`
|
||||
}
|
||||
]
|
||||
}]
|
||||
})
|
||||
sendLog(`${colors.cyan("[INFO]")} Created extension ${ext} for user ${uid}`);
|
||||
// Add the role to the user on Discord based on the ID in the config file
|
||||
let role = interaction.guild.roles.cache.find(role => role.id === config.discord.roleId);
|
||||
interaction.member.roles.add(role);
|
||||
}
|
||||
}).catch((error) => {
|
||||
interaction.editReply(`Error creating extension: ${error}`);
|
||||
});
|
||||
}
|
||||
}).catch((error) => {
|
||||
interaction.editReply(`Error finding next available extension: ${error}`);
|
||||
});
|
||||
});
|
||||
});
|
||||
break;
|
||||
case "whoami":
|
||||
await interaction.deferReply({
|
||||
ephemeral: true
|
||||
});
|
||||
lookupExtension(interaction.user.id, "uid").then((result) => {
|
||||
if (result.status == "exists") {
|
||||
// The user already has an extension, return an ephemeral message saying so
|
||||
break;
|
||||
case "whoami":
|
||||
await interaction.deferReply({
|
||||
ephemeral: true
|
||||
});
|
||||
lookupExtension(interaction.user.id, "uid").then((result) => {
|
||||
if (result.status == "exists") {
|
||||
// The user already has an extension, return an ephemeral message saying so
|
||||
interaction.editReply({
|
||||
content: "",
|
||||
embeds: [{
|
||||
"title": "Extension Info",
|
||||
"color": 0x00ff00,
|
||||
"description": `The SIP server is \`${config.freepbx.server}\``,
|
||||
"fields": [{
|
||||
"name": "Extension/Username",
|
||||
"value": result.result.fetchExtension.user.extension
|
||||
},
|
||||
{
|
||||
"name": "Password",
|
||||
"value": `||${result.result.fetchExtension.user.extPassword}||`
|
||||
}
|
||||
]
|
||||
}],
|
||||
ephemeral: true
|
||||
})
|
||||
}
|
||||
}).catch((error) => {
|
||||
// The user doesn't have an extension, create one
|
||||
sendLog(`${colors.red("[ERROR]")} ${error}`)
|
||||
interaction.editReply({
|
||||
content: "You don't have an extension!",
|
||||
ephemeral: true
|
||||
});
|
||||
});
|
||||
break;
|
||||
|
||||
case "list":
|
||||
await interaction.deferReply({
|
||||
ephemeral: false
|
||||
});
|
||||
pbxClient.request(funcs.generateQuery("list", {})).then((result) => {
|
||||
let extensions = result.fetchAllExtensions.extension;
|
||||
// key:value pairs of extension:username
|
||||
let extensionList = {};
|
||||
extensions.forEach((extension) => {
|
||||
extensionList[extension.user.extension] = extension.user.name;
|
||||
});
|
||||
extensionList1 = "";
|
||||
for (let key in extensionList) {
|
||||
extensionList1 += `${key}: ${extensionList[key]}\n`;
|
||||
}
|
||||
interaction.editReply({
|
||||
content: "",
|
||||
embeds: [{
|
||||
"title": "Extension Info",
|
||||
"title": "Extension List",
|
||||
"color": 0x00ff00,
|
||||
"description": `The SIP server is \`${config.freepbx.server}\``,
|
||||
"fields": [{
|
||||
"name": "Extension/Username",
|
||||
"value": result.result.fetchExtension.user.extension
|
||||
},
|
||||
{
|
||||
"name": "Password",
|
||||
"value": `||${result.result.fetchExtension.user.extPassword}||`
|
||||
}
|
||||
]
|
||||
}],
|
||||
"description": `${extensionList1}`
|
||||
}]
|
||||
});
|
||||
}).catch((error) => {
|
||||
interaction.editReply(`Error listing extensions: ${error}`);
|
||||
});
|
||||
break;
|
||||
case "delete":
|
||||
if (interaction.options.get("confirm").value == false) {
|
||||
interaction.reply({
|
||||
content: "Please confirm you want to delete your extension by running `/delete confirm:true`",
|
||||
ephemeral: true
|
||||
})
|
||||
break;
|
||||
}
|
||||
}).catch((error) => {
|
||||
// The user doesn't have an extension, create one
|
||||
sendLog(`${colors.red("[ERROR]")} ${error}`)
|
||||
interaction.editReply({
|
||||
content: "You don't have an extension!",
|
||||
await interaction.deferReply({
|
||||
ephemeral: true
|
||||
});
|
||||
});
|
||||
break;
|
||||
|
||||
case "list":
|
||||
await interaction.deferReply({
|
||||
ephemeral: false
|
||||
});
|
||||
pbxClient.request(funcs.generateQuery("list", {})).then((result) => {
|
||||
let extensions = result.fetchAllExtensions.extension;
|
||||
// key:value pairs of extension:username
|
||||
let extensionList = {};
|
||||
extensions.forEach((extension) => {
|
||||
extensionList[extension.user.extension] = extension.user.name;
|
||||
lookupExtension(interaction.user.id, "uid").then((result) => {
|
||||
if (result.status == "exists") {
|
||||
// The user has an extension, delete it
|
||||
deleteExtension(result.result.fetchExtension.user.extension).then((result) => {
|
||||
if (result.status == "deleted") {
|
||||
interaction.editReply({
|
||||
content: "Extension Deleted!",
|
||||
ephemeral: true
|
||||
});
|
||||
sendLog(`${colors.green("[INFO]")} ${interaction.user.tag} (${interaction.user.id}) deleted extension ${result.result.fetchExtension.user.extension}`)
|
||||
// Remove the role from the user on Discord based on the ID in the config file
|
||||
let role = interaction.guild.roles.cache.find(role => role.id === config.discord.roleId);
|
||||
interaction.member.roles.remove(role);
|
||||
}
|
||||
}).catch((error) => {
|
||||
interaction.reply(`Error deleting extension: ${error}`);
|
||||
});
|
||||
}
|
||||
}).catch((error) => {
|
||||
// The user doesn't have an extension, return an ephemeral message saying so
|
||||
interaction.editReply({
|
||||
content: "You don't have an extension!",
|
||||
ephemeral: true
|
||||
});
|
||||
});
|
||||
extensionList1 = "";
|
||||
for (let key in extensionList) {
|
||||
extensionList1 += `${key}: ${extensionList[key]}\n`;
|
||||
}
|
||||
interaction.editReply({
|
||||
content: "",
|
||||
embeds: [{
|
||||
"title": "Extension List",
|
||||
"color": 0x00ff00,
|
||||
"description": `${extensionList1}`
|
||||
}]
|
||||
});
|
||||
}).catch((error) => {
|
||||
interaction.editReply(`Error listing extensions: ${error}`);
|
||||
});
|
||||
break;
|
||||
case "delete":
|
||||
if (interaction.options.get("confirm").value == false) {
|
||||
interaction.reply({
|
||||
content: "Please confirm you want to delete your extension by running `/delete confirm:true`",
|
||||
ephemeral: true
|
||||
})
|
||||
break;
|
||||
}
|
||||
await interaction.deferReply({
|
||||
ephemeral: true
|
||||
});
|
||||
lookupExtension(interaction.user.id, "uid").then((result) => {
|
||||
if (result.status == "exists") {
|
||||
// The user has an extension, delete it
|
||||
deleteExtension(result.result.fetchExtension.user.extension).then((result) => {
|
||||
if (result.status == "deleted") {
|
||||
interaction.editReply({
|
||||
content: "Extension Deleted!",
|
||||
ephemeral: true
|
||||
case "button":
|
||||
interaction.channel.send({
|
||||
embeds: [
|
||||
{
|
||||
"title": "Community Phone System",
|
||||
"description": "Click the button below to get your extension!",
|
||||
"color": null
|
||||
}
|
||||
],
|
||||
components: [
|
||||
{
|
||||
type: 1,
|
||||
components: [
|
||||
{
|
||||
type: 2,
|
||||
label: "Get an Extension",
|
||||
emoji: {
|
||||
name: "✅"
|
||||
},
|
||||
style: 3,
|
||||
custom_id: "new"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}).then(() => {
|
||||
interaction.reply({
|
||||
content: "Button sent!",
|
||||
ephemeral: true
|
||||
})
|
||||
});
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (interaction.isButton()) {
|
||||
switch (interaction.customId) {
|
||||
case "new":
|
||||
await interaction.deferReply({
|
||||
ephemeral: true
|
||||
});
|
||||
lookupExtension(interaction.user.id, "uid").then((result) => {
|
||||
if (result.status == "exists") {
|
||||
// The user already has an extension, return an ephemeral message saying so
|
||||
interaction.editReply({
|
||||
content: "You already have an extension!",
|
||||
ephemeral: true
|
||||
});
|
||||
}
|
||||
}).catch((error) => {
|
||||
// The user doesn't have an extension, create one
|
||||
findNextExtension().then((result) => {
|
||||
if (result.status == "success") {
|
||||
let uid = interaction.user.id;
|
||||
let ext = result.result;
|
||||
let name = interaction.user.tag;
|
||||
interaction.editReply(`Creating extension ${ext}...`)
|
||||
// Create the extension
|
||||
createExtension(ext, name, uid).then((result) => {
|
||||
if (result.status == "created") {
|
||||
interaction.editReply({
|
||||
content: "",
|
||||
embeds: [{
|
||||
"title": "Extension Created!",
|
||||
"color": 0x00ff00,
|
||||
"description": `The SIP server is \`${config.freepbx.server}\``,
|
||||
"fields": [{
|
||||
"name": "Extension/Username",
|
||||
"value": ext
|
||||
},
|
||||
{
|
||||
"name": "Password",
|
||||
"value": `||${result.result.fetchExtension.user.extPassword}||`
|
||||
}
|
||||
]
|
||||
}]
|
||||
})
|
||||
sendLog(`${colors.cyan("[INFO]")} Created extension ${ext} for user ${uid}`);
|
||||
// Add the role to the user on Discord based on the ID in the config file
|
||||
let role = interaction.guild.roles.cache.find(role => role.id === config.discord.roleId);
|
||||
interaction.member.roles.add(role);
|
||||
}
|
||||
}).catch((error) => {
|
||||
interaction.editReply(`Error creating extension: ${error}`);
|
||||
});
|
||||
sendLog(`${colors.green("[INFO]")} ${interaction.user.tag} (${interaction.user.id}) deleted extension ${result.result.fetchExtension.user.extension}`)
|
||||
// Remove the role from the user on Discord based on the ID in the config file
|
||||
let role = interaction.guild.roles.cache.find(role => role.id === config.discord.roleId);
|
||||
interaction.member.roles.remove(role);
|
||||
}
|
||||
}).catch((error) => {
|
||||
interaction.reply(`Error deleting extension: ${error}`);
|
||||
interaction.editReply(`Error finding next available extension: ${error}`);
|
||||
});
|
||||
}
|
||||
}).catch((error) => {
|
||||
// The user doesn't have an extension, return an ephemeral message saying so
|
||||
interaction.editReply({
|
||||
content: "You don't have an extension!",
|
||||
ephemeral: true
|
||||
});
|
||||
});
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
|
359
package-lock.json
generated
359
package-lock.json
generated
|
@ -16,51 +16,63 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@discordjs/builders": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.4.0.tgz",
|
||||
"integrity": "sha512-nEeTCheTTDw5kO93faM1j8ZJPonAX86qpq/QVoznnSa8WWcCgJpjlu6GylfINTDW6o7zZY0my2SYdxx2mfNwGA==",
|
||||
"version": "1.6.1",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.6.1.tgz",
|
||||
"integrity": "sha512-CCcLwn/8ANhlAbhlE18fcaN0hfXTen53/JiwZs1t9oE/Cqa9maA8ZRarkCIsXF4J7J/MYnd0J6IsxeKsq+f6mw==",
|
||||
"dependencies": {
|
||||
"@discordjs/util": "^0.1.0",
|
||||
"@sapphire/shapeshift": "^3.7.1",
|
||||
"discord-api-types": "^0.37.20",
|
||||
"@discordjs/formatters": "^0.3.0",
|
||||
"@discordjs/util": "^0.2.0",
|
||||
"@sapphire/shapeshift": "^3.8.1",
|
||||
"discord-api-types": "^0.37.37",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"ts-mixer": "^6.0.2",
|
||||
"tslib": "^2.4.1"
|
||||
"ts-mixer": "^6.0.3",
|
||||
"tslib": "^2.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@discordjs/collection": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.3.0.tgz",
|
||||
"integrity": "sha512-ylt2NyZ77bJbRij4h9u/wVy7qYw/aDqQLWnadjvDqW/WoWCxrsX6M3CIw9GVP5xcGCDxsrKj5e0r5evuFYwrKg==",
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.0.tgz",
|
||||
"integrity": "sha512-suyVndkEAAWrGxyw/CPGdtXoRRU6AUNkibtnbJevQzpelkJh3Q1gQqWDpqf5i39CnAn5+LrN0YS+cULeEjq2Yw==",
|
||||
"engines": {
|
||||
"node": ">=16.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@discordjs/formatters": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.3.0.tgz",
|
||||
"integrity": "sha512-Fc4MomalbP8HMKEMor3qUiboAKDtR7PSBoPjwm7WYghVRwgJlj5WYvUsriLsxeKk8+Qq2oy+HJlGTUkGvX0YnA==",
|
||||
"dependencies": {
|
||||
"discord-api-types": "^0.37.37"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@discordjs/rest": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.5.0.tgz",
|
||||
"integrity": "sha512-lXgNFqHnbmzp5u81W0+frdXN6Etf4EUi8FAPcWpSykKd8hmlWh1xy6BmE0bsJypU1pxohaA8lQCgp70NUI3uzA==",
|
||||
"version": "1.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.7.0.tgz",
|
||||
"integrity": "sha512-r2HzmznRIo8IDGYBWqQfkEaGN1LrFfWQd3dSyC4tOpMU8nuVvFUEw6V/lwnG44jyOq+vgyDny2fxeUDMt9I4aQ==",
|
||||
"dependencies": {
|
||||
"@discordjs/collection": "^1.3.0",
|
||||
"@discordjs/util": "^0.1.0",
|
||||
"@discordjs/collection": "^1.5.0",
|
||||
"@discordjs/util": "^0.2.0",
|
||||
"@sapphire/async-queue": "^1.5.0",
|
||||
"@sapphire/snowflake": "^3.2.2",
|
||||
"discord-api-types": "^0.37.23",
|
||||
"file-type": "^18.0.0",
|
||||
"tslib": "^2.4.1",
|
||||
"undici": "^5.13.0"
|
||||
"@sapphire/snowflake": "^3.4.0",
|
||||
"discord-api-types": "^0.37.37",
|
||||
"file-type": "^18.2.1",
|
||||
"tslib": "^2.5.0",
|
||||
"undici": "^5.21.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.9.0"
|
||||
}
|
||||
},
|
||||
"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==",
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/util/-/util-0.2.0.tgz",
|
||||
"integrity": "sha512-/8qNbebFzLWKOOg+UV+RB8itp4SmU5jw0tBUD3ifElW6rYNOj1Ku5JaSW7lLl/WgjjxF01l/1uQPCzkwr110vg==",
|
||||
"engines": {
|
||||
"node": ">=16.9.0"
|
||||
}
|
||||
|
@ -124,9 +136,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@sapphire/shapeshift": {
|
||||
"version": "3.8.1",
|
||||
"resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.8.1.tgz",
|
||||
"integrity": "sha512-xG1oXXBhCjPKbxrRTlox9ddaZTvVpOhYLmKmApD/vIWOV1xEYXnpoFs68zHIZBGbqztq6FrUPNPerIrO1Hqeaw==",
|
||||
"version": "3.8.2",
|
||||
"resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.8.2.tgz",
|
||||
"integrity": "sha512-NXpnJAsxN3/h9TqQPntOeVWZrpIuucqXI3IWF6tj2fWCoRLCuVK5wx7Dtg7pRrtkYfsMUbDqgKoX26vrC5iYfA==",
|
||||
"dependencies": {
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"lodash": "^4.17.21"
|
||||
|
@ -137,9 +149,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@sapphire/snowflake": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.4.0.tgz",
|
||||
"integrity": "sha512-zZxymtVO6zeXVMPds+6d7gv/OfnCc25M1Z+7ZLB0oPmeMTPeRWVPQSS16oDJy5ZsyCOLj7M6mbZml5gWXcVRNw==",
|
||||
"version": "3.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.4.2.tgz",
|
||||
"integrity": "sha512-KJwlv5gkGjs1uFV7/xx81n3tqgBwBJvH94n1xDyH3q+JSmtsMeSleJffarEBfG2yAFeJiFA4BnGOK6FFPHc19g==",
|
||||
"engines": {
|
||||
"node": ">=v14.0.0",
|
||||
"npm": ">=7.0.0"
|
||||
|
@ -160,9 +172,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "18.11.19",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.19.tgz",
|
||||
"integrity": "sha512-YUgMWAQBWLObABqrvx8qKO1enAvBUdjZOAWQ5grBAkp5LQv45jBvYKZ3oFS9iKRCQyFjqw6iuEa1vmFqtxYLZw=="
|
||||
"version": "18.16.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.1.tgz",
|
||||
"integrity": "sha512-DZxSZWXxFfOlx7k7Rv4LAyiMroaxa3Ly/7OOzZO8cBNho0YzAi4qlbrx8W27JGqG57IgR/6J7r+nOJWw6kcvZA=="
|
||||
},
|
||||
"node_modules/@types/ws": {
|
||||
"version": "8.5.4",
|
||||
|
@ -189,13 +201,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/agentkeepalive": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz",
|
||||
"integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==",
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.3.0.tgz",
|
||||
"integrity": "sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"debug": "^4.1.0",
|
||||
"depd": "^1.1.2",
|
||||
"depd": "^2.0.0",
|
||||
"humanize-ms": "^1.2.1"
|
||||
},
|
||||
"engines": {
|
||||
|
@ -391,12 +403,12 @@
|
|||
"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==",
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
|
||||
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/detect-libc": {
|
||||
|
@ -408,27 +420,28 @@
|
|||
}
|
||||
},
|
||||
"node_modules/discord-api-types": {
|
||||
"version": "0.37.31",
|
||||
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.31.tgz",
|
||||
"integrity": "sha512-k9DQQ7Wv+ehiF7901qk/FnP47k6O2MHm3meQFee4gUzi5dfGAVLf7SfLNtb4w7G2dmukJyWQtVJEDF9oMb9yuQ=="
|
||||
"version": "0.37.40",
|
||||
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.40.tgz",
|
||||
"integrity": "sha512-LMALvtO+p6ERK8rwWoaI490NfIE/egbqjR4/rfLL1z9gQE1gqLiTpIUUDIunfAtKYzeH6ucyXhaXXWpfZh/Q6g=="
|
||||
},
|
||||
"node_modules/discord.js": {
|
||||
"version": "14.7.1",
|
||||
"resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.7.1.tgz",
|
||||
"integrity": "sha512-1FECvqJJjjeYcjSm0IGMnPxLqja/pmG1B0W2l3lUY2Gi4KXiyTeQmU1IxWcbXHn2k+ytP587mMWqva2IA87EbA==",
|
||||
"version": "14.9.0",
|
||||
"resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.9.0.tgz",
|
||||
"integrity": "sha512-ygGms5xP4hG+QrrY9k7d/OYCzMltSMtdl/2Snzq/nLCiZo+Sna91Ulv9l0+B5Jd/Czcq37B7wJAnmja7GOa+bg==",
|
||||
"dependencies": {
|
||||
"@discordjs/builders": "^1.4.0",
|
||||
"@discordjs/collection": "^1.3.0",
|
||||
"@discordjs/rest": "^1.4.0",
|
||||
"@discordjs/util": "^0.1.0",
|
||||
"@sapphire/snowflake": "^3.2.2",
|
||||
"@types/ws": "^8.5.3",
|
||||
"discord-api-types": "^0.37.20",
|
||||
"@discordjs/builders": "^1.6.0",
|
||||
"@discordjs/collection": "^1.5.0",
|
||||
"@discordjs/formatters": "^0.3.0",
|
||||
"@discordjs/rest": "^1.7.0",
|
||||
"@discordjs/util": "^0.2.0",
|
||||
"@sapphire/snowflake": "^3.4.0",
|
||||
"@types/ws": "^8.5.4",
|
||||
"discord-api-types": "^0.37.37",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"lodash.snakecase": "^4.1.1",
|
||||
"tslib": "^2.4.1",
|
||||
"undici": "^5.13.0",
|
||||
"ws": "^8.11.0"
|
||||
"tslib": "^2.5.0",
|
||||
"undici": "^5.21.0",
|
||||
"ws": "^8.13.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.9.0"
|
||||
|
@ -480,9 +493,9 @@
|
|||
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
|
||||
},
|
||||
"node_modules/file-type": {
|
||||
"version": "18.2.0",
|
||||
"resolved": "https://registry.npmjs.org/file-type/-/file-type-18.2.0.tgz",
|
||||
"integrity": "sha512-M3RQMWY3F2ykyWZ+IHwNCjpnUmukYhtdkGGC1ZVEUb0ve5REGF7NNJ4Q9ehCUabtQKtSVFOMbFTXgJlFb0DQIg==",
|
||||
"version": "18.3.0",
|
||||
"resolved": "https://registry.npmjs.org/file-type/-/file-type-18.3.0.tgz",
|
||||
"integrity": "sha512-pkPZ5OGIq0TYb37b8bHDLNeQSe1H2KlaQ2ySGpJkkr2KZdaWsO4QhPzHA0mQcsUW2cSqJk+4gM/UyLz/UFbXdQ==",
|
||||
"dependencies": {
|
||||
"readable-web-to-node-stream": "^3.0.2",
|
||||
"strtok3": "^7.0.0",
|
||||
|
@ -572,9 +585,9 @@
|
|||
}
|
||||
},
|
||||
"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==",
|
||||
"version": "4.2.11",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
|
||||
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
|
||||
"optional": true
|
||||
},
|
||||
"node_modules/graphql": {
|
||||
|
@ -1143,9 +1156,9 @@
|
|||
}
|
||||
},
|
||||
"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==",
|
||||
"version": "3.6.2",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
|
||||
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
|
||||
"dependencies": {
|
||||
"inherits": "^2.0.3",
|
||||
"string_decoder": "^1.1.1",
|
||||
|
@ -1219,9 +1232,9 @@
|
|||
"optional": true
|
||||
},
|
||||
"node_modules/semver": {
|
||||
"version": "7.3.8",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
|
||||
"integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
|
||||
"version": "7.5.0",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz",
|
||||
"integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==",
|
||||
"dependencies": {
|
||||
"lru-cache": "^6.0.0"
|
||||
},
|
||||
|
@ -1281,9 +1294,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/sqlite3": {
|
||||
"version": "5.1.4",
|
||||
"resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.4.tgz",
|
||||
"integrity": "sha512-i0UlWAzPlzX3B5XP2cYuhWQJsTtlMD6obOa1PgeEQ4DHEXUuyJkgv50I3isqZAP5oFc2T8OFvakmDh2W6I+YpA==",
|
||||
"version": "5.1.6",
|
||||
"resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.6.tgz",
|
||||
"integrity": "sha512-olYkWoKFVNSSSQNvxVUfjiVbz3YtBwTJj+mfV5zpHmqW3sELx2Cf4QCdirMelhM5Zh+KDVaKgQHqCxrqiWHybw==",
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"@mapbox/node-pre-gyp": "^1.0.0",
|
||||
|
@ -1387,9 +1400,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/tar/node_modules/minipass": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.2.tgz",
|
||||
"integrity": "sha512-4Hbzei7ZyBp+1aw0874YWpKOubZd/jc53/XU+gkYry1QV+VvrbO8icLM5CUtm4F0hyXn85DXYKEMIS26gitD3A==",
|
||||
"version": "4.2.8",
|
||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz",
|
||||
"integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
|
@ -1416,9 +1429,9 @@
|
|||
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
|
||||
},
|
||||
"node_modules/ts-mixer": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.2.tgz",
|
||||
"integrity": "sha512-zvHx3VM83m2WYCE8XL99uaM7mFwYSkjR2OZti98fabHrwkjsCvgwChda5xctein3xGOyaQhtTeDq/1H/GNvF3A=="
|
||||
"version": "6.0.3",
|
||||
"resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.3.tgz",
|
||||
"integrity": "sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ=="
|
||||
},
|
||||
"node_modules/tslib": {
|
||||
"version": "2.5.0",
|
||||
|
@ -1426,14 +1439,14 @@
|
|||
"integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
|
||||
},
|
||||
"node_modules/undici": {
|
||||
"version": "5.18.0",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-5.18.0.tgz",
|
||||
"integrity": "sha512-1iVwbhonhFytNdg0P4PqyIAXbdlVZVebtPDvuM36m66mRw4OGrCm2MYynJv/UENFLdP13J1nPVQzVE2zTs1OeA==",
|
||||
"version": "5.22.0",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-5.22.0.tgz",
|
||||
"integrity": "sha512-fR9RXCc+6Dxav4P9VV/sp5w3eFiSdOjJYsbtWfd4s5L5C4ogyuVpdKIVHeW0vV1MloM65/f7W45nR9ZxwVdyiA==",
|
||||
"dependencies": {
|
||||
"busboy": "^1.6.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.18"
|
||||
"node": ">=14.0"
|
||||
}
|
||||
},
|
||||
"node_modules/unique-filename": {
|
||||
|
@ -1502,9 +1515,9 @@
|
|||
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
|
||||
},
|
||||
"node_modules/ws": {
|
||||
"version": "8.12.0",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz",
|
||||
"integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==",
|
||||
"version": "8.13.0",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
|
||||
"integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
},
|
||||
|
@ -1529,42 +1542,51 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@discordjs/builders": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.4.0.tgz",
|
||||
"integrity": "sha512-nEeTCheTTDw5kO93faM1j8ZJPonAX86qpq/QVoznnSa8WWcCgJpjlu6GylfINTDW6o7zZY0my2SYdxx2mfNwGA==",
|
||||
"version": "1.6.1",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.6.1.tgz",
|
||||
"integrity": "sha512-CCcLwn/8ANhlAbhlE18fcaN0hfXTen53/JiwZs1t9oE/Cqa9maA8ZRarkCIsXF4J7J/MYnd0J6IsxeKsq+f6mw==",
|
||||
"requires": {
|
||||
"@discordjs/util": "^0.1.0",
|
||||
"@sapphire/shapeshift": "^3.7.1",
|
||||
"discord-api-types": "^0.37.20",
|
||||
"@discordjs/formatters": "^0.3.0",
|
||||
"@discordjs/util": "^0.2.0",
|
||||
"@sapphire/shapeshift": "^3.8.1",
|
||||
"discord-api-types": "^0.37.37",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"ts-mixer": "^6.0.2",
|
||||
"tslib": "^2.4.1"
|
||||
"ts-mixer": "^6.0.3",
|
||||
"tslib": "^2.5.0"
|
||||
}
|
||||
},
|
||||
"@discordjs/collection": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.3.0.tgz",
|
||||
"integrity": "sha512-ylt2NyZ77bJbRij4h9u/wVy7qYw/aDqQLWnadjvDqW/WoWCxrsX6M3CIw9GVP5xcGCDxsrKj5e0r5evuFYwrKg=="
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.0.tgz",
|
||||
"integrity": "sha512-suyVndkEAAWrGxyw/CPGdtXoRRU6AUNkibtnbJevQzpelkJh3Q1gQqWDpqf5i39CnAn5+LrN0YS+cULeEjq2Yw=="
|
||||
},
|
||||
"@discordjs/formatters": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.3.0.tgz",
|
||||
"integrity": "sha512-Fc4MomalbP8HMKEMor3qUiboAKDtR7PSBoPjwm7WYghVRwgJlj5WYvUsriLsxeKk8+Qq2oy+HJlGTUkGvX0YnA==",
|
||||
"requires": {
|
||||
"discord-api-types": "^0.37.37"
|
||||
}
|
||||
},
|
||||
"@discordjs/rest": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.5.0.tgz",
|
||||
"integrity": "sha512-lXgNFqHnbmzp5u81W0+frdXN6Etf4EUi8FAPcWpSykKd8hmlWh1xy6BmE0bsJypU1pxohaA8lQCgp70NUI3uzA==",
|
||||
"version": "1.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.7.0.tgz",
|
||||
"integrity": "sha512-r2HzmznRIo8IDGYBWqQfkEaGN1LrFfWQd3dSyC4tOpMU8nuVvFUEw6V/lwnG44jyOq+vgyDny2fxeUDMt9I4aQ==",
|
||||
"requires": {
|
||||
"@discordjs/collection": "^1.3.0",
|
||||
"@discordjs/util": "^0.1.0",
|
||||
"@discordjs/collection": "^1.5.0",
|
||||
"@discordjs/util": "^0.2.0",
|
||||
"@sapphire/async-queue": "^1.5.0",
|
||||
"@sapphire/snowflake": "^3.2.2",
|
||||
"discord-api-types": "^0.37.23",
|
||||
"file-type": "^18.0.0",
|
||||
"tslib": "^2.4.1",
|
||||
"undici": "^5.13.0"
|
||||
"@sapphire/snowflake": "^3.4.0",
|
||||
"discord-api-types": "^0.37.37",
|
||||
"file-type": "^18.2.1",
|
||||
"tslib": "^2.5.0",
|
||||
"undici": "^5.21.0"
|
||||
}
|
||||
},
|
||||
"@discordjs/util": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/util/-/util-0.1.0.tgz",
|
||||
"integrity": "sha512-e7d+PaTLVQav6rOc2tojh2y6FE8S7REkqLldq1XF4soCx74XB/DIjbVbVLtBemf0nLW77ntz0v+o5DytKwFNLQ=="
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/util/-/util-0.2.0.tgz",
|
||||
"integrity": "sha512-/8qNbebFzLWKOOg+UV+RB8itp4SmU5jw0tBUD3ifElW6rYNOj1Ku5JaSW7lLl/WgjjxF01l/1uQPCzkwr110vg=="
|
||||
},
|
||||
"@gar/promisify": {
|
||||
"version": "1.1.3",
|
||||
|
@ -1614,18 +1636,18 @@
|
|||
"integrity": "sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA=="
|
||||
},
|
||||
"@sapphire/shapeshift": {
|
||||
"version": "3.8.1",
|
||||
"resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.8.1.tgz",
|
||||
"integrity": "sha512-xG1oXXBhCjPKbxrRTlox9ddaZTvVpOhYLmKmApD/vIWOV1xEYXnpoFs68zHIZBGbqztq6FrUPNPerIrO1Hqeaw==",
|
||||
"version": "3.8.2",
|
||||
"resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.8.2.tgz",
|
||||
"integrity": "sha512-NXpnJAsxN3/h9TqQPntOeVWZrpIuucqXI3IWF6tj2fWCoRLCuVK5wx7Dtg7pRrtkYfsMUbDqgKoX26vrC5iYfA==",
|
||||
"requires": {
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"lodash": "^4.17.21"
|
||||
}
|
||||
},
|
||||
"@sapphire/snowflake": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.4.0.tgz",
|
||||
"integrity": "sha512-zZxymtVO6zeXVMPds+6d7gv/OfnCc25M1Z+7ZLB0oPmeMTPeRWVPQSS16oDJy5ZsyCOLj7M6mbZml5gWXcVRNw=="
|
||||
"version": "3.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.4.2.tgz",
|
||||
"integrity": "sha512-KJwlv5gkGjs1uFV7/xx81n3tqgBwBJvH94n1xDyH3q+JSmtsMeSleJffarEBfG2yAFeJiFA4BnGOK6FFPHc19g=="
|
||||
},
|
||||
"@tokenizer/token": {
|
||||
"version": "0.3.0",
|
||||
|
@ -1639,9 +1661,9 @@
|
|||
"optional": true
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "18.11.19",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.19.tgz",
|
||||
"integrity": "sha512-YUgMWAQBWLObABqrvx8qKO1enAvBUdjZOAWQ5grBAkp5LQv45jBvYKZ3oFS9iKRCQyFjqw6iuEa1vmFqtxYLZw=="
|
||||
"version": "18.16.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.1.tgz",
|
||||
"integrity": "sha512-DZxSZWXxFfOlx7k7Rv4LAyiMroaxa3Ly/7OOzZO8cBNho0YzAi4qlbrx8W27JGqG57IgR/6J7r+nOJWw6kcvZA=="
|
||||
},
|
||||
"@types/ws": {
|
||||
"version": "8.5.4",
|
||||
|
@ -1665,13 +1687,13 @@
|
|||
}
|
||||
},
|
||||
"agentkeepalive": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz",
|
||||
"integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==",
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.3.0.tgz",
|
||||
"integrity": "sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"debug": "^4.1.0",
|
||||
"depd": "^1.1.2",
|
||||
"depd": "^2.0.0",
|
||||
"humanize-ms": "^1.2.1"
|
||||
}
|
||||
},
|
||||
|
@ -1823,9 +1845,9 @@
|
|||
"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==",
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
|
||||
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
|
||||
"optional": true
|
||||
},
|
||||
"detect-libc": {
|
||||
|
@ -1834,27 +1856,28 @@
|
|||
"integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w=="
|
||||
},
|
||||
"discord-api-types": {
|
||||
"version": "0.37.31",
|
||||
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.31.tgz",
|
||||
"integrity": "sha512-k9DQQ7Wv+ehiF7901qk/FnP47k6O2MHm3meQFee4gUzi5dfGAVLf7SfLNtb4w7G2dmukJyWQtVJEDF9oMb9yuQ=="
|
||||
"version": "0.37.40",
|
||||
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.40.tgz",
|
||||
"integrity": "sha512-LMALvtO+p6ERK8rwWoaI490NfIE/egbqjR4/rfLL1z9gQE1gqLiTpIUUDIunfAtKYzeH6ucyXhaXXWpfZh/Q6g=="
|
||||
},
|
||||
"discord.js": {
|
||||
"version": "14.7.1",
|
||||
"resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.7.1.tgz",
|
||||
"integrity": "sha512-1FECvqJJjjeYcjSm0IGMnPxLqja/pmG1B0W2l3lUY2Gi4KXiyTeQmU1IxWcbXHn2k+ytP587mMWqva2IA87EbA==",
|
||||
"version": "14.9.0",
|
||||
"resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.9.0.tgz",
|
||||
"integrity": "sha512-ygGms5xP4hG+QrrY9k7d/OYCzMltSMtdl/2Snzq/nLCiZo+Sna91Ulv9l0+B5Jd/Czcq37B7wJAnmja7GOa+bg==",
|
||||
"requires": {
|
||||
"@discordjs/builders": "^1.4.0",
|
||||
"@discordjs/collection": "^1.3.0",
|
||||
"@discordjs/rest": "^1.4.0",
|
||||
"@discordjs/util": "^0.1.0",
|
||||
"@sapphire/snowflake": "^3.2.2",
|
||||
"@types/ws": "^8.5.3",
|
||||
"discord-api-types": "^0.37.20",
|
||||
"@discordjs/builders": "^1.6.0",
|
||||
"@discordjs/collection": "^1.5.0",
|
||||
"@discordjs/formatters": "^0.3.0",
|
||||
"@discordjs/rest": "^1.7.0",
|
||||
"@discordjs/util": "^0.2.0",
|
||||
"@sapphire/snowflake": "^3.4.0",
|
||||
"@types/ws": "^8.5.4",
|
||||
"discord-api-types": "^0.37.37",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"lodash.snakecase": "^4.1.1",
|
||||
"tslib": "^2.4.1",
|
||||
"undici": "^5.13.0",
|
||||
"ws": "^8.11.0"
|
||||
"tslib": "^2.5.0",
|
||||
"undici": "^5.21.0",
|
||||
"ws": "^8.13.0"
|
||||
}
|
||||
},
|
||||
"emoji-regex": {
|
||||
|
@ -1894,9 +1917,9 @@
|
|||
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
|
||||
},
|
||||
"file-type": {
|
||||
"version": "18.2.0",
|
||||
"resolved": "https://registry.npmjs.org/file-type/-/file-type-18.2.0.tgz",
|
||||
"integrity": "sha512-M3RQMWY3F2ykyWZ+IHwNCjpnUmukYhtdkGGC1ZVEUb0ve5REGF7NNJ4Q9ehCUabtQKtSVFOMbFTXgJlFb0DQIg==",
|
||||
"version": "18.3.0",
|
||||
"resolved": "https://registry.npmjs.org/file-type/-/file-type-18.3.0.tgz",
|
||||
"integrity": "sha512-pkPZ5OGIq0TYb37b8bHDLNeQSe1H2KlaQ2ySGpJkkr2KZdaWsO4QhPzHA0mQcsUW2cSqJk+4gM/UyLz/UFbXdQ==",
|
||||
"requires": {
|
||||
"readable-web-to-node-stream": "^3.0.2",
|
||||
"strtok3": "^7.0.0",
|
||||
|
@ -1965,9 +1988,9 @@
|
|||
}
|
||||
},
|
||||
"graceful-fs": {
|
||||
"version": "4.2.10",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
|
||||
"integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
|
||||
"version": "4.2.11",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
|
||||
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
|
||||
"optional": true
|
||||
},
|
||||
"graphql": {
|
||||
|
@ -2392,9 +2415,9 @@
|
|||
}
|
||||
},
|
||||
"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==",
|
||||
"version": "3.6.2",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
|
||||
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
|
||||
"requires": {
|
||||
"inherits": "^2.0.3",
|
||||
"string_decoder": "^1.1.1",
|
||||
|
@ -2435,9 +2458,9 @@
|
|||
"optional": true
|
||||
},
|
||||
"semver": {
|
||||
"version": "7.3.8",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
|
||||
"integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
|
||||
"version": "7.5.0",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz",
|
||||
"integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==",
|
||||
"requires": {
|
||||
"lru-cache": "^6.0.0"
|
||||
}
|
||||
|
@ -2480,9 +2503,9 @@
|
|||
}
|
||||
},
|
||||
"sqlite3": {
|
||||
"version": "5.1.4",
|
||||
"resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.4.tgz",
|
||||
"integrity": "sha512-i0UlWAzPlzX3B5XP2cYuhWQJsTtlMD6obOa1PgeEQ4DHEXUuyJkgv50I3isqZAP5oFc2T8OFvakmDh2W6I+YpA==",
|
||||
"version": "5.1.6",
|
||||
"resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.6.tgz",
|
||||
"integrity": "sha512-olYkWoKFVNSSSQNvxVUfjiVbz3YtBwTJj+mfV5zpHmqW3sELx2Cf4QCdirMelhM5Zh+KDVaKgQHqCxrqiWHybw==",
|
||||
"requires": {
|
||||
"@mapbox/node-pre-gyp": "^1.0.0",
|
||||
"node-addon-api": "^4.2.0",
|
||||
|
@ -2553,9 +2576,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"minipass": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.2.tgz",
|
||||
"integrity": "sha512-4Hbzei7ZyBp+1aw0874YWpKOubZd/jc53/XU+gkYry1QV+VvrbO8icLM5CUtm4F0hyXn85DXYKEMIS26gitD3A=="
|
||||
"version": "4.2.8",
|
||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz",
|
||||
"integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ=="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -2574,9 +2597,9 @@
|
|||
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
|
||||
},
|
||||
"ts-mixer": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.2.tgz",
|
||||
"integrity": "sha512-zvHx3VM83m2WYCE8XL99uaM7mFwYSkjR2OZti98fabHrwkjsCvgwChda5xctein3xGOyaQhtTeDq/1H/GNvF3A=="
|
||||
"version": "6.0.3",
|
||||
"resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.3.tgz",
|
||||
"integrity": "sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ=="
|
||||
},
|
||||
"tslib": {
|
||||
"version": "2.5.0",
|
||||
|
@ -2584,9 +2607,9 @@
|
|||
"integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
|
||||
},
|
||||
"undici": {
|
||||
"version": "5.18.0",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-5.18.0.tgz",
|
||||
"integrity": "sha512-1iVwbhonhFytNdg0P4PqyIAXbdlVZVebtPDvuM36m66mRw4OGrCm2MYynJv/UENFLdP13J1nPVQzVE2zTs1OeA==",
|
||||
"version": "5.22.0",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-5.22.0.tgz",
|
||||
"integrity": "sha512-fR9RXCc+6Dxav4P9VV/sp5w3eFiSdOjJYsbtWfd4s5L5C4ogyuVpdKIVHeW0vV1MloM65/f7W45nR9ZxwVdyiA==",
|
||||
"requires": {
|
||||
"busboy": "^1.6.0"
|
||||
}
|
||||
|
@ -2651,9 +2674,9 @@
|
|||
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
|
||||
},
|
||||
"ws": {
|
||||
"version": "8.12.0",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz",
|
||||
"integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==",
|
||||
"version": "8.13.0",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
|
||||
"integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
|
||||
"requires": {}
|
||||
},
|
||||
"yallist": {
|
||||
|
|
Loading…
Reference in a new issue