diff --git a/package.json b/package.json index 84713617..98216da0 100644 --- a/package.json +++ b/package.json @@ -25,22 +25,22 @@ "lyrics-finder": "^21.7.0", "opusscript": "^0.1.1", "play-dl": "^1.9.7", - "sodium-native": "^4.0.10", + "sodium-native": "^4.1.1", "spotify-url-info": "^3.2.13", "string-progressbar": "^1.0.4", - "undici": "^6.6.2", + "undici": "^6.15.0", "utf-8-validate": "^6.0.3", - "youtube-sr": "^4.3.10" + "youtube-sr": "^4.3.11" }, "devDependencies": { "@rollup/plugin-typescript": "^11.1.6", - "@types/node": "^20.10.4", - "esbuild": "^0.20.1", - "rollup": "^4.12.0", + "@types/node": "^20.12.7", + "esbuild": "^0.20.2", + "rollup": "^4.17.1", "rollup-plugin-esbuild": "^6.1.1", "rollup-plugin-typescript-paths": "^1.5.0", "tslib": "^2.6.2", - "typescript": "^5.3.3" + "typescript": "^5.4.5" }, "scripts": { "start": "node ./dist/bundle.js", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b2c96805..97d141ac 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,393 +1,265 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -dependencies: - '@discordjs/voice': - specifier: ^0.16.1 - version: 0.16.1(bufferutil@4.0.8)(ffmpeg-static@5.2.0)(opusscript@0.1.1)(utf-8-validate@6.0.3) - array-move: - specifier: ^3.0.1 - version: 3.0.1 - bufferutil: - specifier: ^4.0.8 - version: 4.0.8 - chalk: - specifier: ^4.1.2 - version: 4.1.2 - discord.js: - specifier: ^14.14.1 - version: 14.14.1(bufferutil@4.0.8)(utf-8-validate@6.0.3) - ffmpeg-static: - specifier: ^5.2.0 - version: 5.2.0 - lyrics-finder: - specifier: ^21.7.0 - version: 21.7.0 - opusscript: - specifier: ^0.1.1 - version: 0.1.1 - play-dl: - specifier: ^1.9.7 - version: 1.9.7 - sodium-native: - specifier: ^4.0.10 - version: 4.0.10 - spotify-url-info: - specifier: ^3.2.13 - version: 3.2.13 - string-progressbar: - specifier: ^1.0.4 - version: 1.0.4 - undici: - specifier: ^6.6.2 - version: 6.6.2 - utf-8-validate: - specifier: ^6.0.3 - version: 6.0.3 - youtube-sr: - specifier: ^4.3.10 - version: 4.3.10 - -devDependencies: - '@rollup/plugin-typescript': - specifier: ^11.1.6 - version: 11.1.6(rollup@4.12.0)(tslib@2.6.2)(typescript@5.3.3) - '@types/node': - specifier: ^20.10.4 - version: 20.11.20 - esbuild: - specifier: ^0.20.1 - version: 0.20.1 - rollup: - specifier: ^4.12.0 - version: 4.12.0 - rollup-plugin-esbuild: - specifier: ^6.1.1 - version: 6.1.1(esbuild@0.20.1)(rollup@4.12.0) - rollup-plugin-typescript-paths: - specifier: ^1.5.0 - version: 1.5.0(typescript@5.3.3) - tslib: - specifier: ^2.6.2 - version: 2.6.2 - typescript: - specifier: ^5.3.3 - version: 5.3.3 +importers: + + .: + dependencies: + '@discordjs/voice': + specifier: ^0.16.1 + version: 0.16.1(bufferutil@4.0.8)(ffmpeg-static@5.2.0)(opusscript@0.1.1)(utf-8-validate@6.0.3) + array-move: + specifier: ^3.0.1 + version: 3.0.1 + bufferutil: + specifier: ^4.0.8 + version: 4.0.8 + chalk: + specifier: ^4.1.2 + version: 4.1.2 + discord.js: + specifier: ^14.14.1 + version: 14.14.1(bufferutil@4.0.8)(utf-8-validate@6.0.3) + ffmpeg-static: + specifier: ^5.2.0 + version: 5.2.0 + lyrics-finder: + specifier: ^21.7.0 + version: 21.7.0 + opusscript: + specifier: ^0.1.1 + version: 0.1.1 + play-dl: + specifier: ^1.9.7 + version: 1.9.7 + sodium-native: + specifier: ^4.1.1 + version: 4.1.1 + spotify-url-info: + specifier: ^3.2.13 + version: 3.2.13 + string-progressbar: + specifier: ^1.0.4 + version: 1.0.4 + undici: + specifier: ^6.15.0 + version: 6.15.0 + utf-8-validate: + specifier: ^6.0.3 + version: 6.0.3 + youtube-sr: + specifier: ^4.3.11 + version: 4.3.11 + devDependencies: + '@rollup/plugin-typescript': + specifier: ^11.1.6 + version: 11.1.6(rollup@4.17.1)(tslib@2.6.2)(typescript@5.4.5) + '@types/node': + specifier: ^20.12.7 + version: 20.12.7 + esbuild: + specifier: ^0.20.2 + version: 0.20.2 + rollup: + specifier: ^4.17.1 + version: 4.17.1 + rollup-plugin-esbuild: + specifier: ^6.1.1 + version: 6.1.1(esbuild@0.20.2)(rollup@4.17.1) + rollup-plugin-typescript-paths: + specifier: ^1.5.0 + version: 1.5.0(typescript@5.4.5) + tslib: + specifier: ^2.6.2 + version: 2.6.2 + typescript: + specifier: ^5.4.5 + version: 5.4.5 packages: - /@derhuerst/http-basic@8.2.4: + '@derhuerst/http-basic@8.2.4': resolution: {integrity: sha512-F9rL9k9Xjf5blCz8HsJRO4diy111cayL2vkY2XE4r4t3n0yPXVYy3KD3nJ1qbrSn9743UWSXH4IwuCa/HWlGFw==} engines: {node: '>=6.0.0'} - dependencies: - caseless: 0.12.0 - concat-stream: 2.0.0 - http-response-object: 3.0.2 - parse-cache-control: 1.0.1 - dev: false - /@discordjs/builders@1.7.0: + '@discordjs/builders@1.7.0': resolution: {integrity: sha512-GDtbKMkg433cOZur8Dv6c25EHxduNIBsxeHrsRoIM8+AwmEZ8r0tEpckx/sHwTLwQPOF3e2JWloZh9ofCaMfAw==} engines: {node: '>=16.11.0'} - dependencies: - '@discordjs/formatters': 0.3.3 - '@discordjs/util': 1.0.2 - '@sapphire/shapeshift': 3.9.6 - discord-api-types: 0.37.61 - fast-deep-equal: 3.1.3 - ts-mixer: 6.0.4 - tslib: 2.6.2 - dev: false - /@discordjs/collection@1.5.3: + '@discordjs/collection@1.5.3': resolution: {integrity: sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==} engines: {node: '>=16.11.0'} - dev: false - /@discordjs/collection@2.0.0: + '@discordjs/collection@2.0.0': resolution: {integrity: sha512-YTWIXLrf5FsrLMycpMM9Q6vnZoR/lN2AWX23/Cuo8uOOtS8eHB2dyQaaGnaF8aZPYnttf2bkLMcXn/j6JUOi3w==} engines: {node: '>=18'} - dev: false - /@discordjs/formatters@0.3.3: + '@discordjs/formatters@0.3.3': resolution: {integrity: sha512-wTcI1Q5cps1eSGhl6+6AzzZkBBlVrBdc9IUhJbijRgVjCNIIIZPgqnUj3ntFODsHrdbGU8BEG9XmDQmgEEYn3w==} engines: {node: '>=16.11.0'} - dependencies: - discord-api-types: 0.37.61 - dev: false - /@discordjs/rest@2.2.0: + '@discordjs/rest@2.2.0': resolution: {integrity: sha512-nXm9wT8oqrYFRMEqTXQx9DUTeEtXUDMmnUKIhZn6O2EeDY9VCdwj23XCPq7fkqMPKdF7ldAfeVKyxxFdbZl59A==} engines: {node: '>=16.11.0'} - dependencies: - '@discordjs/collection': 2.0.0 - '@discordjs/util': 1.0.2 - '@sapphire/async-queue': 1.5.2 - '@sapphire/snowflake': 3.5.3 - '@vladfrangu/async_event_emitter': 2.2.4 - discord-api-types: 0.37.61 - magic-bytes.js: 1.8.0 - tslib: 2.6.2 - undici: 5.27.2 - dev: false - /@discordjs/util@1.0.2: + '@discordjs/util@1.0.2': resolution: {integrity: sha512-IRNbimrmfb75GMNEjyznqM1tkI7HrZOf14njX7tCAAUetyZM1Pr8hX/EK2lxBCOgWDRmigbp24fD1hdMfQK5lw==} engines: {node: '>=16.11.0'} - dev: false - /@discordjs/voice@0.16.1(bufferutil@4.0.8)(ffmpeg-static@5.2.0)(opusscript@0.1.1)(utf-8-validate@6.0.3): + '@discordjs/voice@0.16.1': resolution: {integrity: sha512-uiWiW0Ta6K473yf8zs13RfKuPqm/xU4m4dAidMkIdwqgy1CztbbZBtPLfDkVSKzpW7s6m072C+uQcs4LwF3FhA==} engines: {node: '>=16.11.0'} - dependencies: - '@types/ws': 8.5.10 - discord-api-types: 0.37.61 - prism-media: 1.3.5(ffmpeg-static@5.2.0)(opusscript@0.1.1) - tslib: 2.6.2 - ws: 8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) - transitivePeerDependencies: - - '@discordjs/opus' - - bufferutil - - ffmpeg-static - - node-opus - - opusscript - - utf-8-validate - dev: false - /@discordjs/ws@1.0.2(bufferutil@4.0.8)(utf-8-validate@6.0.3): + '@discordjs/ws@1.0.2': resolution: {integrity: sha512-+XI82Rm2hKnFwAySXEep4A7Kfoowt6weO6381jgW+wVdTpMS/56qCvoXyFRY0slcv7c/U8My2PwIB2/wEaAh7Q==} engines: {node: '>=16.11.0'} - dependencies: - '@discordjs/collection': 2.0.0 - '@discordjs/rest': 2.2.0 - '@discordjs/util': 1.0.2 - '@sapphire/async-queue': 1.5.2 - '@types/ws': 8.5.10 - '@vladfrangu/async_event_emitter': 2.2.4 - discord-api-types: 0.37.61 - tslib: 2.6.2 - ws: 8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - /@esbuild/aix-ppc64@0.20.1: - resolution: {integrity: sha512-m55cpeupQ2DbuRGQMMZDzbv9J9PgVelPjlcmM5kxHnrBdBx6REaEd7LamYV7Dm8N7rCyR/XwU6rVP8ploKtIkA==} + '@esbuild/aix-ppc64@0.20.2': + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm64@0.20.1: - resolution: {integrity: sha512-hCnXNF0HM6AjowP+Zou0ZJMWWa1VkD77BXe959zERgGJBBxB+sV+J9f/rcjeg2c5bsukD/n17RKWXGFCO5dD5A==} + '@esbuild/android-arm64@0.20.2': + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} engines: {node: '>=12'} cpu: [arm64] os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm@0.20.1: - resolution: {integrity: sha512-4j0+G27/2ZXGWR5okcJi7pQYhmkVgb4D7UKwxcqrjhvp5TKWx3cUjgB1CGj1mfdmJBQ9VnUGgUhign+FPF2Zgw==} + '@esbuild/android-arm@0.20.2': + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} engines: {node: '>=12'} cpu: [arm] os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-x64@0.20.1: - resolution: {integrity: sha512-MSfZMBoAsnhpS+2yMFYIQUPs8Z19ajwfuaSZx+tSl09xrHZCjbeXXMsUF/0oq7ojxYEpsSo4c0SfjxOYXRbpaA==} + '@esbuild/android-x64@0.20.2': + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} engines: {node: '>=12'} cpu: [x64] os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-arm64@0.20.1: - resolution: {integrity: sha512-Ylk6rzgMD8klUklGPzS414UQLa5NPXZD5tf8JmQU8GQrj6BrFA/Ic9tb2zRe1kOZyCbGl+e8VMbDRazCEBqPvA==} + '@esbuild/darwin-arm64@0.20.2': + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-x64@0.20.1: - resolution: {integrity: sha512-pFIfj7U2w5sMp52wTY1XVOdoxw+GDwy9FsK3OFz4BpMAjvZVs0dT1VXs8aQm22nhwoIWUmIRaE+4xow8xfIDZA==} + '@esbuild/darwin-x64@0.20.2': + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-arm64@0.20.1: - resolution: {integrity: sha512-UyW1WZvHDuM4xDz0jWun4qtQFauNdXjXOtIy7SYdf7pbxSWWVlqhnR/T2TpX6LX5NI62spt0a3ldIIEkPM6RHw==} + '@esbuild/freebsd-arm64@0.20.2': + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-x64@0.20.1: - resolution: {integrity: sha512-itPwCw5C+Jh/c624vcDd9kRCCZVpzpQn8dtwoYIt2TJF3S9xJLiRohnnNrKwREvcZYx0n8sCSbvGH349XkcQeg==} + '@esbuild/freebsd-x64@0.20.2': + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm64@0.20.1: - resolution: {integrity: sha512-cX8WdlF6Cnvw/DO9/X7XLH2J6CkBnz7Twjpk56cshk9sjYVcuh4sXQBy5bmTwzBjNVZze2yaV1vtcJS04LbN8w==} + '@esbuild/linux-arm64@0.20.2': + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm@0.20.1: - resolution: {integrity: sha512-LojC28v3+IhIbfQ+Vu4Ut5n3wKcgTu6POKIHN9Wpt0HnfgUGlBuyDDQR4jWZUZFyYLiz4RBBBmfU6sNfn6RhLw==} + '@esbuild/linux-arm@0.20.2': + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} engines: {node: '>=12'} cpu: [arm] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ia32@0.20.1: - resolution: {integrity: sha512-4H/sQCy1mnnGkUt/xszaLlYJVTz3W9ep52xEefGtd6yXDQbz/5fZE5dFLUgsPdbUOQANcVUa5iO6g3nyy5BJiw==} + '@esbuild/linux-ia32@0.20.2': + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} engines: {node: '>=12'} cpu: [ia32] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-loong64@0.20.1: - resolution: {integrity: sha512-c0jgtB+sRHCciVXlyjDcWb2FUuzlGVRwGXgI+3WqKOIuoo8AmZAddzeOHeYLtD+dmtHw3B4Xo9wAUdjlfW5yYA==} + '@esbuild/linux-loong64@0.20.2': + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-mips64el@0.20.1: - resolution: {integrity: sha512-TgFyCfIxSujyuqdZKDZ3yTwWiGv+KnlOeXXitCQ+trDODJ+ZtGOzLkSWngynP0HZnTsDyBbPy7GWVXWaEl6lhA==} + '@esbuild/linux-mips64el@0.20.2': + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ppc64@0.20.1: - resolution: {integrity: sha512-b+yuD1IUeL+Y93PmFZDZFIElwbmFfIKLKlYI8M6tRyzE6u7oEP7onGk0vZRh8wfVGC2dZoy0EqX1V8qok4qHaw==} + '@esbuild/linux-ppc64@0.20.2': + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-riscv64@0.20.1: - resolution: {integrity: sha512-wpDlpE0oRKZwX+GfomcALcouqjjV8MIX8DyTrxfyCfXxoKQSDm45CZr9fanJ4F6ckD4yDEPT98SrjvLwIqUCgg==} + '@esbuild/linux-riscv64@0.20.2': + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-s390x@0.20.1: - resolution: {integrity: sha512-5BepC2Au80EohQ2dBpyTquqGCES7++p7G+7lXe1bAIvMdXm4YYcEfZtQrP4gaoZ96Wv1Ute61CEHFU7h4FMueQ==} + '@esbuild/linux-s390x@0.20.2': + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-x64@0.20.1: - resolution: {integrity: sha512-5gRPk7pKuaIB+tmH+yKd2aQTRpqlf1E4f/mC+tawIm/CGJemZcHZpp2ic8oD83nKgUPMEd0fNanrnFljiruuyA==} + '@esbuild/linux-x64@0.20.2': + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} engines: {node: '>=12'} cpu: [x64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/netbsd-x64@0.20.1: - resolution: {integrity: sha512-4fL68JdrLV2nVW2AaWZBv3XEm3Ae3NZn/7qy2KGAt3dexAgSVT+Hc97JKSZnqezgMlv9x6KV0ZkZY7UO5cNLCg==} + '@esbuild/netbsd-x64@0.20.2': + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/openbsd-x64@0.20.1: - resolution: {integrity: sha512-GhRuXlvRE+twf2ES+8REbeCb/zeikNqwD3+6S5y5/x+DYbAQUNl0HNBs4RQJqrechS4v4MruEr8ZtAin/hK5iw==} + '@esbuild/openbsd-x64@0.20.2': + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/sunos-x64@0.20.1: - resolution: {integrity: sha512-ZnWEyCM0G1Ex6JtsygvC3KUUrlDXqOihw8RicRuQAzw+c4f1D66YlPNNV3rkjVW90zXVsHwZYWbJh3v+oQFM9Q==} + '@esbuild/sunos-x64@0.20.2': + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} engines: {node: '>=12'} cpu: [x64] os: [sunos] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-arm64@0.20.1: - resolution: {integrity: sha512-QZ6gXue0vVQY2Oon9WyLFCdSuYbXSoxaZrPuJ4c20j6ICedfsDilNPYfHLlMH7vGfU5DQR0czHLmJvH4Nzis/A==} + '@esbuild/win32-arm64@0.20.2': + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-ia32@0.20.1: - resolution: {integrity: sha512-HzcJa1NcSWTAU0MJIxOho8JftNp9YALui3o+Ny7hCh0v5f90nprly1U3Sj1Ldj/CvKKdvvFsCRvDkpsEMp4DNw==} + '@esbuild/win32-ia32@0.20.2': + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-x64@0.20.1: - resolution: {integrity: sha512-0MBh53o6XtI6ctDnRMeQ+xoCN8kD2qI1rY1KgF/xdWQwoFeKou7puvDfV8/Wv4Ctx2rRpET/gGdz3YlNtNACSA==} + '@esbuild/win32-x64@0.20.2': + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@fastify/busboy@2.1.0: + '@fastify/busboy@2.1.0': resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} engines: {node: '>=14'} - dev: false - /@rollup/plugin-typescript@11.1.6(rollup@4.12.0)(tslib@2.6.2)(typescript@5.3.3): + '@rollup/plugin-typescript@11.1.6': resolution: {integrity: sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -399,15 +271,8 @@ packages: optional: true tslib: optional: true - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.12.0) - resolve: 1.22.8 - rollup: 4.12.0 - tslib: 2.6.2 - typescript: 5.3.3 - dev: true - /@rollup/pluginutils@5.1.0(rollup@4.12.0): + '@rollup/pluginutils@5.1.0': resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -415,237 +280,160 @@ packages: peerDependenciesMeta: rollup: optional: true - dependencies: - '@types/estree': 1.0.5 - estree-walker: 2.0.2 - picomatch: 2.3.1 - rollup: 4.12.0 - dev: true - /@rollup/rollup-android-arm-eabi@4.12.0: - resolution: {integrity: sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==} + '@rollup/rollup-android-arm-eabi@4.17.1': + resolution: {integrity: sha512-P6Wg856Ou/DLpR+O0ZLneNmrv7QpqBg+hK4wE05ijbC/t349BRfMfx+UFj5Ha3fCFopIa6iSZlpdaB4agkWp2Q==} cpu: [arm] os: [android] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-android-arm64@4.12.0: - resolution: {integrity: sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==} + '@rollup/rollup-android-arm64@4.17.1': + resolution: {integrity: sha512-piwZDjuW2WiHr05djVdUkrG5JbjnGbtx8BXQchYCMfib/nhjzWoiScelZ+s5IJI7lecrwSxHCzW026MWBL+oJQ==} cpu: [arm64] os: [android] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-darwin-arm64@4.12.0: - resolution: {integrity: sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==} + '@rollup/rollup-darwin-arm64@4.17.1': + resolution: {integrity: sha512-LsZXXIsN5Q460cKDT4Y+bzoPDhBmO5DTr7wP80d+2EnYlxSgkwdPfE3hbE+Fk8dtya+8092N9srjBTJ0di8RIA==} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-darwin-x64@4.12.0: - resolution: {integrity: sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==} + '@rollup/rollup-darwin-x64@4.17.1': + resolution: {integrity: sha512-S7TYNQpWXB9APkxu/SLmYHezWwCoZRA9QLgrDeml+SR2A1LLPD2DBUdUlvmCF7FUpRMKvbeeWky+iizQj65Etw==} cpu: [x64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.12.0: - resolution: {integrity: sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==} + '@rollup/rollup-linux-arm-gnueabihf@4.17.1': + resolution: {integrity: sha512-Lq2JR5a5jsA5um2ZoLiXXEaOagnVyCpCW7xvlcqHC7y46tLwTEgUSTM3a2TfmmTMmdqv+jknUioWXlmxYxE9Yw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.17.1': + resolution: {integrity: sha512-9BfzwyPNV0IizQoR+5HTNBGkh1KXE8BqU0DBkqMngmyFW7BfuIZyMjQ0s6igJEiPSBvT3ZcnIFohZ19OqjhDPg==} cpu: [arm] os: [linux] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-linux-arm64-gnu@4.12.0: - resolution: {integrity: sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==} + '@rollup/rollup-linux-arm64-gnu@4.17.1': + resolution: {integrity: sha512-e2uWaoxo/rtzA52OifrTSXTvJhAXb0XeRkz4CdHBK2KtxrFmuU/uNd544Ogkpu938BzEfvmWs8NZ8Axhw33FDw==} cpu: [arm64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-linux-arm64-musl@4.12.0: - resolution: {integrity: sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==} + '@rollup/rollup-linux-arm64-musl@4.17.1': + resolution: {integrity: sha512-ekggix/Bc/d/60H1Mi4YeYb/7dbal1kEDZ6sIFVAE8pUSx7PiWeEh+NWbL7bGu0X68BBIkgF3ibRJe1oFTksQQ==} cpu: [arm64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-linux-riscv64-gnu@4.12.0: - resolution: {integrity: sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==} + '@rollup/rollup-linux-powerpc64le-gnu@4.17.1': + resolution: {integrity: sha512-UGV0dUo/xCv4pkr/C8KY7XLFwBNnvladt8q+VmdKrw/3RUd3rD0TptwjisvE2TTnnlENtuY4/PZuoOYRiGp8Gw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.17.1': + resolution: {integrity: sha512-gEYmYYHaehdvX46mwXrU49vD6Euf1Bxhq9pPb82cbUU9UT2NV+RSckQ5tKWOnNXZixKsy8/cPGtiUWqzPuAcXQ==} cpu: [riscv64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-linux-x64-gnu@4.12.0: - resolution: {integrity: sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==} + '@rollup/rollup-linux-s390x-gnu@4.17.1': + resolution: {integrity: sha512-xeae5pMAxHFp6yX5vajInG2toST5lsCTrckSRUFwNgzYqnUjNBcQyqk1bXUxX5yhjWFl2Mnz3F8vQjl+2FRIcw==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.17.1': + resolution: {integrity: sha512-AsdnINQoDWfKpBzCPqQWxSPdAWzSgnYbrJYtn6W0H2E9It5bZss99PiLA8CgmDRfvKygt20UpZ3xkhFlIfX9zQ==} cpu: [x64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-linux-x64-musl@4.12.0: - resolution: {integrity: sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==} + '@rollup/rollup-linux-x64-musl@4.17.1': + resolution: {integrity: sha512-KoB4fyKXTR+wYENkIG3fFF+5G6N4GFvzYx8Jax8BR4vmddtuqSb5oQmYu2Uu067vT/Fod7gxeQYKupm8gAcMSQ==} cpu: [x64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-win32-arm64-msvc@4.12.0: - resolution: {integrity: sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==} + '@rollup/rollup-win32-arm64-msvc@4.17.1': + resolution: {integrity: sha512-J0d3NVNf7wBL9t4blCNat+d0PYqAx8wOoY+/9Q5cujnafbX7BmtYk3XvzkqLmFECaWvXGLuHmKj/wrILUinmQg==} cpu: [arm64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-win32-ia32-msvc@4.12.0: - resolution: {integrity: sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==} + '@rollup/rollup-win32-ia32-msvc@4.17.1': + resolution: {integrity: sha512-xjgkWUwlq7IbgJSIxvl516FJ2iuC/7ttjsAxSPpC9kkI5iQQFHKyEN5BjbhvJ/IXIZ3yIBcW5QDlWAyrA+TFag==} cpu: [ia32] os: [win32] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-win32-x64-msvc@4.12.0: - resolution: {integrity: sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==} + '@rollup/rollup-win32-x64-msvc@4.17.1': + resolution: {integrity: sha512-0QbCkfk6cnnVKWqqlC0cUrrUMDMfu5ffvYMTUHf+qMN2uAb3MKP31LPcwiMXBNsvoFGs/kYdFOsuLmvppCopXA==} cpu: [x64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@sapphire/async-queue@1.5.2: + '@sapphire/async-queue@1.5.2': resolution: {integrity: sha512-7X7FFAA4DngXUl95+hYbUF19bp1LGiffjJtu7ygrZrbdCSsdDDBaSjB7Akw0ZbOu6k0xpXyljnJ6/RZUvLfRdg==} engines: {node: '>=v14.0.0', npm: '>=7.0.0'} - dev: false - /@sapphire/shapeshift@3.9.6: + '@sapphire/shapeshift@3.9.6': resolution: {integrity: sha512-4+Na/fxu2SEepZRb9z0dbsVh59QtwPuBg/UVaDib3av7ZY14b14+z09z6QVn0P6Dv6eOU2NDTsjIi0mbtgP56g==} engines: {node: '>=v18'} - dependencies: - fast-deep-equal: 3.1.3 - lodash: 4.17.21 - dev: false - /@sapphire/snowflake@3.5.1: + '@sapphire/snowflake@3.5.1': resolution: {integrity: sha512-BxcYGzgEsdlG0dKAyOm0ehLGm2CafIrfQTZGWgkfKYbj+pNNsorZ7EotuZukc2MT70E0UbppVbtpBrqpzVzjNA==} engines: {node: '>=v14.0.0', npm: '>=7.0.0'} - dev: false - /@sapphire/snowflake@3.5.3: + '@sapphire/snowflake@3.5.3': resolution: {integrity: sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ==} engines: {node: '>=v14.0.0', npm: '>=7.0.0'} - dev: false - /@types/estree@1.0.5: + '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - dev: true - /@types/node@10.17.60: + '@types/node@10.17.60': resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} - dev: false - /@types/node@20.11.20: - resolution: {integrity: sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg==} - dependencies: - undici-types: 5.26.5 + '@types/node@20.12.7': + resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} - /@types/ws@8.5.10: + '@types/ws@8.5.10': resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} - dependencies: - '@types/node': 20.11.20 - dev: false - /@types/ws@8.5.9: + '@types/ws@8.5.9': resolution: {integrity: sha512-jbdrY0a8lxfdTp/+r7Z4CkycbOFN8WX+IOchLJr3juT/xzbJ8URyTVSJ/hvNdadTgM1mnedb47n+Y31GsFnQlg==} - dependencies: - '@types/node': 20.11.20 - dev: false - /@vladfrangu/async_event_emitter@2.2.4: + '@vladfrangu/async_event_emitter@2.2.4': resolution: {integrity: sha512-ButUPz9E9cXMLgvAW8aLAKKJJsPu1dY1/l/E8xzLFuysowXygs6GBcyunK9rnGC4zTsnIc2mQo71rGw9U+Ykug==} engines: {node: '>=v14.0.0', npm: '>=7.0.0'} - dev: false - /agent-base@6.0.2: + agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} - dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: false - /ansi-styles@4.3.0: + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: false - /array-move@3.0.1: + array-move@3.0.1: resolution: {integrity: sha512-H3Of6NIn2nNU1gsVDqDnYKY/LCdWvCMMOWifNGhKcVQgiZ6nOek39aESOvro6zmueP07exSl93YLvkN4fZOkSg==} engines: {node: '>=10'} - dev: false - /buffer-from@1.1.2: + buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: false - /bufferutil@4.0.8: + bufferutil@4.0.8: resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} engines: {node: '>=6.14.2'} - requiresBuild: true - dependencies: - node-gyp-build: 4.8.0 - dev: false - /caseless@0.12.0: + caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - dev: false - /chalk@4.1.2: + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: false - /color-convert@2.0.1: + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - dev: false - /color-name@1.1.4: + color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: false - /concat-stream@2.0.0: + concat-stream@2.0.0: resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} engines: {'0': node >= 6.0} - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 3.6.2 - typedarray: 0.0.6 - dev: false - /debug@4.3.4: + debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -653,262 +441,131 @@ packages: peerDependenciesMeta: supports-color: optional: true - dependencies: - ms: 2.1.2 - /discord-api-types@0.37.61: + discord-api-types@0.37.61: resolution: {integrity: sha512-o/dXNFfhBpYHpQFdT6FWzeO7pKc838QeeZ9d91CfVAtpr5XLK4B/zYxQbYgPdoMiTDvJfzcsLW5naXgmHGDNXw==} - dev: false - /discord.js@14.14.1(bufferutil@4.0.8)(utf-8-validate@6.0.3): + discord.js@14.14.1: resolution: {integrity: sha512-/hUVzkIerxKHyRKopJy5xejp4MYKDPTszAnpYxzVVv4qJYf+Tkt+jnT2N29PIPschicaEEpXwF2ARrTYHYwQ5w==} engines: {node: '>=16.11.0'} - dependencies: - '@discordjs/builders': 1.7.0 - '@discordjs/collection': 1.5.3 - '@discordjs/formatters': 0.3.3 - '@discordjs/rest': 2.2.0 - '@discordjs/util': 1.0.2 - '@discordjs/ws': 1.0.2(bufferutil@4.0.8)(utf-8-validate@6.0.3) - '@sapphire/snowflake': 3.5.1 - '@types/ws': 8.5.9 - discord-api-types: 0.37.61 - fast-deep-equal: 3.1.3 - lodash.snakecase: 4.1.1 - tslib: 2.6.2 - undici: 5.27.2 - ws: 8.14.2(bufferutil@4.0.8)(utf-8-validate@6.0.3) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - /dom-serializer@0.2.2: + dom-serializer@0.2.2: resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} - dependencies: - domelementtype: 2.3.0 - entities: 2.2.0 - dev: false - /domelementtype@1.3.1: + domelementtype@1.3.1: resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} - dev: false - /domelementtype@2.3.0: + domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - dev: false - /domhandler@2.4.2: + domhandler@2.4.2: resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} - dependencies: - domelementtype: 1.3.1 - dev: false - /domutils@1.7.0: + domutils@1.7.0: resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} - dependencies: - dom-serializer: 0.2.2 - domelementtype: 1.3.1 - dev: false - /encoding@0.1.13: + encoding@0.1.13: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - dependencies: - iconv-lite: 0.6.3 - dev: false - /entities@1.1.2: + entities@1.1.2: resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} - dev: false - /entities@2.2.0: + entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - dev: false - /env-paths@2.2.1: + env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} - dev: false - /es-module-lexer@1.4.1: + es-module-lexer@1.4.1: resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} - dev: true - /esbuild@0.20.1: - resolution: {integrity: sha512-OJwEgrpWm/PCMsLVWXKqvcjme3bHNpOgN7Tb6cQnR5n0TPbQx1/Xrn7rqM+wn17bYeT6MGB5sn1Bh5YiGi70nA==} + esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} engines: {node: '>=12'} hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/aix-ppc64': 0.20.1 - '@esbuild/android-arm': 0.20.1 - '@esbuild/android-arm64': 0.20.1 - '@esbuild/android-x64': 0.20.1 - '@esbuild/darwin-arm64': 0.20.1 - '@esbuild/darwin-x64': 0.20.1 - '@esbuild/freebsd-arm64': 0.20.1 - '@esbuild/freebsd-x64': 0.20.1 - '@esbuild/linux-arm': 0.20.1 - '@esbuild/linux-arm64': 0.20.1 - '@esbuild/linux-ia32': 0.20.1 - '@esbuild/linux-loong64': 0.20.1 - '@esbuild/linux-mips64el': 0.20.1 - '@esbuild/linux-ppc64': 0.20.1 - '@esbuild/linux-riscv64': 0.20.1 - '@esbuild/linux-s390x': 0.20.1 - '@esbuild/linux-x64': 0.20.1 - '@esbuild/netbsd-x64': 0.20.1 - '@esbuild/openbsd-x64': 0.20.1 - '@esbuild/sunos-x64': 0.20.1 - '@esbuild/win32-arm64': 0.20.1 - '@esbuild/win32-ia32': 0.20.1 - '@esbuild/win32-x64': 0.20.1 - dev: true - - /estree-walker@2.0.2: + + estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: true - /fast-deep-equal@3.1.3: + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: false - /ffmpeg-static@5.2.0: + ffmpeg-static@5.2.0: resolution: {integrity: sha512-WrM7kLW+do9HLr+H6tk7LzQ7kPqbAgLjdzNE32+u3Ff11gXt9Kkkd2nusGFrlWMIe+XaA97t+I8JS7sZIrvRgA==} engines: {node: '>=16'} - requiresBuild: true - dependencies: - '@derhuerst/http-basic': 8.2.4 - env-paths: 2.2.1 - https-proxy-agent: 5.0.1 - progress: 2.0.3 - transitivePeerDependencies: - - supports-color - dev: false - /fsevents@2.3.3: + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - requiresBuild: true - dev: true - optional: true - /function-bind@1.1.2: + function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - dev: true - /get-tsconfig@4.7.2: + get-tsconfig@4.7.2: resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} - dependencies: - resolve-pkg-maps: 1.0.0 - dev: true - /has-flag@4.0.0: + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - dev: false - /hasown@2.0.1: + hasown@2.0.1: resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} engines: {node: '>= 0.4'} - dependencies: - function-bind: 1.1.2 - dev: true - /he@1.2.0: + he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true - dev: false - /himalaya@1.1.0: + himalaya@1.1.0: resolution: {integrity: sha512-LLase1dHCRMel68/HZTFft0N0wti0epHr3nNY7ynpLbyZpmrKMQ8YIpiOV77TM97cNpC8Wb2n6f66IRggwdWPw==} - dev: false - /html-to-text@5.1.1: + html-to-text@5.1.1: resolution: {integrity: sha512-Bci6bD/JIfZSvG4s0gW/9mMKwBRoe/1RWLxUME/d6WUSZCdY7T60bssf/jFf7EYXRyqU4P5xdClVqiYU0/ypdA==} engines: {node: '>= 4.0.0'} hasBin: true - dependencies: - he: 1.2.0 - htmlparser2: 3.10.1 - lodash: 4.17.21 - minimist: 1.2.8 - dev: false - /htmlparser2@3.10.1: + htmlparser2@3.10.1: resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} - dependencies: - domelementtype: 1.3.1 - domhandler: 2.4.2 - domutils: 1.7.0 - entities: 1.1.2 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: false - /http-response-object@3.0.2: + http-response-object@3.0.2: resolution: {integrity: sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==} - dependencies: - '@types/node': 10.17.60 - dev: false - /https-proxy-agent@5.0.1: + https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: false - /iconv-lite@0.6.3: + iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: false - /inherits@2.0.4: + inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: false - /is-core-module@2.13.1: + is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - dependencies: - hasown: 2.0.1 - dev: true - /lodash.snakecase@4.1.1: + lodash.snakecase@4.1.1: resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} - dev: false - /lodash@4.17.21: + lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: false - /lyrics-finder@21.7.0: + lyrics-finder@21.7.0: resolution: {integrity: sha512-AMaJ+MdbdemYOWM1Kxd/vzn23OD66/fdemaJWN9dU0qsxK6d09rODSphygAvaGka6mgfHaFlHN+ETHv/d60ftw==} hasBin: true - dependencies: - encoding: 0.1.13 - html-to-text: 5.1.1 - node-fetch: 2.7.0(encoding@0.1.13) - dev: false - /magic-bytes.js@1.8.0: + magic-bytes.js@1.8.0: resolution: {integrity: sha512-lyWpfvNGVb5lu8YUAbER0+UMBTdR63w2mcSUlhhBTyVbxJvjgqwyAf3AZD6MprgK0uHuBoWXSDAMWLupX83o3Q==} - dev: false - /minimist@1.2.8: + minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: false - /ms@2.1.2: + ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - /node-fetch@2.7.0(encoding@0.1.13): + node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} peerDependencies: @@ -916,46 +573,32 @@ packages: peerDependenciesMeta: encoding: optional: true - dependencies: - encoding: 0.1.13 - whatwg-url: 5.0.0 - dev: false - /node-gyp-build@4.8.0: + node-gyp-build@4.8.0: resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} hasBin: true - requiresBuild: true - dev: false - /opusscript@0.1.1: + opusscript@0.1.1: resolution: {integrity: sha512-mL0fZZOUnXdZ78woRXp18lApwpp0lF5tozJOD1Wut0dgrA9WuQTgSels/CSmFleaAZrJi/nci5KOVtbuxeWoQA==} - dev: false - /parse-cache-control@1.0.1: + parse-cache-control@1.0.1: resolution: {integrity: sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==} - dev: false - /path-parse@1.0.7: + path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true - /picomatch@2.3.1: + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - dev: true - /play-audio@0.5.2: + play-audio@0.5.2: resolution: {integrity: sha512-ZAqHUKkQLix2Iga7pPbsf1LpUoBjcpwU93F1l3qBIfxYddQLhxS6GKmS0d3jV8kSVaUbr6NnOEcEMFvuX93SWQ==} - dev: false - /play-dl@1.9.7: + play-dl@1.9.7: resolution: {integrity: sha512-KpgerWxUCY4s9Mhze2qdqPhiqd8Ve6HufpH9mBH3FN+vux55qSh6WJKDabfie8IBHN7lnrAlYcT/UdGax58c2A==} engines: {node: '>=16.0.0'} - dependencies: - play-audio: 0.5.2 - dev: false - /prism-media@1.3.5(ffmpeg-static@5.2.0)(opusscript@0.1.1): + prism-media@1.3.5: resolution: {integrity: sha512-IQdl0Q01m4LrkN1EGIE9lphov5Hy7WWlH6ulf5QdGePLlPas9p2mhgddTEHrlaXYjjFToM1/rWuwF37VF4taaA==} peerDependencies: '@discordjs/opus': '>=0.8.0 <1.0.0' @@ -971,198 +614,112 @@ packages: optional: true opusscript: optional: true - dependencies: - ffmpeg-static: 5.2.0 - opusscript: 0.1.1 - dev: false - /progress@2.0.3: + progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} - dev: false - /readable-stream@3.6.2: + readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - dev: false - /resolve-pkg-maps@1.0.0: + resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - dev: true - /resolve@1.22.8: + resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - /rollup-plugin-esbuild@6.1.1(esbuild@0.20.1)(rollup@4.12.0): + rollup-plugin-esbuild@6.1.1: resolution: {integrity: sha512-CehMY9FAqJD5OUaE/Mi1r5z0kNeYxItmRO2zG4Qnv2qWKF09J2lTy5GUzjJR354ZPrLkCj4fiBN41lo8PzBUhw==} engines: {node: '>=14.18.0'} peerDependencies: esbuild: '>=0.18.0' rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.12.0) - debug: 4.3.4 - es-module-lexer: 1.4.1 - esbuild: 0.20.1 - get-tsconfig: 4.7.2 - rollup: 4.12.0 - transitivePeerDependencies: - - supports-color - dev: true - /rollup-plugin-typescript-paths@1.5.0(typescript@5.3.3): + rollup-plugin-typescript-paths@1.5.0: resolution: {integrity: sha512-zly2aiGNjYJNq5YUi6eyGrQnCYUQ8b5czOtHZIGriwG9U3Ba2F9hlSklafXCdsNulK/IlNmE0Kzj0h+fVV32pA==} peerDependencies: typescript: '>=3.4' - dependencies: - typescript: 5.3.3 - dev: true - /rollup@4.12.0: - resolution: {integrity: sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==} + rollup@4.17.1: + resolution: {integrity: sha512-0gG94inrUtg25sB2V/pApwiv1lUb0bQ25FPNuzO89Baa+B+c0ccaaBKM5zkZV/12pUUdH+lWCSm9wmHqyocuVQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.12.0 - '@rollup/rollup-android-arm64': 4.12.0 - '@rollup/rollup-darwin-arm64': 4.12.0 - '@rollup/rollup-darwin-x64': 4.12.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.12.0 - '@rollup/rollup-linux-arm64-gnu': 4.12.0 - '@rollup/rollup-linux-arm64-musl': 4.12.0 - '@rollup/rollup-linux-riscv64-gnu': 4.12.0 - '@rollup/rollup-linux-x64-gnu': 4.12.0 - '@rollup/rollup-linux-x64-musl': 4.12.0 - '@rollup/rollup-win32-arm64-msvc': 4.12.0 - '@rollup/rollup-win32-ia32-msvc': 4.12.0 - '@rollup/rollup-win32-x64-msvc': 4.12.0 - fsevents: 2.3.3 - dev: true - /safe-buffer@5.2.1: + safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: false - /safer-buffer@2.1.2: + safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: false - /sodium-native@4.0.10: - resolution: {integrity: sha512-vrJQt4gASntDbnltRRk9vN4rks1SehjM12HkqQtu250JtWT+/lo8oEOa1HvSq3+8hzJdYcCJuLR5qRGxoRDjAg==} - requiresBuild: true - dependencies: - node-gyp-build: 4.8.0 - dev: false + sodium-native@4.1.1: + resolution: {integrity: sha512-LXkAfRd4FHtkQS4X6g+nRcVaN7mWVNepV06phIsC6+IZFvGh1voW5TNQiQp2twVaMf05gZqQjuS+uWLM6gHhNQ==} - /spotify-uri@4.0.1: + spotify-uri@4.0.1: resolution: {integrity: sha512-dEt8UN5fSsZpcPk8HOEHkv29U71kefKjcYt2dopsShrkIZhXtDXe9Xse4xq0GW6831LnEZFry5mpzm1HV/TNLw==} engines: {node: '>= 16'} - dev: false - /spotify-url-info@3.2.13: + spotify-url-info@3.2.13: resolution: {integrity: sha512-b1D4n4vnSHf8/HkLT7SIwBsj21t5AV8uhWvzU6c1v8JHS34Ocdb1SsPlannRChCuRAWMKbOEntSn/sP3RhsDfQ==} engines: {node: '>= 12'} - dependencies: - himalaya: 1.1.0 - spotify-uri: 4.0.1 - dev: false - /string-progressbar@1.0.4: + string-progressbar@1.0.4: resolution: {integrity: sha512-OpkcFxlFjn7kz5jTWmPGY+FFJVN21lQ9k0fkK0XS5GVvlCgS1stgDNEoMyqnkbZEcVP3Gv6IxqgG7tnD7ChBSw==} - dev: false - /string_decoder@1.3.0: + string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - dependencies: - safe-buffer: 5.2.1 - dev: false - /supports-color@7.2.0: + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - dev: false - /supports-preserve-symlinks-flag@1.0.0: + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - dev: true - /tr46@0.0.3: + tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: false - /ts-mixer@6.0.4: + ts-mixer@6.0.4: resolution: {integrity: sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==} - dev: false - /tslib@2.6.2: + tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /typedarray@0.0.6: + typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - dev: false - /typescript@5.3.3: - resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} hasBin: true - dev: true - /undici-types@5.26.5: + undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - /undici@5.27.2: + undici@5.27.2: resolution: {integrity: sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==} engines: {node: '>=14.0'} - dependencies: - '@fastify/busboy': 2.1.0 - dev: false - /undici@6.6.2: - resolution: {integrity: sha512-vSqvUE5skSxQJ5sztTZ/CdeJb1Wq0Hf44hlYMciqHghvz+K88U0l7D6u1VsndoFgskDcnU+nG3gYmMzJVzd9Qg==} - engines: {node: '>=18.0'} - dependencies: - '@fastify/busboy': 2.1.0 - dev: false + undici@6.15.0: + resolution: {integrity: sha512-VviMt2tlMg1BvQ0FKXxrz1eJuyrcISrL2sPfBf7ZskX/FCEc/7LeThQaoygsMJpNqrATWQIsRVx+1Dpe4jaYuQ==} + engines: {node: '>=18.17'} - /utf-8-validate@6.0.3: + utf-8-validate@6.0.3: resolution: {integrity: sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==} engines: {node: '>=6.14.2'} - requiresBuild: true - dependencies: - node-gyp-build: 4.8.0 - dev: false - /util-deprecate@1.0.2: + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: false - /webidl-conversions@3.0.1: + webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: false - /whatwg-url@5.0.0: + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - dev: false - /ws@8.14.2(bufferutil@4.0.8)(utf-8-validate@6.0.3): + ws@8.14.2: resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} engines: {node: '>=10.0.0'} peerDependencies: @@ -1173,12 +730,8 @@ packages: optional: true utf-8-validate: optional: true - dependencies: - bufferutil: 4.0.8 - utf-8-validate: 6.0.3 - dev: false - /ws@8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.3): + ws@8.16.0: resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} engines: {node: '>=10.0.0'} peerDependencies: @@ -1189,11 +742,597 @@ packages: optional: true utf-8-validate: optional: true - dependencies: + + youtube-sr@4.3.11: + resolution: {integrity: sha512-3oHiS2x7PpMiDRW7Cq8nz1bkAIBOJHoOwkPl/oncM/+A9/3xxMDgMLGW2dsBEP1DHFyRXYTVABgfbdwHF8sXXQ==} + +snapshots: + + '@derhuerst/http-basic@8.2.4': + dependencies: + caseless: 0.12.0 + concat-stream: 2.0.0 + http-response-object: 3.0.2 + parse-cache-control: 1.0.1 + + '@discordjs/builders@1.7.0': + dependencies: + '@discordjs/formatters': 0.3.3 + '@discordjs/util': 1.0.2 + '@sapphire/shapeshift': 3.9.6 + discord-api-types: 0.37.61 + fast-deep-equal: 3.1.3 + ts-mixer: 6.0.4 + tslib: 2.6.2 + + '@discordjs/collection@1.5.3': {} + + '@discordjs/collection@2.0.0': {} + + '@discordjs/formatters@0.3.3': + dependencies: + discord-api-types: 0.37.61 + + '@discordjs/rest@2.2.0': + dependencies: + '@discordjs/collection': 2.0.0 + '@discordjs/util': 1.0.2 + '@sapphire/async-queue': 1.5.2 + '@sapphire/snowflake': 3.5.3 + '@vladfrangu/async_event_emitter': 2.2.4 + discord-api-types: 0.37.61 + magic-bytes.js: 1.8.0 + tslib: 2.6.2 + undici: 5.27.2 + + '@discordjs/util@1.0.2': {} + + '@discordjs/voice@0.16.1(bufferutil@4.0.8)(ffmpeg-static@5.2.0)(opusscript@0.1.1)(utf-8-validate@6.0.3)': + dependencies: + '@types/ws': 8.5.10 + discord-api-types: 0.37.61 + prism-media: 1.3.5(ffmpeg-static@5.2.0)(opusscript@0.1.1) + tslib: 2.6.2 + ws: 8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + transitivePeerDependencies: + - '@discordjs/opus' + - bufferutil + - ffmpeg-static + - node-opus + - opusscript + - utf-8-validate + + '@discordjs/ws@1.0.2(bufferutil@4.0.8)(utf-8-validate@6.0.3)': + dependencies: + '@discordjs/collection': 2.0.0 + '@discordjs/rest': 2.2.0 + '@discordjs/util': 1.0.2 + '@sapphire/async-queue': 1.5.2 + '@types/ws': 8.5.10 + '@vladfrangu/async_event_emitter': 2.2.4 + discord-api-types: 0.37.61 + tslib: 2.6.2 + ws: 8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@esbuild/aix-ppc64@0.20.2': + optional: true + + '@esbuild/android-arm64@0.20.2': + optional: true + + '@esbuild/android-arm@0.20.2': + optional: true + + '@esbuild/android-x64@0.20.2': + optional: true + + '@esbuild/darwin-arm64@0.20.2': + optional: true + + '@esbuild/darwin-x64@0.20.2': + optional: true + + '@esbuild/freebsd-arm64@0.20.2': + optional: true + + '@esbuild/freebsd-x64@0.20.2': + optional: true + + '@esbuild/linux-arm64@0.20.2': + optional: true + + '@esbuild/linux-arm@0.20.2': + optional: true + + '@esbuild/linux-ia32@0.20.2': + optional: true + + '@esbuild/linux-loong64@0.20.2': + optional: true + + '@esbuild/linux-mips64el@0.20.2': + optional: true + + '@esbuild/linux-ppc64@0.20.2': + optional: true + + '@esbuild/linux-riscv64@0.20.2': + optional: true + + '@esbuild/linux-s390x@0.20.2': + optional: true + + '@esbuild/linux-x64@0.20.2': + optional: true + + '@esbuild/netbsd-x64@0.20.2': + optional: true + + '@esbuild/openbsd-x64@0.20.2': + optional: true + + '@esbuild/sunos-x64@0.20.2': + optional: true + + '@esbuild/win32-arm64@0.20.2': + optional: true + + '@esbuild/win32-ia32@0.20.2': + optional: true + + '@esbuild/win32-x64@0.20.2': + optional: true + + '@fastify/busboy@2.1.0': {} + + '@rollup/plugin-typescript@11.1.6(rollup@4.17.1)(tslib@2.6.2)(typescript@5.4.5)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.17.1) + resolve: 1.22.8 + typescript: 5.4.5 + optionalDependencies: + rollup: 4.17.1 + tslib: 2.6.2 + + '@rollup/pluginutils@5.1.0(rollup@4.17.1)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.17.1 + + '@rollup/rollup-android-arm-eabi@4.17.1': + optional: true + + '@rollup/rollup-android-arm64@4.17.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.17.1': + optional: true + + '@rollup/rollup-darwin-x64@4.17.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.17.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.17.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.17.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.17.1': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.17.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.17.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.17.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.17.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.17.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.17.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.17.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.17.1': + optional: true + + '@sapphire/async-queue@1.5.2': {} + + '@sapphire/shapeshift@3.9.6': + dependencies: + fast-deep-equal: 3.1.3 + lodash: 4.17.21 + + '@sapphire/snowflake@3.5.1': {} + + '@sapphire/snowflake@3.5.3': {} + + '@types/estree@1.0.5': {} + + '@types/node@10.17.60': {} + + '@types/node@20.12.7': + dependencies: + undici-types: 5.26.5 + + '@types/ws@8.5.10': + dependencies: + '@types/node': 20.12.7 + + '@types/ws@8.5.9': + dependencies: + '@types/node': 20.12.7 + + '@vladfrangu/async_event_emitter@2.2.4': {} + + agent-base@6.0.2: + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + array-move@3.0.1: {} + + buffer-from@1.1.2: {} + + bufferutil@4.0.8: + dependencies: + node-gyp-build: 4.8.0 + + caseless@0.12.0: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + concat-stream@2.0.0: + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.2 + typedarray: 0.0.6 + + debug@4.3.4: + dependencies: + ms: 2.1.2 + + discord-api-types@0.37.61: {} + + discord.js@14.14.1(bufferutil@4.0.8)(utf-8-validate@6.0.3): + dependencies: + '@discordjs/builders': 1.7.0 + '@discordjs/collection': 1.5.3 + '@discordjs/formatters': 0.3.3 + '@discordjs/rest': 2.2.0 + '@discordjs/util': 1.0.2 + '@discordjs/ws': 1.0.2(bufferutil@4.0.8)(utf-8-validate@6.0.3) + '@sapphire/snowflake': 3.5.1 + '@types/ws': 8.5.9 + discord-api-types: 0.37.61 + fast-deep-equal: 3.1.3 + lodash.snakecase: 4.1.1 + tslib: 2.6.2 + undici: 5.27.2 + ws: 8.14.2(bufferutil@4.0.8)(utf-8-validate@6.0.3) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + dom-serializer@0.2.2: + dependencies: + domelementtype: 2.3.0 + entities: 2.2.0 + + domelementtype@1.3.1: {} + + domelementtype@2.3.0: {} + + domhandler@2.4.2: + dependencies: + domelementtype: 1.3.1 + + domutils@1.7.0: + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + + encoding@0.1.13: + dependencies: + iconv-lite: 0.6.3 + + entities@1.1.2: {} + + entities@2.2.0: {} + + env-paths@2.2.1: {} + + es-module-lexer@1.4.1: {} + + esbuild@0.20.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 + + estree-walker@2.0.2: {} + + fast-deep-equal@3.1.3: {} + + ffmpeg-static@5.2.0: + dependencies: + '@derhuerst/http-basic': 8.2.4 + env-paths: 2.2.1 + https-proxy-agent: 5.0.1 + progress: 2.0.3 + transitivePeerDependencies: + - supports-color + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + get-tsconfig@4.7.2: + dependencies: + resolve-pkg-maps: 1.0.0 + + has-flag@4.0.0: {} + + hasown@2.0.1: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + himalaya@1.1.0: {} + + html-to-text@5.1.1: + dependencies: + he: 1.2.0 + htmlparser2: 3.10.1 + lodash: 4.17.21 + minimist: 1.2.8 + + htmlparser2@3.10.1: + dependencies: + domelementtype: 1.3.1 + domhandler: 2.4.2 + domutils: 1.7.0 + entities: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.2 + + http-response-object@3.0.2: + dependencies: + '@types/node': 10.17.60 + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + inherits@2.0.4: {} + + is-core-module@2.13.1: + dependencies: + hasown: 2.0.1 + + lodash.snakecase@4.1.1: {} + + lodash@4.17.21: {} + + lyrics-finder@21.7.0: + dependencies: + encoding: 0.1.13 + html-to-text: 5.1.1 + node-fetch: 2.7.0(encoding@0.1.13) + + magic-bytes.js@1.8.0: {} + + minimist@1.2.8: {} + + ms@2.1.2: {} + + node-fetch@2.7.0(encoding@0.1.13): + dependencies: + whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 + + node-gyp-build@4.8.0: {} + + opusscript@0.1.1: {} + + parse-cache-control@1.0.1: {} + + path-parse@1.0.7: {} + + picomatch@2.3.1: {} + + play-audio@0.5.2: {} + + play-dl@1.9.7: + dependencies: + play-audio: 0.5.2 + + prism-media@1.3.5(ffmpeg-static@5.2.0)(opusscript@0.1.1): + optionalDependencies: + ffmpeg-static: 5.2.0 + opusscript: 0.1.1 + + progress@2.0.3: {} + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + resolve-pkg-maps@1.0.0: {} + + resolve@1.22.8: + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + rollup-plugin-esbuild@6.1.1(esbuild@0.20.2)(rollup@4.17.1): + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.17.1) + debug: 4.3.4 + es-module-lexer: 1.4.1 + esbuild: 0.20.2 + get-tsconfig: 4.7.2 + rollup: 4.17.1 + transitivePeerDependencies: + - supports-color + + rollup-plugin-typescript-paths@1.5.0(typescript@5.4.5): + dependencies: + typescript: 5.4.5 + + rollup@4.17.1: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.17.1 + '@rollup/rollup-android-arm64': 4.17.1 + '@rollup/rollup-darwin-arm64': 4.17.1 + '@rollup/rollup-darwin-x64': 4.17.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.17.1 + '@rollup/rollup-linux-arm-musleabihf': 4.17.1 + '@rollup/rollup-linux-arm64-gnu': 4.17.1 + '@rollup/rollup-linux-arm64-musl': 4.17.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.17.1 + '@rollup/rollup-linux-riscv64-gnu': 4.17.1 + '@rollup/rollup-linux-s390x-gnu': 4.17.1 + '@rollup/rollup-linux-x64-gnu': 4.17.1 + '@rollup/rollup-linux-x64-musl': 4.17.1 + '@rollup/rollup-win32-arm64-msvc': 4.17.1 + '@rollup/rollup-win32-ia32-msvc': 4.17.1 + '@rollup/rollup-win32-x64-msvc': 4.17.1 + fsevents: 2.3.3 + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + sodium-native@4.1.1: + dependencies: + node-gyp-build: 4.8.0 + + spotify-uri@4.0.1: {} + + spotify-url-info@3.2.13: + dependencies: + himalaya: 1.1.0 + spotify-uri: 4.0.1 + + string-progressbar@1.0.4: {} + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + tr46@0.0.3: {} + + ts-mixer@6.0.4: {} + + tslib@2.6.2: {} + + typedarray@0.0.6: {} + + typescript@5.4.5: {} + + undici-types@5.26.5: {} + + undici@5.27.2: + dependencies: + '@fastify/busboy': 2.1.0 + + undici@6.15.0: {} + + utf-8-validate@6.0.3: + dependencies: + node-gyp-build: 4.8.0 + + util-deprecate@1.0.2: {} + + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + ws@8.14.2(bufferutil@4.0.8)(utf-8-validate@6.0.3): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 6.0.3 + + ws@8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.3): + optionalDependencies: bufferutil: 4.0.8 utf-8-validate: 6.0.3 - dev: false - /youtube-sr@4.3.10: - resolution: {integrity: sha512-YTpIWy2c1XLN4VpsUuZTDNXpJ2sLZQyG0kX1vq3nymHhDKro2SoeODey3pZazW+6AjfmNxoSnI8pCSzPrEa3jw==} - dev: false + youtube-sr@4.3.11: {} diff --git a/src/commands/info/changelogs.ts b/src/commands/info/changelogs.ts index af046201..f6aec64b 100644 --- a/src/commands/info/changelogs.ts +++ b/src/commands/info/changelogs.ts @@ -1,24 +1,25 @@ import type { Command } from "@common/types"; -import { type CommandInteraction, EmbedBuilder, SlashCommandBuilder } from "discord.js"; +import { EmbedBuilder, SlashCommandBuilder } from "discord.js"; export default { data: new SlashCommandBuilder() .setName("changelogs") .setDescription("Displays information about the latest Music Bot update."), - async execute(interaction: CommandInteraction, client) { + async execute(interaction) { const bugfixes = `- bot: General fixes + - types: Typings fixes `; const whatsnew = `- bot: Updated and upgraded`; const UpdateEmbed = new EmbedBuilder() .setColor("NotQuiteBlack") - .setTitle("Update Changelogs") - .setDescription("Changelogs for the latest Music Bot update.") + .setTitle("Changelogs") + .setDescription("Check out what's new and fixes implemented in the latest Music Bot update!") .addFields( { - name: "Version", value: client!.version + name: "Version", value: interaction.client.version }, { name: "**Bug Fixes**", value: bugfixes.replaceAll(" ", "") diff --git a/src/commands/info/info.ts b/src/commands/info/info.ts index eaa53a21..d4c70b0f 100644 --- a/src/commands/info/info.ts +++ b/src/commands/info/info.ts @@ -1,4 +1,4 @@ -import { type CommandInteraction, EmbedBuilder, SlashCommandBuilder, version as djsVersion } from "discord.js"; +import { EmbedBuilder, SlashCommandBuilder, version as djsVersion } from "discord.js"; import { Logger } from "@components/Logger"; import { timeConverter } from "@utils/timeConverter"; import { hash } from "@utils/hash"; @@ -9,14 +9,14 @@ export default { data: new SlashCommandBuilder() .setName("info") .setDescription("Displays information about the bot."), - async execute(interaction: CommandInteraction, client) { + async execute(interaction) { const infoEmbed = new EmbedBuilder() .setColor("NotQuiteBlack") - .setAuthor({ name: "Music Bot", iconURL: client.user?.avatarURL() as string }) + .setAuthor({ name: "Music Bot", iconURL: interaction.client.user.avatarURL() ?? undefined }) .addFields( { name: "Version", - value: `${client.version} ${client.branch}`, + value: `${interaction.client.version} ${interaction.client.branch}`, inline: true }, { @@ -31,12 +31,7 @@ export default { }, { name: "Servers", - value: `${client?.guilds.cache.size}`, - inline: true - }, - { - name: "Users", - value: `${client?.users.cache.size}`, + value: `${interaction.client.guilds.cache.size}`, inline: true }, { diff --git a/src/commands/info/membercount.ts b/src/commands/info/membercount.ts index 2e538a8c..6b15244e 100644 --- a/src/commands/info/membercount.ts +++ b/src/commands/info/membercount.ts @@ -1,19 +1,18 @@ -import { type CommandInteraction, EmbedBuilder, SlashCommandBuilder } from "discord.js"; -import { Logger } from "@components/Logger"; import type { Command } from "@common/types"; +import { EmbedBuilder, SlashCommandBuilder } from "discord.js"; export default { data: new SlashCommandBuilder() .setName("membercount") - .setDescription("Displays the number of members in the server."), - execute(interaction: CommandInteraction) { - const serverEmbed = new EmbedBuilder() + .setDescription("Displays the number of members in the guild."), + execute(interaction) { + const guild = interaction.guild! + const countEmbed = new EmbedBuilder() .setColor("NotQuiteBlack") .setTitle("Info | Member Count") - .addFields( - { - name: `${interaction.guild?.name} Members`, value: `**${interaction.guild?.memberCount}**` - }); - return interaction.reply({ embeds: [serverEmbed] }).catch(err => Logger.error({ type: "INFOCMDS", err })); + .addFields({ + name: `${guild.name} Members`, value: `**${guild.memberCount}**` + }); + return interaction.reply({ embeds: [countEmbed] }); }, -} as Command; +} as Command; \ No newline at end of file diff --git a/src/commands/info/ping.ts b/src/commands/info/ping.ts index c667a590..b6b9a091 100644 --- a/src/commands/info/ping.ts +++ b/src/commands/info/ping.ts @@ -1,26 +1,24 @@ -import { type CommandInteraction, EmbedBuilder, SlashCommandBuilder } from "discord.js"; +import { EmbedBuilder, SlashCommandBuilder } from "discord.js"; import { Logger } from "@components/Logger"; import type { Command } from "@common/types"; export default { data: new SlashCommandBuilder() .setName("ping") - .setDescription("Check the API and bot latency."), - execute(interaction: CommandInteraction) { - const botlatency: number = Date.now() - interaction.createdTimestamp; - const apilatency: number = Math.round(interaction.client.ws.ping); - + .setDescription("Check the API and Bot latency."), + execute(interaction) { const pingEmbed = new EmbedBuilder() .setColor("NotQuiteBlack") .setTitle("Info | Latency") .setDescription("Music Bot's Latency and the Latency to the Discord API.") .addFields( { - name: "Bot Latency", value: botlatency + "ms", inline: true + name: "Bot Latency", value: `${new Date().getTime() - interaction.createdTimestamp}ms`, inline: true }, { - name: "API Latency", value: apilatency + "ms", inline: true - }); - return interaction.reply({ embeds: [pingEmbed], ephemeral: true }).catch((err: any) => Logger.error({ type: "INFOCMDS", err })); + name: "API Latency", value: `${Math.round(interaction.client.ws.ping)}ms`, inline: true + } + ); + return interaction.reply({ embeds: [pingEmbed], ephemeral: true }).catch((err: Error) => Logger.error({ type: "INFOCMDS", err: err })); }, -} as Command; +} as Command; \ No newline at end of file diff --git a/src/commands/utility/serverinfo.ts b/src/commands/utility/serverinfo.ts index 7f6f6e25..c3f14822 100644 --- a/src/commands/utility/serverinfo.ts +++ b/src/commands/utility/serverinfo.ts @@ -1,13 +1,14 @@ -import { ChannelType, EmbedBuilder, type GuildMember, type GuildVerificationLevel, SlashCommandBuilder } from "discord.js"; +import { ChannelType, EmbedBuilder, SlashCommandBuilder } from "discord.js"; import { Logger } from "@components/Logger"; import type { Command } from "@common/types"; export default { data: new SlashCommandBuilder() .setName("serverinfo") - .setDescription("Displays information about the server."), + .setDescription("Displays information about the guild."), async execute(interaction) { - const owner: GuildMember = await interaction.guild?.fetchOwner() as GuildMember; + const guild = interaction.guild!; + const owner = await guild.fetchOwner(); const verificationLevels = { 0: "No level set.", 1: "Low.", @@ -16,46 +17,46 @@ export default { 4: "Highest." }; - const serverEmbed = new EmbedBuilder() + const infoEmbed = new EmbedBuilder() .setColor("NotQuiteBlack") - .setAuthor({ name: interaction.guild?.name as string, iconURL: interaction.guild?.iconURL() as string }) - .setThumbnail(interaction.guild?.iconURL() as string) + .setAuthor({ name: guild.name, iconURL: guild.iconURL() ?? undefined }) + .setThumbnail(guild.iconURL()) .addFields( { - name: "Owner", value: owner?.user.tag, inline: true + name: "Owner", value: owner.user.tag, inline: true }, { - name: "Member Count", value: `${interaction.guild?.memberCount} members.`, inline: true + name: "Member Count", value: `${guild.memberCount} members.`, inline: true }, { - name: "Emoji Count", value: `${interaction.guild?.emojis.cache.size} emojis.`, inline: true + name: "Emoji Count", value: `${guild.emojis.cache.size} emojis.`, inline: true }, { - name: "Roles Count", value: `${interaction.guild?.roles.cache.size} roles.`, inline: true + name: "Roles Count", value: `${guild.roles.cache.size} roles.`, inline: true }, { - name: "Categories Count", value: `${interaction.guild?.channels.cache.filter(c => c.type === ChannelType.GuildCategory).size} categories.`, inline: true + name: "Categories Count", value: `${guild.channels.cache.filter(c => c.type === ChannelType.GuildCategory).size} categories.`, inline: true }, { - name: "Voice Channels Count", value: `${interaction.guild?.channels.cache.filter(c => c.type === ChannelType.GuildVoice).size} channels.`, inline: true + name: "Voice Channels Count", value: `${guild.channels.cache.filter(c => c.type === ChannelType.GuildVoice).size} channels.`, inline: true }, { - name: "Text Channels Count", value: `${interaction.guild?.channels.cache.filter(c => c.type === ChannelType.GuildText).size} channels.`, inline: true + name: "Text Channels Count", value: `${guild.channels.cache.filter(c => c.type === ChannelType.GuildText).size} channels.`, inline: true }, { - name: "Boosts Count", value: `${interaction.guild?.premiumSubscriptionCount} Boosts.`, inline: true + name: "Boosts Count", value: `${guild.premiumSubscriptionCount} Boosts.`, inline: true }, { - name: "Boosts Level", value: `Level ${interaction.guild?.premiumTier}.`, inline: true + name: "Boosts Level", value: `Level ${guild.premiumTier}.`, inline: true }, { - name: "Verification Level", value: verificationLevels[interaction.guild?.verificationLevel as GuildVerificationLevel], inline: true + name: "Verification Level", value: verificationLevels[guild.verificationLevel], inline: true }, { - name: "Features", value: `${interaction.guild?.features.join(", ")}` + name: "Features", value: `${guild.features.join(", ")}` }) - .setFooter({ text: "ID: " + interaction.guild?.id + " | Created at " + interaction.guild?.createdAt.toLocaleString() }); + .setFooter({ text: "ID: " + guild.id + " | Created at " + guild.createdAt.toLocaleString() }); - return await interaction.reply({ embeds: [serverEmbed] }).catch(err => Logger.error({ type: "UTILITYCMDS", err: err })); + return await interaction.reply({ embeds: [infoEmbed] }).catch(err => Logger.error({ type: "UTILITYCMDS", err: err })); } } as Command; \ No newline at end of file diff --git a/src/commands/utility/userinfo.ts b/src/commands/utility/userinfo.ts index 18f53e94..da79e416 100644 --- a/src/commands/utility/userinfo.ts +++ b/src/commands/utility/userinfo.ts @@ -1,4 +1,4 @@ -import { type ChatInputCommandInteraction, EmbedBuilder, SlashCommandBuilder, PermissionFlagsBits, type GuildMember, type User, type PresenceStatus } from "discord.js"; +import { EmbedBuilder, SlashCommandBuilder, PermissionFlagsBits, type GuildMember } from "discord.js"; import { Logger } from "@components/Logger"; import type { Command } from "@common/types"; @@ -12,23 +12,13 @@ export default { .setDescription("Select a User from this Guild.") .setRequired(false) ), - async execute(interaction: ChatInputCommandInteraction) { + async execute(interaction) { await interaction.deferReply(); - const presences = { - idle: "Idle", - online: "Online", - dnd: "Do Not Disturb", - offline: "Offline", - invisible: "Invisible" - }; + const user = interaction.options.getUser("user"); + const member = user ? interaction.guild?.members.resolve(user) : interaction.member as GuildMember; - const user = interaction.options.getUser("user") as User; - const member = user ? (interaction.guild?.members.resolve(user) as GuildMember) : (interaction.member as GuildMember); - - if (!member) { - return interaction.reply("Could not resolve the provided user."); - } + if (!member) return interaction.editReply("Could not resolve the provided user."); const desiredPermissions = [ "KickMembers", @@ -56,27 +46,21 @@ export default { ? "Server Moderator" : "Unknown."; - let rolemap = member.roles.cache.map(roles => `<@&${roles.id}>`).join(", "); - rolemap = rolemap.length > 1024 ? "Too many roles to display." : rolemap || "No roles."; + let rolemap = member.roles.cache.filter(r => r.name !== "@everyone").map(r => r).join(", "); const infoEmbed = new EmbedBuilder() .setColor("NotQuiteBlack") - .setAuthor({ name: member.user.tag, iconURL: member.user.avatarURL() as string }) - .setThumbnail(member?.user?.avatarURL()) + .setAuthor({ name: member.user.tag, iconURL: member.user.avatarURL() ?? undefined }) + .setThumbnail(member.user.avatarURL()) .addFields( { name: "Joined " + interaction.guild?.name, - value: member.joinedAt?.toLocaleString() as string, + value: member.joinedAt!.toLocaleString(), inline: true, }, { name: "Registered on Discord", - value: member.user.createdAt.toLocaleString() as string, - inline: true, - }, - { - name: "Status", - value: presences[member.presence?.status as PresenceStatus], + value: member.user.createdAt.toLocaleString(), inline: true, }, { @@ -91,7 +75,7 @@ export default { }, { name: "User Roles", - value: rolemap, + value: rolemap.length > 1024 ? "Too many roles to display." : rolemap || "No roles.", inline: true, }, { @@ -102,6 +86,6 @@ export default { ) .setFooter({ text: `Member ID: ${member.id}` }); - return await interaction.reply({ embeds: [infoEmbed] }).catch(err => Logger.error({ type: "UTILITYCMDS", err: err })); + return await interaction.editReply({ embeds: [infoEmbed] }).catch(err => Logger.error({ type: "UTILITYCMDS", err: err })); } } as Command; \ No newline at end of file diff --git a/src/common/types.ts b/src/common/types.ts index 49215c2e..e205bd7c 100644 --- a/src/common/types.ts +++ b/src/common/types.ts @@ -1,6 +1,5 @@ -import type { ChatInputCommandInteraction, Collection, CommandInteraction, SlashCommandBuilder, SlashCommandOptionsOnlyBuilder, SlashCommandSubcommandBuilder, SlashCommandSubcommandsOnlyBuilder } from "discord.js"; +import type { CacheType, ChatInputCommandInteraction, Collection, CommandInteraction, SlashCommandBuilder, SlashCommandOptionsOnlyBuilder, SlashCommandSubcommandBuilder, SlashCommandSubcommandsOnlyBuilder } from "discord.js"; import type { VoiceConnection } from "@discordjs/voice"; -import type { Bot } from "@components/Bot"; import type { MusicQueue } from "@components/MusicQueue"; declare module "discord.js" { @@ -34,10 +33,9 @@ export type Config = { } export type Command = { - data: SlashCommandBuilder | SlashCommandSubcommandsOnlyBuilder | SlashCommandOptionsOnlyBuilder | SlashCommandSubcommandBuilder; - execute(interaction: CommandInteraction | ChatInputCommandInteraction): Promise | any; - execute(interaction: CommandInteraction | ChatInputCommandInteraction, client: Bot): Promise | any; -}; + data: SlashCommandBuilder | SlashCommandSubcommandsOnlyBuilder | SlashCommandOptionsOnlyBuilder | SlashCommandSubcommandBuilder | Omit; + execute(interaction: ChatInputCommandInteraction): Promise | any; +} export type QueueOptions = { connection: VoiceConnection; diff --git a/src/components/Bot.ts b/src/components/Bot.ts index d68c65b1..d84c6015 100644 --- a/src/components/Bot.ts +++ b/src/components/Bot.ts @@ -9,10 +9,9 @@ import { Logger } from "@components/Logger"; export class Bot extends Client { public commands: Collection = new Collection(); public queues: Collection = new Collection(); - public readonly debug: boolean = true; - public readonly version: string = "3.0.0"; + public readonly debug: boolean = false; + public readonly version: string = "3.1.0"; public readonly branch: string; - constructor(options: ClientOptions) { super(options); diff --git a/src/components/MusicQueue.ts b/src/components/MusicQueue.ts index 66f2abfb..05fb7f7c 100644 --- a/src/components/MusicQueue.ts +++ b/src/components/MusicQueue.ts @@ -9,7 +9,8 @@ import { type VoiceConnection, VoiceConnectionDisconnectReason, type VoiceConnectionState, - VoiceConnectionStatus + VoiceConnectionStatus, + AudioPlayerPlayingState } from "@discordjs/voice"; import type { ChatInputCommandInteraction, CommandInteraction, Message, TextChannel } from "discord.js"; import { promisify } from "node:util"; @@ -171,7 +172,7 @@ export class MusicQueue { } } - private async sendPlayingMessage({ newState }: { newState: any; }): Promise { + private async sendPlayingMessage({ newState }: { newState: AudioPlayerPlayingState; }): Promise { let playingMessage: Message; try { diff --git a/src/components/config.ts b/src/components/config.ts index 5d09af6a..5811121a 100644 --- a/src/components/config.ts +++ b/src/components/config.ts @@ -1,17 +1,17 @@ import { Config } from "@common/types"; export const config: Config = { - TOKEN: process.env.TOKEN || "", - DEVTOKEN: process.env.DEVTOKEN || "", - DEVID: process.env.DEVID || "", - SOUNDCLOUD_CLIENT_ID: process.env.SOUNDCLOUD_CLIENT_ID || "", - MAX_PLAYLIST_SIZE: Number(process.env.MAX_PLAYLIST_SIZE) || Number(20), - SPOTIFY_CLIENT_ID: process.env.SPOTIFY_CLIENT_ID || "", - SPOTIFY_SECRET_ID: process.env.SPOTIFY_SECRET_ID || "", - SPOTIFY_REFRESH_TOKEN: process.env.SPOTIFY_REFRESH_TOKEN || "", - CLIENT_ID: process.env.CLIENT_ID || "", + TOKEN: process.env.TOKEN ?? "", + CLIENT_ID: process.env.CLIENT_ID ?? "", + DEVTOKEN: process.env.DEVTOKEN ?? "", + DEVID: process.env.DEVID ?? "", + SOUNDCLOUD_CLIENT_ID: process.env.SOUNDCLOUD_CLIENT_ID ?? "", + MAX_PLAYLIST_SIZE: Number(process.env.MAX_PLAYLIST_SIZE) ?? Number(20), + SPOTIFY_CLIENT_ID: process.env.SPOTIFY_CLIENT_ID ?? "", + SPOTIFY_SECRET_ID: process.env.SPOTIFY_SECRET_ID ?? "", + SPOTIFY_REFRESH_TOKEN: process.env.SPOTIFY_REFRESH_TOKEN ?? "", PRUNING: process.env.PRUNING === "true" ? true : false, - STAY_TIME: Number(process.env.STAY_TIME) || Number(30), - DEFAULT_VOLUME: Number(process.env.DEFAULT_VOLUME) || Number(50), + STAY_TIME: Number(process.env.STAY_TIME) ?? Number(30), + DEFAULT_VOLUME: Number(process.env.DEFAULT_VOLUME) ?? Number(50), }; diff --git a/src/index.ts b/src/index.ts index 2d1ba7d7..f36e8d8b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,3 @@ import { Bot } from "@components/Bot"; -new Bot({ - allowedMentions: { parse: ["roles", "users"] }, - intents: 47095, -}); +new Bot({ intents: 47095 }); diff --git a/src/manager/index.ts b/src/manager/index.ts index 945ba883..33750f72 100644 --- a/src/manager/index.ts +++ b/src/manager/index.ts @@ -13,7 +13,7 @@ export class Manager { private async loadModule(client: Bot, moduleFn: (client: Bot) => Promise, moduleName: string): Promise { try { await moduleFn(client); - Logger.log({ type: "MANAGER", msg: `${moduleName} module has been loaded.` }); + Logger.log({ type: "MANAGER", msg: `${moduleName} module has been initialized.` }); } catch (err: any | Error) { Logger.error({ type: "MANAGER", err }); } @@ -31,6 +31,6 @@ export class Manager { } public constructor(client: Bot) { - this.loadModules(client).then(() => Logger.log({ type: "MANAGER", msg: "All modules have been loaded." })); + this.loadModules(client).then(() => Logger.log({ type: "MANAGER", msg: "All modules have been initialized." })); } } diff --git a/src/manager/modules/commands.ts b/src/manager/modules/commands.ts index e127a601..6a29b198 100644 --- a/src/manager/modules/commands.ts +++ b/src/manager/modules/commands.ts @@ -1,6 +1,6 @@ import { Logger } from "@components/Logger"; import type { Bot } from "@components/Bot"; -import { InteractionType, type CommandInteraction } from "discord.js"; +import type { CacheType, ChatInputCommandInteraction, Interaction } from "discord.js"; export async function commands(client: Bot): Promise { client.on("interactionCreate", async (interaction) => { @@ -11,19 +11,18 @@ export async function commands(client: Bot): Promise { if (!command) return; try { - await command.execute(interaction, client); - } catch (err: any | Error) { + await command.execute(interaction); + } catch (err: any) { Logger.error({ type: "INTERNALS/CMDHANDLER", err: err.stack }); await interaction.reply({ content: "An error occurred while executing this command.", ephemeral: true }); } }); } -function isCommandInteraction(interaction: any): interaction is CommandInteraction { +function isCommandInteraction(interaction: Interaction): interaction is ChatInputCommandInteraction { return ( - interaction.type === InteractionType.ApplicationCommand && + interaction.isChatInputCommand() && !interaction.user.bot && - interaction.guild && - interaction.channel?.type !== "DM" + interaction.inGuild() ); -} +} \ No newline at end of file diff --git a/src/manager/modules/ready.ts b/src/manager/modules/ready.ts index 2c59f785..44164ef9 100644 --- a/src/manager/modules/ready.ts +++ b/src/manager/modules/ready.ts @@ -1,31 +1,27 @@ -import { ActivityType, REST, Routes } from "discord.js"; +import { ActivityType, Routes } from "discord.js"; import { Logger } from "@components/Logger"; -import type { Bot } from "@components/Bot"; import { commands as musicCmds } from "commands/music"; import { commands as infoCmds } from "commands/info"; import { commands as utilCmds } from "commands/utility"; import { config } from "@components/config"; import { AuthTypes } from "@common/types"; - -let auth: AuthTypes; -export const commands = [...musicCmds, ...infoCmds, ...utilCmds]; +import { Bot } from "@components/Bot"; export async function ready(client: Bot): Promise { client.once("ready", async (): Promise => { Logger.log({ type: "STARTUP", msg: "Music Bot has initialized." }); - auth = { + await registerCommands(); + setupAutomaticPresence(client); + }); + + async function registerCommands(): Promise { + const commands = [...musicCmds, ...infoCmds, ...utilCmds]; + const auth: AuthTypes = { TOKEN: client.debug ? config.DEVTOKEN : config.TOKEN, CLIENT_ID: client.debug ? config.DEVID : config.CLIENT_ID, }; - const rest = new REST().setToken(auth.TOKEN); - - await registerCommands(rest); - setupAutomaticPresence(client); - }); - - async function registerCommands(rest: REST): Promise { try { // Add commands to Bot's commands collection for (let i = 0; i < commands.length; i++) { @@ -34,7 +30,7 @@ export async function ready(client: Bot): Promise { }; // Register on the Discord API - await rest.put(Routes.applicationCommands(auth.CLIENT_ID), { + await client.rest.put(Routes.applicationCommands(auth.CLIENT_ID), { body: commands.map((cmd) => cmd.data.toJSON()) }); Logger.log({ type: "SLASHCMDS", msg: `Successfully registered ${commands.length} commands on Discord.` }); @@ -47,14 +43,14 @@ export async function ready(client: Bot): Promise { let state = 0; setInterval(async () => { - const presences: [{ type: ActivityType, message: string }] = [ - { type: ActivityType.Listening, message: `to music.` }, + const presences: [{ type: ActivityType.Listening, message: string }] = [ + { type: ActivityType.Listening, message: `music.` }, ]; state = (state + 1) % presences.length; const presence = presences[state]; - client.user?.setActivity(presence.message, { type: presence.type }); + client.user?.setActivity({ name: presence.message, type: presence.type }); }, 10000); } }