From 0eb76aac2bac30f982ca0b696696ddde3119e44c Mon Sep 17 00:00:00 2001 From: mudkipscience Date: Mon, 26 Dec 2022 16:31:54 +1100 Subject: [PATCH] 1/3 WIP splatnet --- bot/commands/Utility/splatnet.js | 182 +++++++++++++++++++++++++++++++ package-lock.json | 169 +++++++++++++++------------- package.json | 5 +- 3 files changed, 278 insertions(+), 78 deletions(-) create mode 100644 bot/commands/Utility/splatnet.js diff --git a/bot/commands/Utility/splatnet.js b/bot/commands/Utility/splatnet.js new file mode 100644 index 0000000..3aef77e --- /dev/null +++ b/bot/commands/Utility/splatnet.js @@ -0,0 +1,182 @@ +const Command = require('../../base/Command.js'); +const fetch = require('node-fetch'); +const { pagination } = require('@devraelfreeze/discordjs-pagination'); +const prettifyMiliseconds = require('pretty-ms'); + +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: 'sr', + 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`}) + ); + } + interaction.editReply({embeds: [embeds[0]]}); + } + + } + } +}; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 97eff8c..ce94af1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -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", diff --git a/package.json b/package.json index d31c8da..03766f6 100644 --- a/package.json +++ b/package.json @@ -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",