Compare commits

...

5 Commits

Author SHA1 Message Date
Emily d97c5fa569 added new brands 2022-12-26 18:00:25 +11:00
Emily 3ca0b4cb5c WIP splatnet 2022-12-26 18:00:16 +11:00
Emily 0eb76aac2b 1/3 WIP splatnet 2022-12-26 16:31:54 +11:00
Emily 9e77c291cb fix a bunch of stuff that is bad practice 2022-12-24 22:55:08 +11:00
Emily fa0be297ba add cache mainly for API data 2022-12-24 22:53:14 +11:00
13 changed files with 384 additions and 96 deletions

View File

@ -5,15 +5,25 @@
},
"Annaki": {
"common": "Main Power Up",
"common": "Ink Saver (Sub)",
"uncommon": "Special Saver"
},
"Barazushi": {
"common": "Intensify Action",
"uncommon": "Sub Power Up"
},
"Cuttlegear": {
"common": "N/A",
"uncommon": "N/A"
},
"Emberz": {
"common": "Intensify Action",
"uncommon": "Special Charge Up"
},
"Enperry": {
"common": "Sub Power Up",
"uncommon": "Ink Resistance Up"
@ -36,7 +46,7 @@
"Inkline": {
"common": "Bomb Defence Up DX",
"uncommon": "Main Power Up"
"uncommon": "Intensify Action"
},
"Krak-On": {
@ -54,7 +64,7 @@
"uncommon": "Special Saver"
},
"Splash Mob": {
"SplashMob": {
"common": "Ink Saver (Main)",
"uncommon": "Run Speed Up"
},
@ -75,7 +85,7 @@
},
"ToniKensa": {
"common": "Main Power Up",
"common": "Ink Saver (Main)",
"uncommon": "Sub Power Up"
},

View File

@ -37,8 +37,8 @@ module.exports = class About extends Command {
const embed = new client.EmbedBuilder()
.setTitle('About me')
.setThumbnail(client.user.avatarURL({format: 'png'}))
.setColor(bot.user.hexAccentColor ?? bot.displayHexColor)
.addFields([
.setColor(bot.displayHexColor)
.addFields(
{
name: 'General',
value: `» Users: \`${userCount}\`\n» Servers: \`${client.guilds.cache.size}\`\n» Commands: \`${client.commands.size}\`\n» Uptime: \`${uptime}\``,
@ -49,7 +49,7 @@ module.exports = class About extends Command {
value: `» RAM Usage: \`${(process.memoryUsage().heapUsed / 1024 / 1024).toFixed(2)} MB\`\n» Woomy version: \`v${client.version} ${build}\`\n» discord.js version: \`v${version}\`\n» node.js version: \`${process.version}\``,
inline: true
}
])
)
.setFooter({ text: 'Made in Australia'});
return interaction.reply({ embeds: [embed], components: [links] });

View File

@ -64,7 +64,7 @@ module.exports = class Help extends Command {
const command = await client.commands.get(input.value);
const embed = new client.EmbedBuilder()
.setTitle(`${command.category} -> ${command.name.toProperCase()}`)
.setColor(bot.user.hexAccentColor ?? bot.displayHexColor)
.setColor(bot.displayHexColor)
.setDescription(command.description)
.setFooter({ text: '<> = required, / = either/or, [] = optional'});

View File

@ -69,7 +69,7 @@ module.exports = class Garfield extends Command {
.then(json => {
const embed = new client.EmbedBuilder()
.setTitle(`#${json.data.number}: ${json.data.name}`)
.setColor(bot.user.hexAccentColor ?? bot.displayHexColor)
.setColor(bot.displayHexColor)
.setImage(json.data.image.src);
interaction.editReply({ embeds: [embed] });
})

View File

@ -11,7 +11,7 @@ module.exports = class Inspire extends Command {
}
async run (client, interaction, data) { //eslint-disable-line no-unused-vars
interaction.deferReply();
await interaction.deferReply();
fetch('http://inspirobot.me/api?generate=true', { headers: { 'User-Agent': client.config.userAgent }})
.then(res => res.text())
.then(body => interaction.editReply(body))

View File

@ -28,6 +28,6 @@ module.exports = class Avatar extends Command {
.setDescription(`[Global avatar](${user.avatarURL({extension: 'png', 'size': 4096})})`)
.setImage(member.displayAvatarURL({extension: 'png', 'size': 4096}));
await interaction.reply({embeds: [embed]});
interaction.reply({embeds: [embed]});
}
};

View File

@ -47,7 +47,7 @@ module.exports = class Avatar extends Command {
.setColor(client.functions.embedColor(guild))
.setTitle(guild.name)
.setThumbnail(guild.iconURL({extension: 'png', 'size': 4096}))
.addFields([
.addFields(
{
name: 'ID', value: guild.id, inline: true
},
@ -84,7 +84,7 @@ module.exports = class Avatar extends Command {
{
name: 'Features', value: guild.features.join(', ')
}
]);
);
interaction.reply({ embeds: [embed] });
}
};

View File

@ -0,0 +1,257 @@
const Command = require('../../base/Command.js');
const fetch = require('node-fetch');
const { pagination } = require('@devraelfreeze/discordjs-pagination');
const prettifyMiliseconds = require('pretty-ms');
const brandAbilities = require('../../assets/s3BrandAbilities.json');
module.exports = class Splatnet extends Command {
constructor (name, category) {
super (name, category);
this.name = name,
this.description = 'View the current map rotation, salmon run gear and SplatNet gear for Splatoon 3',
this.category = category,
this.options = [
{
type: 1,
name: 'maps',
description: 'Get current and upcoming map rotations for turf war, anarchy and X-rank battles.'
},
{
type: 1,
name: 'salmonrun',
description: 'Get current and upcoming map rotations for salmon run, as well as the monthly gear reward.'
},
{
type: 1,
name: 'gear',
description: 'View the gear currently available on the SplatNet mobile app.'
}
];
}
async run (client, interaction, data) { //eslint-disable-line no-unused-vars
const subCmd = interaction.options.getSubcommand();
const embeds = [];
await interaction.deferReply();
if (subCmd === 'maps') {
if (client.cache.has('SPLATNET_MAPS') && Date.now() > client.cache.get('SPLATNET_MAPS').expiry) {
client.cache.delete('SPLATNET_MAPS');
}
if (!client.cache.has('SPLATNET_MAPS')) {
fetch('https://splatoon3.ink/data/schedules.json', { headers: { 'User-Agent': client.config.userAgent }})
.then(res => res.json())
.then(async json => {
// cache data so we dont spam API
client.cache.set('SPLATNET_MAPS', {data: json, expiry: new Date(json.data.xSchedules.nodes[0].endTime)});
embeds.push(new client.EmbedBuilder()
.setTitle('Current Splatoon 3 Maps')
.setColor(interaction.guild.members.me.displayHexColor)
.addFields(
{
name: '<:turf_war:814651383911153692> Turf War',
value: `${json.data.regularSchedules.nodes[0].regularMatchSetting.vsStages[0].name}\n${json.data.regularSchedules.nodes[0].regularMatchSetting.vsStages[1].name}`,
inline: true
},
{
name: `<:ranked:814651402479468544> Anarchy Series: ${json.data.bankaraSchedules.nodes[0].bankaraMatchSettings[0].vsRule.name}`,
value: `${json.data.bankaraSchedules.nodes[0].bankaraMatchSettings[0].vsStages[0].name}\n${json.data.bankaraSchedules.nodes[0].bankaraMatchSettings[0].vsStages[1].name}`,
inline: true
},
{
name: `<:ranked:814651402479468544> Anarchy Open: ${json.data.bankaraSchedules.nodes[0].bankaraMatchSettings[1].vsRule.name}`,
value: `${json.data.bankaraSchedules.nodes[0].bankaraMatchSettings[1].vsStages[0].name}\n${json.data.bankaraSchedules.nodes[0].bankaraMatchSettings[1].vsStages[1].name}`,
inline: true
},
{
name: `<:xRank:1056806341575970898> X rank: ${json.data.xSchedules.nodes[0].xMatchSetting.vsRule.name}`,
value: `${json.data.xSchedules.nodes[0].xMatchSetting.vsStages[0].name}\n${json.data.xSchedules.nodes[0].xMatchSetting.vsStages[1].name}`,
inline: true
}
)
.setFooter({ text: `Maps changing in ${prettifyMiliseconds(new Date(json.data.xSchedules.nodes[0].endTime).getTime() - Date.now(), { secondsDecimalDigits: 0 })} - Data provided by splatoon3.ink`})
);
for (let i = 1; i < json.data.regularSchedules.nodes.length; i++) {
embeds.push(new client.EmbedBuilder()
.setTitle('Upcoming Splatoon 3 Maps')
.setColor(interaction.guild.members.me.displayColor)
.addFields(
{
name: '<:turf_war:814651383911153692> Turf War',
value: `${json.data.regularSchedules.nodes[i].regularMatchSetting.vsStages[0].name}\n${json.data.regularSchedules.nodes[i].regularMatchSetting.vsStages[1].name}`,
inline: true
},
{
name: `<:ranked:814651402479468544> Anarchy Series: ${json.data.bankaraSchedules.nodes[i].bankaraMatchSettings[0].vsRule.name}`,
value: `${json.data.bankaraSchedules.nodes[i].bankaraMatchSettings[0].vsStages[0].name}\n${json.data.bankaraSchedules.nodes[i].bankaraMatchSettings[0].vsStages[1].name}`,
inline: true
},
{
name: `<:ranked:814651402479468544> Anarchy Open: ${json.data.bankaraSchedules.nodes[i].bankaraMatchSettings[1].vsRule.name}`,
value: `${json.data.bankaraSchedules.nodes[i].bankaraMatchSettings[1].vsStages[0].name}\n${json.data.bankaraSchedules.nodes[i].bankaraMatchSettings[1].vsStages[1].name}`,
inline: true
},
{
name: `X rank: ${json.data.xSchedules.nodes[i].xMatchSetting.vsRule.name}`,
value: `${json.data.xSchedules.nodes[i].xMatchSetting.vsStages[0].name}\n${json.data.xSchedules.nodes[i].xMatchSetting.vsStages[1].name}`,
inline: true
}
)
.setFooter({ text: `Starting in ${prettifyMiliseconds(new Date(json.data.xSchedules.nodes[i].startTime).getTime() - Date.now(), { secondsDecimalDigits: 0 })} - Data provided by splatoon3.ink`})
);
}
await pagination({
embeds: embeds,
author: interaction.member.user,
interaction: interaction,
time: 60000,
disableButtons: false,
});
})
.catch(err => {
client.logger.error('SPLATNET_COMMAND_ERROR', `API err or err replying: ${err.stack}`);
return interaction.editReply(`${client.config.emojis.botError} An error occurred, sorry! I've reported this to my developers.`);
});
} else {
let json = client.cache.get('SPLATNET_MAPS');
json = json.data;
embeds.push(new client.EmbedBuilder()
.setTitle('Current Splatoon 3 Maps')
.setColor(interaction.guild.members.me.displayColor)
.addFields(
{
name: '<:turf_war:814651383911153692> Turf War',
value: `${json.data.regularSchedules.nodes[0].regularMatchSetting.vsStages[0].name}\n${json.data.regularSchedules.nodes[0].regularMatchSetting.vsStages[1].name}`,
inline: true
},
{
name: `<:ranked:814651402479468544> Anarchy Series: ${json.data.bankaraSchedules.nodes[0].bankaraMatchSettings[0].vsRule.name}`,
value: `${json.data.bankaraSchedules.nodes[0].bankaraMatchSettings[0].vsStages[0].name}\n${json.data.bankaraSchedules.nodes[0].bankaraMatchSettings[0].vsStages[1].name}`,
inline: true
},
{
name: `<:ranked:814651402479468544> Anarchy Open: ${json.data.bankaraSchedules.nodes[0].bankaraMatchSettings[1].vsRule.name}`,
value: `${json.data.bankaraSchedules.nodes[0].bankaraMatchSettings[1].vsStages[0].name}\n${json.data.bankaraSchedules.nodes[0].bankaraMatchSettings[1].vsStages[1].name}`,
inline: true
},
{
name: `X rank: ${json.data.xSchedules.nodes[0].xMatchSetting.vsRule.name}`,
value: `${json.data.xSchedules.nodes[0].xMatchSetting.vsStages[0].name}\n${json.data.xSchedules.nodes[0].xMatchSetting.vsStages[1].name}`,
inline: true
}
)
.setFooter({ text: `Maps changing in ${prettifyMiliseconds(new Date(json.data.xSchedules.nodes[0].endTime).getTime() - Date.now(), { secondsDecimalDigits: 0 })} - Data provided by splatoon3.ink`})
);
for (let i = 1; i < json.data.regularSchedules.nodes.length; i++) {
embeds.push(new client.EmbedBuilder()
.setTitle('Upcoming Splatoon 3 Maps')
.setColor(interaction.guild.members.me.displayColor)
.addFields(
{
name: '<:turf_war:814651383911153692> Turf War',
value: `${json.data.regularSchedules.nodes[i].regularMatchSetting.vsStages[0].name}\n${json.data.regularSchedules.nodes[i].regularMatchSetting.vsStages[1].name}`,
inline: true
},
{
name: `<:ranked:814651402479468544> Anarchy Series: ${json.data.bankaraSchedules.nodes[i].bankaraMatchSettings[0].vsRule.name}`,
value: `${json.data.bankaraSchedules.nodes[i].bankaraMatchSettings[0].vsStages[0].name}\n${json.data.bankaraSchedules.nodes[i].bankaraMatchSettings[0].vsStages[1].name}`,
inline: true
},
{
name: `<:ranked:814651402479468544> Anarchy Open: ${json.data.bankaraSchedules.nodes[i].bankaraMatchSettings[1].vsRule.name}`,
value: `${json.data.bankaraSchedules.nodes[i].bankaraMatchSettings[1].vsStages[0].name}\n${json.data.bankaraSchedules.nodes[i].bankaraMatchSettings[1].vsStages[1].name}`,
inline: true
},
{
name: `X rank: ${json.data.xSchedules.nodes[i].xMatchSetting.vsRule.name}`,
value: `${json.data.xSchedules.nodes[i].xMatchSetting.vsStages[0].name}\n${json.data.xSchedules.nodes[i].xMatchSetting.vsStages[1].name}`,
inline: true
}
)
.setFooter({ text: `Starting in ${prettifyMiliseconds(new Date(json.data.xSchedules.nodes[i].startTime).getTime() - Date.now(), { secondsDecimalDigits: 0 })} - Data provided by splatoon3.ink`})
);
}
await pagination({
embeds: embeds,
author: interaction.member.user,
interaction: interaction,
time: 60000,
disableButtons: false,
});
}
}
if (subCmd === 'gear') {
if (client.cache.has('SPLATNET_GEAR') && Date.now() > client.cache.get('SPLATNET_GEAR').expiry) {
client.cache.delete('SPLATNET_GEAR');
}
if (!client.cache.has('SPLATNET_GEAR')) {
fetch('https://splatoon3.ink/data/gear.json', { headers: { 'User-Agent': client.config.userAgent }})
.then(res => res.json())
.then(async json => {
client.cache.set('SPLATNET_GEAR', {data: json, expiry: new Date(json.data.gesotown.pickupBrand.brandGears[0].saleEndTime)});
for (let i = 0; i < json.data.gesotown.pickupBrand.brandGears.length; i++) {
embeds.push(new client.EmbedBuilder()
.setTitle(`${json.data.gesotown.pickupBrand.brandGears[i].gear.name} (${this.starPower(json.data.gesotown.pickupBrand.brandGears[i].gear.additionalGearPowers.length)})`)
.setDescription(`This piece of gear is apart of the ${json.data.gesotown.pickupBrand.brand.name} daily drop. The next drop will be for ${json.data.gesotown.pickupBrand.nextBrand.name}.`)
.setThumbnail(json.data.gesotown.pickupBrand.brandGears[i].gear.image.url)
.setColor(interaction.guild.members.me.displayColor)
.addFields(
{
name: 'Brand',
value: json.data.gesotown.pickupBrand.brandGears[i].gear.brand.name,
inline: true
},
{
name: 'Price',
value: `${json.data.gesotown.pickupBrand.brandGears[i].price}`,
inline: true,
},
{
name: 'Main Ability',
value: json.data.gesotown.pickupBrand.brandGears[i].gear.primaryGearPower.name,
inline: true
},
{
name: 'Common Ability',
value: brandAbilities[json.data.gesotown.pickupBrand.brandGears[i].gear.brand.name.trim()].common,
inline: true
},
{
name: 'Uncommon Ability',
value: brandAbilities[json.data.gesotown.pickupBrand.brandGears[i].gear.brand.name.trim()].uncommon,
inline: true
}
)
.setFooter({ text: `Off sale in ${prettifyMiliseconds(new Date(json.data.gesotown.pickupBrand.brandGears[i].saleEndTime).getTime() - Date.now(), { secondsDecimalDigits: 0 })} - Data provided by splatoon3.ink`})
);
}
await pagination({
embeds: embeds,
author: interaction.member.user,
interaction: interaction,
time: 60000,
disableButtons: false,
});
})
.catch(err => {
client.logger.error('SPLATNET_COMMAND_ERROR', `API err or err replying: ${err.stack}`);
return interaction.editReply(`${client.config.emojis.botError} An error occurred, sorry! I've reported this to my developers.`);
});
}
}
}
starPower (slots) {
if (slots === 1) return '0*';
if (slots === 2) return '1*';
if (slots === 3) return '2*';
return 'err';
}
};

View File

@ -44,7 +44,7 @@ module.exports = class Avatar extends Command {
.setTitle(member.user.username + '#' + member.user.discriminator)
.setColor(user.hexAccentColor ?? member.displayHexColor)
.setThumbnail(member.displayAvatarURL({extension: 'png', 'size': 4096}))
.addFields([
.addFields(
{
name: 'Display Name', value: member.nick || user.username, inline: true
},
@ -63,10 +63,10 @@ module.exports = class Avatar extends Command {
{
name: 'Joined Discord', value: time(user.createdAt, 'D') + time(user.createdAt, 'R'), inline: true
}
]);
);
if (badges.length > 0) {
embed.setDescription(badges.join(' '));
}
return await interaction.reply({embeds: [embed]});
return interaction.reply({embeds: [embed]});
}
};

View File

@ -64,7 +64,7 @@ module.exports = class Weather extends Command {
.setTitle('Current conditions in ' + city.toProperCase() + ', ' + ISO2.code[json.sys.country])
.setThumbnail(`https://openweathermap.org/img/wn/${json.weather[0].icon}@4x.png`)
.setColor(embedColor)
.addFields([
.addFields(
{ name: 'Condition:', value: json.weather[0].main, inline: true },
{ name: 'Temperature:', value: `${tempCelsius}°C ・ ${Math.round(json.main.temp * 9/5 - 459.67)}°F`, inline: true },
{ name: 'Min/Max:', value:`
@ -74,7 +74,7 @@ module.exports = class Weather extends Command {
{ name: 'Humidity:', value: `${json.main.humidity}%`, inline: true },
{ name: 'Wind Speed:', value: `${Math.round(json.wind.speed * 10) / 10}km/h ・ ${Math.round(json.wind.speed * 10 / 1.609344)}mi/h`, inline: true },
{ name: 'Wind Direction:', value: windrose.getPoint(json.wind.deg).name, inline: true}
])
)
.setFooter({ text: 'Powered by openweathermap.org'});
return interaction.reply({embeds: [embed]});

View File

@ -33,6 +33,9 @@ class WoomyClient extends Discord.Client {
this.aliases = new Discord.Collection();
this.eventModules = new Discord.Collection();
this.cooldowns = new Discord.Collection();
// Cache we can store stuff in
this.cache = new Discord.Collection();
}
// Listen for Discord events and pass needed information to the event handler so we can respond to them.

169
package-lock.json generated
View File

@ -9,12 +9,13 @@
"version": "2.0.0",
"license": "AGPL-3.0",
"dependencies": {
"@sentry/node": "^7.23.0",
"@devraelfreeze/discordjs-pagination": "^2.6.8",
"@sentry/node": "^7.28.1",
"bufferutil": "^4.0.3",
"chalk": "^4.1.2",
"discord.js": "^14.7.1",
"erlpack": "^0.1.3",
"eslint": "^8.29.0",
"eslint": "^8.30.0",
"fs-readdir-recursive": "^1.1.0",
"moment": "^2.29.4",
"moment-duration-format": "^2.3.2",
@ -27,6 +28,14 @@
"zlib-sync": "^0.1.7"
}
},
"node_modules/@devraelfreeze/discordjs-pagination": {
"version": "2.6.8",
"resolved": "https://registry.npmjs.org/@devraelfreeze/discordjs-pagination/-/discordjs-pagination-2.6.8.tgz",
"integrity": "sha512-qcVyCZ2svyqbFm4EPVeRk89TDcHHD6hLYbMv0gNob+OcM1Pjcr/GTVd2tyynoU3bZDNnhEfekIHVugORxKqFjg==",
"dependencies": {
"discord.js": "^14.2.0"
}
},
"node_modules/@discordjs/builders": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.4.0.tgz",
@ -88,14 +97,14 @@
}
},
"node_modules/@eslint/eslintrc": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz",
"integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==",
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.0.tgz",
"integrity": "sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A==",
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
"espree": "^9.4.0",
"globals": "^13.15.0",
"globals": "^13.19.0",
"ignore": "^5.2.0",
"import-fresh": "^3.2.1",
"js-yaml": "^4.1.0",
@ -110,9 +119,9 @@
}
},
"node_modules/@humanwhocodes/config-array": {
"version": "0.11.7",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz",
"integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==",
"version": "0.11.8",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
"integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==",
"dependencies": {
"@humanwhocodes/object-schema": "^1.2.1",
"debug": "^4.1.1",
@ -203,12 +212,12 @@
}
},
"node_modules/@sentry/core": {
"version": "7.23.0",
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.23.0.tgz",
"integrity": "sha512-oNLGsscSdMs1urCbpwe868NsoJWyeTOQXOm5w2e78yE7G6zm2Ra473NQio3lweaEvjQgSGpFyEfAn/3ubZbtPw==",
"version": "7.28.1",
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.28.1.tgz",
"integrity": "sha512-7wvnuvn/mrAfcugWoCG/3pqDIrUgH5t+HisMJMGw0h9Tc33KqrmqMDCQVvjlrr2pWrw/vuUCFdm8CbUHJ832oQ==",
"dependencies": {
"@sentry/types": "7.23.0",
"@sentry/utils": "7.23.0",
"@sentry/types": "7.28.1",
"@sentry/utils": "7.28.1",
"tslib": "^1.9.3"
},
"engines": {
@ -216,13 +225,13 @@
}
},
"node_modules/@sentry/node": {
"version": "7.23.0",
"resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.23.0.tgz",
"integrity": "sha512-w6J+5YRsQEn55508yQYT43ahMP5IHruxq8XnFqYMFZvRohVxrZ1qTz7AMoSgc8fDcHr+LKhs1PxJIqqNwkWrFA==",
"version": "7.28.1",
"resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.28.1.tgz",
"integrity": "sha512-n7AbpJqZJjWPpKNGc55mP7AdQ+XSomS9MZJuZ+Xt2AU52aVwGPI4z9aHUJFSDGaMHHiu/toyPnoUES+XZf6/hw==",
"dependencies": {
"@sentry/core": "7.23.0",
"@sentry/types": "7.23.0",
"@sentry/utils": "7.23.0",
"@sentry/core": "7.28.1",
"@sentry/types": "7.28.1",
"@sentry/utils": "7.28.1",
"cookie": "^0.4.1",
"https-proxy-agent": "^5.0.0",
"lru_map": "^0.3.3",
@ -233,19 +242,19 @@
}
},
"node_modules/@sentry/types": {
"version": "7.23.0",
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.23.0.tgz",
"integrity": "sha512-fZ5XfVRswVZhKoCutQ27UpIHP16tvyc6ws+xq+njHv8Jg8gFBCoOxlJxuFhegD2xxylAn1aiSHNAErFWdajbpA==",
"version": "7.28.1",
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.28.1.tgz",
"integrity": "sha512-DvSplMVrVEmOzR2M161V5+B8Up3vR71xMqJOpWTzE9TqtFJRGPtqT/5OBsNJJw1+/j2ssMcnKwbEo9Q2EGeS6g==",
"engines": {
"node": ">=8"
}
},
"node_modules/@sentry/utils": {
"version": "7.23.0",
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.23.0.tgz",
"integrity": "sha512-ad/XXH03MfgDH/7N7FjKEOVaKrfQWdMaE0nCxZCr2RrvlitlmGQmPpms95epr1CpzSU3BDRImlILx6+TlrXOgg==",
"version": "7.28.1",
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.28.1.tgz",
"integrity": "sha512-75/jzLUO9HH09iC9TslNimGbxOP3jgn89P+q7uR+rp2fJfRExHVeKJZQdK0Ij4/SmE7TJ3Uh2r154N0INZEx1g==",
"dependencies": {
"@sentry/types": "7.23.0",
"@sentry/types": "7.28.1",
"tslib": "^1.9.3"
},
"engines": {
@ -546,12 +555,12 @@
}
},
"node_modules/eslint": {
"version": "8.29.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.29.0.tgz",
"integrity": "sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==",
"version": "8.30.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.30.0.tgz",
"integrity": "sha512-MGADB39QqYuzEGov+F/qb18r4i7DohCDOfatHaxI2iGlPuC65bwG2gxgO+7DkyL38dRFaRH7RaRAgU6JKL9rMQ==",
"dependencies": {
"@eslint/eslintrc": "^1.3.3",
"@humanwhocodes/config-array": "^0.11.6",
"@eslint/eslintrc": "^1.4.0",
"@humanwhocodes/config-array": "^0.11.8",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
"ajv": "^6.10.0",
@ -570,7 +579,7 @@
"file-entry-cache": "^6.0.1",
"find-up": "^5.0.0",
"glob-parent": "^6.0.2",
"globals": "^13.15.0",
"globals": "^13.19.0",
"grapheme-splitter": "^1.0.4",
"ignore": "^5.2.0",
"import-fresh": "^3.0.0",
@ -827,9 +836,9 @@
}
},
"node_modules/globals": {
"version": "13.18.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz",
"integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==",
"version": "13.19.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz",
"integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==",
"dependencies": {
"type-fest": "^0.20.2"
},
@ -885,9 +894,9 @@
]
},
"node_modules/ignore": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
"integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
"version": "5.2.4",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
"integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
"engines": {
"node": ">= 4"
}
@ -1772,6 +1781,14 @@
}
},
"dependencies": {
"@devraelfreeze/discordjs-pagination": {
"version": "2.6.8",
"resolved": "https://registry.npmjs.org/@devraelfreeze/discordjs-pagination/-/discordjs-pagination-2.6.8.tgz",
"integrity": "sha512-qcVyCZ2svyqbFm4EPVeRk89TDcHHD6hLYbMv0gNob+OcM1Pjcr/GTVd2tyynoU3bZDNnhEfekIHVugORxKqFjg==",
"requires": {
"discord.js": "^14.2.0"
}
},
"@discordjs/builders": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.4.0.tgz",
@ -1825,14 +1842,14 @@
"integrity": "sha512-e7d+PaTLVQav6rOc2tojh2y6FE8S7REkqLldq1XF4soCx74XB/DIjbVbVLtBemf0nLW77ntz0v+o5DytKwFNLQ=="
},
"@eslint/eslintrc": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz",
"integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==",
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.0.tgz",
"integrity": "sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A==",
"requires": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
"espree": "^9.4.0",
"globals": "^13.15.0",
"globals": "^13.19.0",
"ignore": "^5.2.0",
"import-fresh": "^3.2.1",
"js-yaml": "^4.1.0",
@ -1841,9 +1858,9 @@
}
},
"@humanwhocodes/config-array": {
"version": "0.11.7",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz",
"integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==",
"version": "0.11.8",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
"integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==",
"requires": {
"@humanwhocodes/object-schema": "^1.2.1",
"debug": "^4.1.1",
@ -1903,23 +1920,23 @@
"integrity": "sha512-Hec5N6zEkZuZFLybVKyLFLlcSgYmR6C1/+9NkIhxPwOf6tgX52ndJCSz8ADejmbrNE0VuNCNkpzhRZzenEC9vA=="
},
"@sentry/core": {
"version": "7.23.0",
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.23.0.tgz",
"integrity": "sha512-oNLGsscSdMs1urCbpwe868NsoJWyeTOQXOm5w2e78yE7G6zm2Ra473NQio3lweaEvjQgSGpFyEfAn/3ubZbtPw==",
"version": "7.28.1",
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.28.1.tgz",
"integrity": "sha512-7wvnuvn/mrAfcugWoCG/3pqDIrUgH5t+HisMJMGw0h9Tc33KqrmqMDCQVvjlrr2pWrw/vuUCFdm8CbUHJ832oQ==",
"requires": {
"@sentry/types": "7.23.0",
"@sentry/utils": "7.23.0",
"@sentry/types": "7.28.1",
"@sentry/utils": "7.28.1",
"tslib": "^1.9.3"
}
},
"@sentry/node": {
"version": "7.23.0",
"resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.23.0.tgz",
"integrity": "sha512-w6J+5YRsQEn55508yQYT43ahMP5IHruxq8XnFqYMFZvRohVxrZ1qTz7AMoSgc8fDcHr+LKhs1PxJIqqNwkWrFA==",
"version": "7.28.1",
"resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.28.1.tgz",
"integrity": "sha512-n7AbpJqZJjWPpKNGc55mP7AdQ+XSomS9MZJuZ+Xt2AU52aVwGPI4z9aHUJFSDGaMHHiu/toyPnoUES+XZf6/hw==",
"requires": {
"@sentry/core": "7.23.0",
"@sentry/types": "7.23.0",
"@sentry/utils": "7.23.0",
"@sentry/core": "7.28.1",
"@sentry/types": "7.28.1",
"@sentry/utils": "7.28.1",
"cookie": "^0.4.1",
"https-proxy-agent": "^5.0.0",
"lru_map": "^0.3.3",
@ -1927,16 +1944,16 @@
}
},
"@sentry/types": {
"version": "7.23.0",
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.23.0.tgz",
"integrity": "sha512-fZ5XfVRswVZhKoCutQ27UpIHP16tvyc6ws+xq+njHv8Jg8gFBCoOxlJxuFhegD2xxylAn1aiSHNAErFWdajbpA=="
"version": "7.28.1",
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.28.1.tgz",
"integrity": "sha512-DvSplMVrVEmOzR2M161V5+B8Up3vR71xMqJOpWTzE9TqtFJRGPtqT/5OBsNJJw1+/j2ssMcnKwbEo9Q2EGeS6g=="
},
"@sentry/utils": {
"version": "7.23.0",
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.23.0.tgz",
"integrity": "sha512-ad/XXH03MfgDH/7N7FjKEOVaKrfQWdMaE0nCxZCr2RrvlitlmGQmPpms95epr1CpzSU3BDRImlILx6+TlrXOgg==",
"version": "7.28.1",
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.28.1.tgz",
"integrity": "sha512-75/jzLUO9HH09iC9TslNimGbxOP3jgn89P+q7uR+rp2fJfRExHVeKJZQdK0Ij4/SmE7TJ3Uh2r154N0INZEx1g==",
"requires": {
"@sentry/types": "7.23.0",
"@sentry/types": "7.28.1",
"tslib": "^1.9.3"
}
},
@ -2163,12 +2180,12 @@
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
},
"eslint": {
"version": "8.29.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.29.0.tgz",
"integrity": "sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==",
"version": "8.30.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.30.0.tgz",
"integrity": "sha512-MGADB39QqYuzEGov+F/qb18r4i7DohCDOfatHaxI2iGlPuC65bwG2gxgO+7DkyL38dRFaRH7RaRAgU6JKL9rMQ==",
"requires": {
"@eslint/eslintrc": "^1.3.3",
"@humanwhocodes/config-array": "^0.11.6",
"@eslint/eslintrc": "^1.4.0",
"@humanwhocodes/config-array": "^0.11.8",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
"ajv": "^6.10.0",
@ -2187,7 +2204,7 @@
"file-entry-cache": "^6.0.1",
"find-up": "^5.0.0",
"glob-parent": "^6.0.2",
"globals": "^13.15.0",
"globals": "^13.19.0",
"grapheme-splitter": "^1.0.4",
"ignore": "^5.2.0",
"import-fresh": "^3.0.0",
@ -2374,9 +2391,9 @@
}
},
"globals": {
"version": "13.18.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz",
"integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==",
"version": "13.19.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz",
"integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==",
"requires": {
"type-fest": "^0.20.2"
}
@ -2406,9 +2423,9 @@
"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=="
"version": "5.2.4",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
"integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ=="
},
"import-fresh": {
"version": "3.3.0",

View File

@ -4,12 +4,13 @@
"description": "Made with <3 by mudkipscience",
"main": "index.js",
"dependencies": {
"@sentry/node": "^7.23.0",
"@devraelfreeze/discordjs-pagination": "^2.6.8",
"@sentry/node": "^7.28.1",
"bufferutil": "^4.0.3",
"chalk": "^4.1.2",
"discord.js": "^14.7.1",
"erlpack": "^0.1.3",
"eslint": "^8.29.0",
"eslint": "^8.30.0",
"fs-readdir-recursive": "^1.1.0",
"moment": "^2.29.4",
"moment-duration-format": "^2.3.2",