├── .circleci └── config.yml ├── .env.example ├── .eslintignore ├── .eslintrc.json ├── .github ├── CODEOWNERS ├── ISSUE_TEMPLATE │ └── bug-report.md ├── PULL_REQUEST_TEMPLATE.md ├── dependabot.yml └── workflows │ ├── ESLint.yml │ └── develop.yml ├── .gitignore ├── LICENSE ├── README.md ├── SECURITY.MD ├── client.js ├── deploy.js ├── index.js ├── package-lock.json ├── package.json ├── src ├── commands │ ├── interaction │ │ ├── afk.js │ │ ├── avatar.js │ │ ├── eval.js │ │ ├── genshin.js │ │ ├── help.js │ │ ├── mal.js │ │ ├── osu.js │ │ ├── ping.js │ │ ├── serverinfo.js │ │ ├── stats.js │ │ ├── userinfo.js │ │ └── weather.js │ └── message │ │ ├── admin │ │ ├── ban.js │ │ ├── kick.js │ │ ├── mute.js │ │ ├── say.js │ │ ├── unmute.js │ │ ├── user.js │ │ └── warn.js │ │ ├── general │ │ ├── add.js │ │ ├── end.js │ │ ├── register.js │ │ └── reroll.js │ │ └── moderation │ │ └── nickname.js ├── data │ ├── afk.json │ ├── config.example.json │ └── ga.json └── structures │ ├── dmMessage.js │ ├── events.js │ ├── handler.js │ ├── interactionCreate.js │ ├── messageCreate.js │ ├── presenceUpdate.js │ └── ready.js └── start.bat /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2.1 2 | 3 | jobs: 4 | lint: 5 | docker: 6 | - image: cimg/node:16.20.2 7 | steps: 8 | - checkout 9 | - run: npm ci 10 | - run: npm test 11 | 12 | workflows: 13 | lint: 14 | jobs: 15 | - lint 16 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | # NOTE : RENAME THIS TO .ENV 2 | 3 | # REQUIRED VAL 4 | 5 | CLIENT_TOKEN=CLIENT_TOKEN 6 | 7 | PREFIX=CLIENT_PREFIX 8 | 9 | SERVERID=YOUR_GUILD_ID 10 | 11 | DISCORDLINK=YOUR_GUILD_LINK 12 | 13 | OWNERID=OWNER_ID 14 | 15 | # OPTIONAL VAL 16 | 17 | CHANNELLOGID=CHANNEL_ID 18 | 19 | CHANNELLOGPRIVATE=CHANNEL_ID 20 | 21 | OSU_API=OSU_API 22 | 23 | GENERALCHAT=CHANNEL_ID 24 | 25 | EVERYONE_ID=ROLE_ID 26 | 27 | MOD_ROLE=ROLE_ID 28 | 29 | MUTE_ROLE=ROLE_ID 30 | 31 | REGISTER_ID=ROLE_ID 32 | 33 | UNREGISTER_ID=ROLE_ID 34 | 35 | activityRole1=ROLE_ID 36 | 37 | activityRole2=ROLE_ID 38 | 39 | activityRole3=ROLE_ID 40 | 41 | activityRole4=ROLE_ID 42 | 43 | activityRole5=ROLE_ID 44 | 45 | activityRole6=ROLE_ID 46 | 47 | # DO NOT CHANGE 48 | 49 | DEFAULT_ERROR="**[0] - Error !!**" -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | .gitignore 2 | .env 3 | cfg.js -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "node": true, 4 | "commonjs": true, 5 | "es2021": true 6 | }, 7 | "extends": "eslint:recommended", 8 | "parserOptions": { 9 | "ecmaVersion": 12 10 | }, 11 | "rules": { 12 | "arrow-parens": ["warn", "as-needed"], 13 | "comma-dangle": ["warn", "never"], 14 | "comma-style": ["warn", "last"], 15 | "eol-last": ["warn", "always"], 16 | "indent": ["warn", 4, { 17 | "MemberExpression": 0, 18 | "SwitchCase": 1 19 | }], 20 | "keyword-spacing": ["warn", { 21 | "after": true, 22 | "before": true 23 | }], 24 | "no-multiple-empty-lines": ["warn", { 25 | "max": 1, 26 | "maxEOF": 0 27 | }], 28 | "no-trailing-spaces": 1, 29 | "no-unused-vars": 1, 30 | "no-useless-escape": 0, 31 | "quotes": ["warn", "single"], 32 | "semi": 1, 33 | "semi-style": ["warn", "last"] 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @Muunatic 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug-report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Report here if you find a bug 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. 16 | 2. 17 | 3. 18 | 19 | **Expected behavior** 20 | A clear and concise description of what you expected to happen. 21 | 22 | **Version** 23 | - Node.JS: v16.x.x 24 | - NPM: v8.x.x 25 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## Changes 2 | 3 | 4 | ## Status 5 | 6 | 7 | - [ ] Follow the installation from **README**. 8 | - [ ] Run npm test. 9 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "npm" 4 | directory: "/" 5 | schedule: 6 | interval: "daily" 7 | time: "07:00" 8 | timezone: "Asia/Jakarta" 9 | open-pull-requests-limit: 20 10 | target-branch: "develop" 11 | labels: 12 | - "dependencies" 13 | commit-message: 14 | prefix: "chore" 15 | include: "scope" 16 | ignore: 17 | - dependency-name: "discord.js" 18 | update-types: ["version-update:semver-major"] 19 | - dependency-name: "@discordjs/builders" 20 | update-types: ["version-update:semver-major"] 21 | - dependency-name: "@discordjs/rest" 22 | update-types: ["version-update:semver-major"] 23 | - dependency-name: "discord-api-types" 24 | update-types: ["version-update:semver-major"] 25 | - dependency-name: "discord-giveaways" 26 | update-types: ["version-update:semver-major"] 27 | - dependency-name: "eslint" 28 | update-types: ["version-update:semver-major"] 29 | -------------------------------------------------------------------------------- /.github/workflows/ESLint.yml: -------------------------------------------------------------------------------- 1 | name: ESLint 2 | 3 | on: 4 | push: 5 | branches: [ v5 ] 6 | pull_request: 7 | branches: [ v5 ] 8 | 9 | jobs: 10 | lint: 11 | runs-on: windows-latest 12 | strategy: 13 | matrix: 14 | node-version: [16.20.2] 15 | steps: 16 | - uses: actions/checkout@v3 17 | - name: Use Node.js ${{ matrix.node-version }} 18 | uses: actions/setup-node@v3 19 | with: 20 | node-version: ${{ matrix.node-version }} 21 | - name: install npm 22 | run: npm install npm@8.19.3 -g 23 | - name: install dependencies 24 | run: npm ci 25 | - name: run lint 26 | run: npm test 27 | -------------------------------------------------------------------------------- /.github/workflows/develop.yml: -------------------------------------------------------------------------------- 1 | name: ESLint develop 2 | 3 | on: 4 | push: 5 | branches: [ develop ] 6 | pull_request: 7 | branches: [ develop ] 8 | 9 | jobs: 10 | lint: 11 | runs-on: windows-latest 12 | strategy: 13 | matrix: 14 | node-version: [16.20.2] 15 | steps: 16 | - uses: actions/checkout@v3 17 | - name: Use Node.js ${{ matrix.node-version }} 18 | uses: actions/setup-node@v3 19 | with: 20 | node-version: ${{ matrix.node-version }} 21 | - name: install npm 22 | run: npm install npm@8.19.3 -g 23 | - name: install dependencies 24 | run: npm ci 25 | - name: run lint 26 | run: npm test 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # modules 2 | node_modules 3 | 4 | # env 5 | .env 6 | 7 | # clientcfg 8 | config.json 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | © 2021 - 2024 Muunatic. All Rights Reserved. 2 | 3 | This file is part of the RyU project. 4 | The RyU project can not be distributed without the express permission of Muunatic. 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | *** 2 | 3 |

4 | 5 |

6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | *** 15 | 16 |

RyU

17 |

Powerful Discord Automaton written in JavaScript. Lightweight, Efficient, Feature-rich.

18 | 19 | # Requirements 20 | 21 | |Tools|Version| 22 | |-|-| 23 | |**Node.JS**|**>=16.20.2**| 24 | |**NPM**|**>=8.19.4**| 25 | 26 | ## How to use 27 | 28 | 1. Install all dependencies, or you can ignore the optional dependencies if you prefer: 29 | ``` 30 | npm install 31 | 32 | # or 33 | 34 | npm install --no-optional 35 | ``` 36 | 2. Rename **.env.example** to **.env** and populate it with all the necessary values: 37 | ``` 38 | .env.example > .env 39 | ``` 40 | 3. Similarly, rename **config.json.example** to **config.json** and provide the required values: 41 | ``` 42 | Rename config.json.example to config.json and complete all the available values. 43 | ``` 44 | 4. After completing the above steps, execute **npm run deploy** to register your slash command with the REST API: 45 | ``` 46 | npm run deploy 47 | ``` 48 | 5. Lastly, run **npm start** to launch your client: 49 | ``` 50 | npm start 51 | ``` 52 | 53 | ## Security 54 | 55 | |Version|Vulnerability| 56 | |-|-| 57 | |5.5.x|:white_check_mark:| 58 | |5.4.x|:x:| 59 | |5.3.x|:x:| 60 | |5.2.x|:x:| 61 | |5.1.x|:x:| 62 | |5.0.x|:x:| 63 | 64 | Click [here](https://github.com/Muunatic/RyU/security/policy) for more info. 65 | 66 | ## Disclaimer 67 | 68 | This file is part of the RyU project. 69 | 70 | The RyU project can not be distributed without the express permission of Muunatic. 71 | -------------------------------------------------------------------------------- /SECURITY.MD: -------------------------------------------------------------------------------- 1 | # Vulnerability 2 | 3 | |Version|Vulnerability| 4 | |-|-| 5 | |5.5.3|:white_check_mark:| 6 | |5.5.2|:x:| 7 | |5.5.1-1|:x:| 8 | |5.5.1|:x:| 9 | |5.5.0|:x:| 10 | |5.4.1-2|:x:| 11 | |5.4.1-1|:x:| 12 | |5.4.1|:x:| 13 | |5.4.0|:x:| 14 | |5.3.0|:x:| 15 | |5.2.2|:x:| 16 | |5.2.1|:x:| 17 | |5.2.0|:x:| 18 | |5.1.1|:x:| 19 | |5.1.0|:x:| 20 | |5.0.3|:x:| 21 | |5.0.2|:x:| 22 | |5.0.1|:x:| 23 | |5.0.0|:x:| 24 | 25 | Please report security issues to [Muunatic](mailto:muunatic@typeslint.com) 26 | -------------------------------------------------------------------------------- /client.js: -------------------------------------------------------------------------------- 1 | const { Client, Intents, Message, CommandInteraction } = require('discord.js'); 2 | 3 | require('dotenv').config(); 4 | 5 | const client = new Client({ 6 | 7 | intents: [ 8 | Intents.FLAGS.DIRECT_MESSAGES, 9 | Intents.FLAGS.DIRECT_MESSAGE_REACTIONS, 10 | Intents.FLAGS.DIRECT_MESSAGE_TYPING, 11 | Intents.FLAGS.GUILDS, 12 | Intents.FLAGS.GUILD_BANS, 13 | Intents.FLAGS.GUILD_EMOJIS_AND_STICKERS, 14 | Intents.FLAGS.GUILD_INTEGRATIONS, 15 | Intents.FLAGS.GUILD_INVITES, 16 | Intents.FLAGS.GUILD_MEMBERS, 17 | Intents.FLAGS.GUILD_MESSAGES, 18 | Intents.FLAGS.GUILD_MESSAGE_REACTIONS, 19 | Intents.FLAGS.GUILD_MESSAGE_TYPING, 20 | Intents.FLAGS.GUILD_PRESENCES, 21 | Intents.FLAGS.GUILD_VOICE_STATES, 22 | Intents.FLAGS.GUILD_WEBHOOKS 23 | ], 24 | 25 | partials: [ 26 | 'CHANNEL', 27 | 'GUILD_MEMBER', 28 | 'GUILD_SCHEDULED_EVENT', 29 | 'MESSAGE', 30 | 'REACTION', 31 | 'USER' 32 | ] 33 | 34 | }); 35 | 36 | const packageJson = require('./package.json'); 37 | 38 | const { GiveawaysManager } = require('discord-giveaways'); 39 | const manager = new GiveawaysManager(client, { 40 | storage: './src/data/ga.json', 41 | updateCountdownEvery: 10000, 42 | hasGuildMembersIntent: true, 43 | default: { 44 | botsCanWin: false, 45 | embedColor: '#89E0DC', 46 | embedColorEnd: '#FF0000', 47 | reaction: '🎉' 48 | } 49 | }); 50 | 51 | client.giveawaysManager = manager; 52 | 53 | const messageInstance = Message.prototype; 54 | const interactionInstance = CommandInteraction.prototype; 55 | 56 | module.exports = { 57 | client: client, 58 | message: messageInstance, 59 | interaction: interactionInstance, 60 | manager: manager, 61 | packageJson: packageJson 62 | }; 63 | -------------------------------------------------------------------------------- /deploy.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const { REST } = require('@discordjs/rest'); 3 | const { Routes } = require('discord-api-types/v10'); 4 | const { token, clientId } = require('./src/data/config.json'); 5 | 6 | const commands = [].map(command => command.toJSON()); 7 | 8 | const commandFiles = fs.readdirSync('./src/commands/interaction').filter(file => file.endsWith('.js')); 9 | for (const file of commandFiles) { 10 | const command = require(`./src/commands/interaction/${file}`); 11 | commands.push(command.data.toJSON()); 12 | } 13 | 14 | const rest = new REST({ version: '10' }).setToken(token); 15 | 16 | (async () => { 17 | 18 | try { 19 | console.log('Refreshing...'); 20 | await rest.put(Routes.applicationCommands(clientId), { body: commands }); 21 | console.log('Deployed!'); 22 | } catch (error) { 23 | console.error(error); 24 | } 25 | 26 | })(); 27 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const { client } = require('./client'); 2 | 3 | require('./client'); 4 | require('./src/structures/handler'); 5 | require('./src/structures/ready'); 6 | require('./src/structures/events'); 7 | require('./src/structures/presenceUpdate'); 8 | require('./src/structures/interactionCreate'); 9 | require('./src/structures/messageCreate'); 10 | require('./src/structures/dmMessage'); 11 | 12 | client.login(process.env.CLIENT_TOKEN); 13 | console.log('Starting client'); 14 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ryu", 3 | "version": "5.5.3", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "ryu", 9 | "version": "5.5.3", 10 | "license": "UNLICENSED", 11 | "dependencies": { 12 | "@discordjs/builders": "^1.10.1", 13 | "@discordjs/rest": "^1.7.1", 14 | "cpu-stat": "^2.0.1", 15 | "discord-api-types": "^0.37.119", 16 | "discord-giveaways": "^5.2.2", 17 | "discord.js": "^13.17.1", 18 | "dotenv": "^16.4.7", 19 | "genshin-db": "^5.2.0", 20 | "mal-scraper": "^2.13.2", 21 | "moment": "^2.30.1", 22 | "moment-timezone": "^0.5.48", 23 | "ms": "^2.1.3", 24 | "msn-weather-api": "^0.3.1", 25 | "node-osu": "^2.2.1" 26 | }, 27 | "devDependencies": { 28 | "eslint": "^8.57.1" 29 | }, 30 | "engines": { 31 | "node": ">=16.20.2", 32 | "npm": ">=8.19.4" 33 | } 34 | }, 35 | "node_modules/@aashutoshrathi/word-wrap": { 36 | "version": "1.2.6", 37 | "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", 38 | "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", 39 | "dev": true, 40 | "engines": { 41 | "node": ">=0.10.0" 42 | } 43 | }, 44 | "node_modules/@babel/runtime": { 45 | "version": "7.27.0", 46 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", 47 | "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", 48 | "license": "MIT", 49 | "dependencies": { 50 | "regenerator-runtime": "^0.14.0" 51 | }, 52 | "engines": { 53 | "node": ">=6.9.0" 54 | } 55 | }, 56 | "node_modules/@discordjs/builders": { 57 | "version": "1.10.1", 58 | "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.10.1.tgz", 59 | "integrity": "sha512-OWo1fY4ztL1/M/DUyRPShB4d/EzVfuUvPTRRHRIt/YxBrUYSz0a+JicD5F5zHFoNs2oTuWavxCOVFV1UljHTng==", 60 | "license": "Apache-2.0", 61 | "dependencies": { 62 | "@discordjs/formatters": "^0.6.0", 63 | "@discordjs/util": "^1.1.1", 64 | "@sapphire/shapeshift": "^4.0.0", 65 | "discord-api-types": "^0.37.119", 66 | "fast-deep-equal": "^3.1.3", 67 | "ts-mixer": "^6.0.4", 68 | "tslib": "^2.6.3" 69 | }, 70 | "engines": { 71 | "node": ">=16.11.0" 72 | }, 73 | "funding": { 74 | "url": "https://github.com/discordjs/discord.js?sponsor" 75 | } 76 | }, 77 | "node_modules/@discordjs/builders/node_modules/@sapphire/shapeshift": { 78 | "version": "4.0.0", 79 | "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-4.0.0.tgz", 80 | "integrity": "sha512-d9dUmWVA7MMiKobL3VpLF8P2aeanRTu6ypG2OIaEv/ZHH/SUQ2iHOVyi5wAPjQ+HmnMuL0whK9ez8I/raWbtIg==", 81 | "dependencies": { 82 | "fast-deep-equal": "^3.1.3", 83 | "lodash": "^4.17.21" 84 | }, 85 | "engines": { 86 | "node": ">=v16" 87 | } 88 | }, 89 | "node_modules/@discordjs/collection": { 90 | "version": "0.7.0", 91 | "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.7.0.tgz", 92 | "integrity": "sha512-R5i8Wb8kIcBAFEPLLf7LVBQKBDYUL+ekb23sOgpkpyGT+V4P7V83wTxcsqmX+PbqHt4cEHn053uMWfRqh/Z/nA==", 93 | "deprecated": "no longer supported", 94 | "engines": { 95 | "node": ">=16.9.0" 96 | } 97 | }, 98 | "node_modules/@discordjs/formatters": { 99 | "version": "0.6.0", 100 | "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.6.0.tgz", 101 | "integrity": "sha512-YIruKw4UILt/ivO4uISmrGq2GdMY6EkoTtD0oS0GvkJFRZbTSdPhzYiUILbJ/QslsvC9H9nTgGgnarnIl4jMfw==", 102 | "license": "Apache-2.0", 103 | "dependencies": { 104 | "discord-api-types": "^0.37.114" 105 | }, 106 | "engines": { 107 | "node": ">=16.11.0" 108 | }, 109 | "funding": { 110 | "url": "https://github.com/discordjs/discord.js?sponsor" 111 | } 112 | }, 113 | "node_modules/@discordjs/rest": { 114 | "version": "1.7.1", 115 | "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.7.1.tgz", 116 | "integrity": "sha512-Ofa9UqT0U45G/eX86cURQnX7gzOJLG2oC28VhIk/G6IliYgQF7jFByBJEykPSHE4MxPhqCleYvmsrtfKh1nYmQ==", 117 | "dependencies": { 118 | "@discordjs/collection": "^1.5.1", 119 | "@discordjs/util": "^0.3.0", 120 | "@sapphire/async-queue": "^1.5.0", 121 | "@sapphire/snowflake": "^3.4.2", 122 | "discord-api-types": "^0.37.41", 123 | "file-type": "^18.3.0", 124 | "tslib": "^2.5.0", 125 | "undici": "^5.22.0" 126 | }, 127 | "engines": { 128 | "node": ">=16.9.0" 129 | } 130 | }, 131 | "node_modules/@discordjs/rest/node_modules/@discordjs/collection": { 132 | "version": "1.5.3", 133 | "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.3.tgz", 134 | "integrity": "sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==", 135 | "engines": { 136 | "node": ">=16.11.0" 137 | } 138 | }, 139 | "node_modules/@discordjs/rest/node_modules/@discordjs/util": { 140 | "version": "0.3.1", 141 | "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-0.3.1.tgz", 142 | "integrity": "sha512-HxXKYKg7vohx2/OupUN/4Sd02Ev3PBJ5q0gtjdcvXb0ErCva8jNHWfe/v5sU3UKjIB/uxOhc+TDOnhqffj9pRA==", 143 | "engines": { 144 | "node": ">=16.9.0" 145 | } 146 | }, 147 | "node_modules/@discordjs/util": { 148 | "version": "1.1.1", 149 | "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-1.1.1.tgz", 150 | "integrity": "sha512-eddz6UnOBEB1oITPinyrB2Pttej49M9FZQY8NxgEvc3tq6ZICZ19m70RsmzRdDHk80O9NoYN/25AqJl8vPVf/g==", 151 | "engines": { 152 | "node": ">=18" 153 | }, 154 | "funding": { 155 | "url": "https://github.com/discordjs/discord.js?sponsor" 156 | } 157 | }, 158 | "node_modules/@eslint-community/eslint-utils": { 159 | "version": "4.4.0", 160 | "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", 161 | "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", 162 | "dev": true, 163 | "dependencies": { 164 | "eslint-visitor-keys": "^3.3.0" 165 | }, 166 | "engines": { 167 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 168 | }, 169 | "peerDependencies": { 170 | "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" 171 | } 172 | }, 173 | "node_modules/@eslint-community/regexpp": { 174 | "version": "4.10.0", 175 | "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", 176 | "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", 177 | "dev": true, 178 | "engines": { 179 | "node": "^12.0.0 || ^14.0.0 || >=16.0.0" 180 | } 181 | }, 182 | "node_modules/@eslint/eslintrc": { 183 | "version": "2.1.4", 184 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", 185 | "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", 186 | "dev": true, 187 | "dependencies": { 188 | "ajv": "^6.12.4", 189 | "debug": "^4.3.2", 190 | "espree": "^9.6.0", 191 | "globals": "^13.19.0", 192 | "ignore": "^5.2.0", 193 | "import-fresh": "^3.2.1", 194 | "js-yaml": "^4.1.0", 195 | "minimatch": "^3.1.2", 196 | "strip-json-comments": "^3.1.1" 197 | }, 198 | "engines": { 199 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 200 | }, 201 | "funding": { 202 | "url": "https://opencollective.com/eslint" 203 | } 204 | }, 205 | "node_modules/@eslint/js": { 206 | "version": "8.57.1", 207 | "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", 208 | "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", 209 | "dev": true, 210 | "engines": { 211 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 212 | } 213 | }, 214 | "node_modules/@fastify/busboy": { 215 | "version": "2.1.1", 216 | "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", 217 | "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", 218 | "engines": { 219 | "node": ">=14" 220 | } 221 | }, 222 | "node_modules/@humanwhocodes/config-array": { 223 | "version": "0.13.0", 224 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", 225 | "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", 226 | "deprecated": "Use @eslint/config-array instead", 227 | "dev": true, 228 | "dependencies": { 229 | "@humanwhocodes/object-schema": "^2.0.3", 230 | "debug": "^4.3.1", 231 | "minimatch": "^3.0.5" 232 | }, 233 | "engines": { 234 | "node": ">=10.10.0" 235 | } 236 | }, 237 | "node_modules/@humanwhocodes/module-importer": { 238 | "version": "1.0.1", 239 | "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 240 | "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 241 | "dev": true, 242 | "engines": { 243 | "node": ">=12.22" 244 | }, 245 | "funding": { 246 | "type": "github", 247 | "url": "https://github.com/sponsors/nzakas" 248 | } 249 | }, 250 | "node_modules/@humanwhocodes/object-schema": { 251 | "version": "2.0.3", 252 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", 253 | "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", 254 | "deprecated": "Use @eslint/object-schema instead", 255 | "dev": true 256 | }, 257 | "node_modules/@nodelib/fs.scandir": { 258 | "version": "2.1.5", 259 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 260 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 261 | "dev": true, 262 | "dependencies": { 263 | "@nodelib/fs.stat": "2.0.5", 264 | "run-parallel": "^1.1.9" 265 | }, 266 | "engines": { 267 | "node": ">= 8" 268 | } 269 | }, 270 | "node_modules/@nodelib/fs.stat": { 271 | "version": "2.0.5", 272 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 273 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 274 | "dev": true, 275 | "engines": { 276 | "node": ">= 8" 277 | } 278 | }, 279 | "node_modules/@nodelib/fs.walk": { 280 | "version": "1.2.8", 281 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 282 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 283 | "dev": true, 284 | "dependencies": { 285 | "@nodelib/fs.scandir": "2.1.5", 286 | "fastq": "^1.6.0" 287 | }, 288 | "engines": { 289 | "node": ">= 8" 290 | } 291 | }, 292 | "node_modules/@sapphire/async-queue": { 293 | "version": "1.5.0", 294 | "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.0.tgz", 295 | "integrity": "sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==", 296 | "engines": { 297 | "node": ">=v14.0.0", 298 | "npm": ">=7.0.0" 299 | } 300 | }, 301 | "node_modules/@sapphire/shapeshift": { 302 | "version": "3.9.7", 303 | "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.9.7.tgz", 304 | "integrity": "sha512-4It2mxPSr4OGn4HSQWGmhFMsNFGfFVhWeRPCRwbH972Ek2pzfGRZtb0pJ4Ze6oIzcyh2jw7nUDa6qGlWofgd9g==", 305 | "dependencies": { 306 | "fast-deep-equal": "^3.1.3", 307 | "lodash": "^4.17.21" 308 | }, 309 | "engines": { 310 | "node": ">=v16" 311 | } 312 | }, 313 | "node_modules/@sapphire/snowflake": { 314 | "version": "3.5.1", 315 | "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.5.1.tgz", 316 | "integrity": "sha512-BxcYGzgEsdlG0dKAyOm0ehLGm2CafIrfQTZGWgkfKYbj+pNNsorZ7EotuZukc2MT70E0UbppVbtpBrqpzVzjNA==", 317 | "engines": { 318 | "node": ">=v14.0.0", 319 | "npm": ">=7.0.0" 320 | } 321 | }, 322 | "node_modules/@tokenizer/token": { 323 | "version": "0.3.0", 324 | "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", 325 | "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" 326 | }, 327 | "node_modules/@types/node": { 328 | "version": "20.3.3", 329 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.3.tgz", 330 | "integrity": "sha512-wheIYdr4NYML61AjC8MKj/2jrR/kDQri/CIpVoZwldwhnIrD/j9jIU5bJ8yBKuB2VhpFV7Ab6G2XkBjv9r9Zzw==" 331 | }, 332 | "node_modules/@types/node-fetch": { 333 | "version": "2.6.4", 334 | "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.4.tgz", 335 | "integrity": "sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==", 336 | "dependencies": { 337 | "@types/node": "*", 338 | "form-data": "^3.0.0" 339 | } 340 | }, 341 | "node_modules/@types/node-fetch/node_modules/form-data": { 342 | "version": "3.0.1", 343 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", 344 | "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", 345 | "dependencies": { 346 | "asynckit": "^0.4.0", 347 | "combined-stream": "^1.0.8", 348 | "mime-types": "^2.1.12" 349 | }, 350 | "engines": { 351 | "node": ">= 6" 352 | } 353 | }, 354 | "node_modules/@types/ws": { 355 | "version": "8.5.5", 356 | "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", 357 | "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", 358 | "dependencies": { 359 | "@types/node": "*" 360 | } 361 | }, 362 | "node_modules/@ungap/structured-clone": { 363 | "version": "1.2.0", 364 | "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", 365 | "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", 366 | "dev": true 367 | }, 368 | "node_modules/acorn": { 369 | "version": "8.11.3", 370 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", 371 | "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", 372 | "dev": true, 373 | "bin": { 374 | "acorn": "bin/acorn" 375 | }, 376 | "engines": { 377 | "node": ">=0.4.0" 378 | } 379 | }, 380 | "node_modules/acorn-jsx": { 381 | "version": "5.3.2", 382 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 383 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 384 | "dev": true, 385 | "peerDependencies": { 386 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 387 | } 388 | }, 389 | "node_modules/ajv": { 390 | "version": "6.12.6", 391 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 392 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 393 | "dev": true, 394 | "dependencies": { 395 | "fast-deep-equal": "^3.1.1", 396 | "fast-json-stable-stringify": "^2.0.0", 397 | "json-schema-traverse": "^0.4.1", 398 | "uri-js": "^4.2.2" 399 | }, 400 | "funding": { 401 | "type": "github", 402 | "url": "https://github.com/sponsors/epoberezkin" 403 | } 404 | }, 405 | "node_modules/ansi-regex": { 406 | "version": "5.0.1", 407 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 408 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 409 | "dev": true, 410 | "engines": { 411 | "node": ">=8" 412 | } 413 | }, 414 | "node_modules/ansi-styles": { 415 | "version": "4.3.0", 416 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 417 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 418 | "dev": true, 419 | "dependencies": { 420 | "color-convert": "^2.0.1" 421 | }, 422 | "engines": { 423 | "node": ">=8" 424 | }, 425 | "funding": { 426 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 427 | } 428 | }, 429 | "node_modules/argparse": { 430 | "version": "2.0.1", 431 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 432 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 433 | "dev": true 434 | }, 435 | "node_modules/asynckit": { 436 | "version": "0.4.0", 437 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 438 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 439 | }, 440 | "node_modules/axios": { 441 | "version": "1.8.4", 442 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", 443 | "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", 444 | "license": "MIT", 445 | "dependencies": { 446 | "follow-redirects": "^1.15.6", 447 | "form-data": "^4.0.0", 448 | "proxy-from-env": "^1.1.0" 449 | } 450 | }, 451 | "node_modules/balanced-match": { 452 | "version": "1.0.2", 453 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 454 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 455 | "dev": true 456 | }, 457 | "node_modules/boolbase": { 458 | "version": "1.0.0", 459 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", 460 | "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" 461 | }, 462 | "node_modules/brace-expansion": { 463 | "version": "1.1.11", 464 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 465 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 466 | "dev": true, 467 | "dependencies": { 468 | "balanced-match": "^1.0.0", 469 | "concat-map": "0.0.1" 470 | } 471 | }, 472 | "node_modules/call-bind": { 473 | "version": "1.0.2", 474 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 475 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 476 | "dependencies": { 477 | "function-bind": "^1.1.1", 478 | "get-intrinsic": "^1.0.2" 479 | }, 480 | "funding": { 481 | "url": "https://github.com/sponsors/ljharb" 482 | } 483 | }, 484 | "node_modules/callsites": { 485 | "version": "3.1.0", 486 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 487 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 488 | "dev": true, 489 | "engines": { 490 | "node": ">=6" 491 | } 492 | }, 493 | "node_modules/chalk": { 494 | "version": "4.1.2", 495 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 496 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 497 | "dev": true, 498 | "dependencies": { 499 | "ansi-styles": "^4.1.0", 500 | "supports-color": "^7.1.0" 501 | }, 502 | "engines": { 503 | "node": ">=10" 504 | }, 505 | "funding": { 506 | "url": "https://github.com/chalk/chalk?sponsor=1" 507 | } 508 | }, 509 | "node_modules/cheerio": { 510 | "version": "1.0.0-rc.12", 511 | "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", 512 | "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", 513 | "dependencies": { 514 | "cheerio-select": "^2.1.0", 515 | "dom-serializer": "^2.0.0", 516 | "domhandler": "^5.0.3", 517 | "domutils": "^3.0.1", 518 | "htmlparser2": "^8.0.1", 519 | "parse5": "^7.0.0", 520 | "parse5-htmlparser2-tree-adapter": "^7.0.0" 521 | }, 522 | "engines": { 523 | "node": ">= 6" 524 | }, 525 | "funding": { 526 | "url": "https://github.com/cheeriojs/cheerio?sponsor=1" 527 | } 528 | }, 529 | "node_modules/cheerio-select": { 530 | "version": "2.1.0", 531 | "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", 532 | "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", 533 | "dependencies": { 534 | "boolbase": "^1.0.0", 535 | "css-select": "^5.1.0", 536 | "css-what": "^6.1.0", 537 | "domelementtype": "^2.3.0", 538 | "domhandler": "^5.0.3", 539 | "domutils": "^3.0.1" 540 | }, 541 | "funding": { 542 | "url": "https://github.com/sponsors/fb55" 543 | } 544 | }, 545 | "node_modules/color-convert": { 546 | "version": "2.0.1", 547 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 548 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 549 | "dev": true, 550 | "dependencies": { 551 | "color-name": "~1.1.4" 552 | }, 553 | "engines": { 554 | "node": ">=7.0.0" 555 | } 556 | }, 557 | "node_modules/color-name": { 558 | "version": "1.1.4", 559 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 560 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 561 | "dev": true 562 | }, 563 | "node_modules/combined-stream": { 564 | "version": "1.0.8", 565 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 566 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 567 | "dependencies": { 568 | "delayed-stream": "~1.0.0" 569 | }, 570 | "engines": { 571 | "node": ">= 0.8" 572 | } 573 | }, 574 | "node_modules/component-emitter": { 575 | "version": "1.3.0", 576 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", 577 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" 578 | }, 579 | "node_modules/concat-map": { 580 | "version": "0.0.1", 581 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 582 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 583 | "dev": true 584 | }, 585 | "node_modules/cookiejar": { 586 | "version": "2.1.4", 587 | "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", 588 | "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==" 589 | }, 590 | "node_modules/cpu-stat": { 591 | "version": "2.0.1", 592 | "resolved": "https://registry.npmjs.org/cpu-stat/-/cpu-stat-2.0.1.tgz", 593 | "integrity": "sha512-bC4ts/0IjYfNV6Dc7F2NauWM0tip0fneZjRek8HqX2ZERC4oSt6dmV+GTN1mfE9OKbLAppv58M2PVzKLGB731w==" 594 | }, 595 | "node_modules/cross-spawn": { 596 | "version": "7.0.6", 597 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 598 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 599 | "dev": true, 600 | "license": "MIT", 601 | "dependencies": { 602 | "path-key": "^3.1.0", 603 | "shebang-command": "^2.0.0", 604 | "which": "^2.0.1" 605 | }, 606 | "engines": { 607 | "node": ">= 8" 608 | } 609 | }, 610 | "node_modules/css-select": { 611 | "version": "5.1.0", 612 | "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", 613 | "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", 614 | "dependencies": { 615 | "boolbase": "^1.0.0", 616 | "css-what": "^6.1.0", 617 | "domhandler": "^5.0.2", 618 | "domutils": "^3.0.1", 619 | "nth-check": "^2.0.1" 620 | }, 621 | "funding": { 622 | "url": "https://github.com/sponsors/fb55" 623 | } 624 | }, 625 | "node_modules/css-what": { 626 | "version": "6.1.0", 627 | "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", 628 | "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", 629 | "engines": { 630 | "node": ">= 6" 631 | }, 632 | "funding": { 633 | "url": "https://github.com/sponsors/fb55" 634 | } 635 | }, 636 | "node_modules/debug": { 637 | "version": "4.3.4", 638 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 639 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 640 | "dependencies": { 641 | "ms": "2.1.2" 642 | }, 643 | "engines": { 644 | "node": ">=6.0" 645 | }, 646 | "peerDependenciesMeta": { 647 | "supports-color": { 648 | "optional": true 649 | } 650 | } 651 | }, 652 | "node_modules/debug/node_modules/ms": { 653 | "version": "2.1.2", 654 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 655 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 656 | }, 657 | "node_modules/deep-is": { 658 | "version": "0.1.4", 659 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 660 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 661 | "dev": true 662 | }, 663 | "node_modules/deepmerge-ts": { 664 | "version": "4.3.0", 665 | "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-4.3.0.tgz", 666 | "integrity": "sha512-if3ZYdkD2dClhnXR5reKtG98cwyaRT1NeugQoAPTTfsOpV9kqyeiBF9Qa5RHjemb3KzD5ulqygv6ED3t5j9eJw==", 667 | "engines": { 668 | "node": ">=12.4.0" 669 | } 670 | }, 671 | "node_modules/delayed-stream": { 672 | "version": "1.0.0", 673 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 674 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 675 | "engines": { 676 | "node": ">=0.4.0" 677 | } 678 | }, 679 | "node_modules/discord-api-types": { 680 | "version": "0.37.119", 681 | "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.119.tgz", 682 | "integrity": "sha512-WasbGFXEB+VQWXlo6IpW3oUv73Yuau1Ig4AZF/m13tXcTKnMpc/mHjpztIlz4+BM9FG9BHQkEXiPto3bKduQUg==", 683 | "license": "MIT" 684 | }, 685 | "node_modules/discord-giveaways": { 686 | "version": "5.2.2", 687 | "resolved": "https://registry.npmjs.org/discord-giveaways/-/discord-giveaways-5.2.2.tgz", 688 | "integrity": "sha512-aYUF1IiPdni+yxdSbPoUtQT5DmU9SOxmFjeuOJLF+4GUVewwT3o+V3tG3P5oJRc3yyYgzCiaWhFCXeHTu4YReA==", 689 | "dependencies": { 690 | "deepmerge-ts": "^4.0.3", 691 | "serialize-javascript": "^6.0.0" 692 | }, 693 | "engines": { 694 | "node": ">=16.6.0" 695 | }, 696 | "peerDependencies": { 697 | "discord.js": ">=13.5.0" 698 | } 699 | }, 700 | "node_modules/discord.js": { 701 | "version": "13.17.1", 702 | "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.17.1.tgz", 703 | "integrity": "sha512-h13kUf+7ZaP5ZWggzooCxFutvJJvugcAO54oTEIdVr3zQWi0Sf/61S1kETtuY9nVAyYebXR/Ey4C+oWbsgEkew==", 704 | "dependencies": { 705 | "@discordjs/builders": "^0.16.0", 706 | "@discordjs/collection": "^0.7.0", 707 | "@sapphire/async-queue": "^1.5.0", 708 | "@types/node-fetch": "^2.6.3", 709 | "@types/ws": "^8.5.4", 710 | "discord-api-types": "^0.33.5", 711 | "form-data": "^4.0.0", 712 | "node-fetch": "^2.6.7", 713 | "ws": "^8.13.0" 714 | }, 715 | "engines": { 716 | "node": ">=16.6.0", 717 | "npm": ">=7.0.0" 718 | } 719 | }, 720 | "node_modules/discord.js/node_modules/@discordjs/builders": { 721 | "version": "0.16.0", 722 | "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.16.0.tgz", 723 | "integrity": "sha512-9/NCiZrLivgRub2/kBc0Vm5pMBE5AUdYbdXsLu/yg9ANgvnaJ0bZKTY8yYnLbsEc/LYUP79lEIdC73qEYhWq7A==", 724 | "deprecated": "no longer supported", 725 | "dependencies": { 726 | "@sapphire/shapeshift": "^3.5.1", 727 | "discord-api-types": "^0.36.2", 728 | "fast-deep-equal": "^3.1.3", 729 | "ts-mixer": "^6.0.1", 730 | "tslib": "^2.4.0" 731 | }, 732 | "engines": { 733 | "node": ">=16.9.0" 734 | } 735 | }, 736 | "node_modules/discord.js/node_modules/@discordjs/builders/node_modules/discord-api-types": { 737 | "version": "0.36.3", 738 | "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.36.3.tgz", 739 | "integrity": "sha512-bz/NDyG0KBo/tY14vSkrwQ/n3HKPf87a0WFW/1M9+tXYK+vp5Z5EksawfCWo2zkAc6o7CClc0eff1Pjrqznlwg==" 740 | }, 741 | "node_modules/discord.js/node_modules/discord-api-types": { 742 | "version": "0.33.5", 743 | "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.5.tgz", 744 | "integrity": "sha512-dvO5M52v7m7Dy96+XUnzXNsQ/0npsYpU6dL205kAtEDueswoz3aU3bh1UMoK4cQmcGtB1YRyLKqp+DXi05lzFg==" 745 | }, 746 | "node_modules/doctrine": { 747 | "version": "3.0.0", 748 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 749 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 750 | "dev": true, 751 | "dependencies": { 752 | "esutils": "^2.0.2" 753 | }, 754 | "engines": { 755 | "node": ">=6.0.0" 756 | } 757 | }, 758 | "node_modules/dom-serializer": { 759 | "version": "2.0.0", 760 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", 761 | "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", 762 | "dependencies": { 763 | "domelementtype": "^2.3.0", 764 | "domhandler": "^5.0.2", 765 | "entities": "^4.2.0" 766 | }, 767 | "funding": { 768 | "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" 769 | } 770 | }, 771 | "node_modules/domelementtype": { 772 | "version": "2.3.0", 773 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", 774 | "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", 775 | "funding": [ 776 | { 777 | "type": "github", 778 | "url": "https://github.com/sponsors/fb55" 779 | } 780 | ] 781 | }, 782 | "node_modules/domhandler": { 783 | "version": "5.0.3", 784 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", 785 | "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", 786 | "dependencies": { 787 | "domelementtype": "^2.3.0" 788 | }, 789 | "engines": { 790 | "node": ">= 4" 791 | }, 792 | "funding": { 793 | "url": "https://github.com/fb55/domhandler?sponsor=1" 794 | } 795 | }, 796 | "node_modules/domutils": { 797 | "version": "3.1.0", 798 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", 799 | "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", 800 | "dependencies": { 801 | "dom-serializer": "^2.0.0", 802 | "domelementtype": "^2.3.0", 803 | "domhandler": "^5.0.3" 804 | }, 805 | "funding": { 806 | "url": "https://github.com/fb55/domutils?sponsor=1" 807 | } 808 | }, 809 | "node_modules/dotenv": { 810 | "version": "16.4.7", 811 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", 812 | "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", 813 | "license": "BSD-2-Clause", 814 | "engines": { 815 | "node": ">=12" 816 | }, 817 | "funding": { 818 | "url": "https://dotenvx.com" 819 | } 820 | }, 821 | "node_modules/entities": { 822 | "version": "4.5.0", 823 | "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", 824 | "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", 825 | "engines": { 826 | "node": ">=0.12" 827 | }, 828 | "funding": { 829 | "url": "https://github.com/fb55/entities?sponsor=1" 830 | } 831 | }, 832 | "node_modules/escape-string-regexp": { 833 | "version": "4.0.0", 834 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 835 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 836 | "dev": true, 837 | "engines": { 838 | "node": ">=10" 839 | }, 840 | "funding": { 841 | "url": "https://github.com/sponsors/sindresorhus" 842 | } 843 | }, 844 | "node_modules/eslint": { 845 | "version": "8.57.1", 846 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", 847 | "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", 848 | "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", 849 | "dev": true, 850 | "dependencies": { 851 | "@eslint-community/eslint-utils": "^4.2.0", 852 | "@eslint-community/regexpp": "^4.6.1", 853 | "@eslint/eslintrc": "^2.1.4", 854 | "@eslint/js": "8.57.1", 855 | "@humanwhocodes/config-array": "^0.13.0", 856 | "@humanwhocodes/module-importer": "^1.0.1", 857 | "@nodelib/fs.walk": "^1.2.8", 858 | "@ungap/structured-clone": "^1.2.0", 859 | "ajv": "^6.12.4", 860 | "chalk": "^4.0.0", 861 | "cross-spawn": "^7.0.2", 862 | "debug": "^4.3.2", 863 | "doctrine": "^3.0.0", 864 | "escape-string-regexp": "^4.0.0", 865 | "eslint-scope": "^7.2.2", 866 | "eslint-visitor-keys": "^3.4.3", 867 | "espree": "^9.6.1", 868 | "esquery": "^1.4.2", 869 | "esutils": "^2.0.2", 870 | "fast-deep-equal": "^3.1.3", 871 | "file-entry-cache": "^6.0.1", 872 | "find-up": "^5.0.0", 873 | "glob-parent": "^6.0.2", 874 | "globals": "^13.19.0", 875 | "graphemer": "^1.4.0", 876 | "ignore": "^5.2.0", 877 | "imurmurhash": "^0.1.4", 878 | "is-glob": "^4.0.0", 879 | "is-path-inside": "^3.0.3", 880 | "js-yaml": "^4.1.0", 881 | "json-stable-stringify-without-jsonify": "^1.0.1", 882 | "levn": "^0.4.1", 883 | "lodash.merge": "^4.6.2", 884 | "minimatch": "^3.1.2", 885 | "natural-compare": "^1.4.0", 886 | "optionator": "^0.9.3", 887 | "strip-ansi": "^6.0.1", 888 | "text-table": "^0.2.0" 889 | }, 890 | "bin": { 891 | "eslint": "bin/eslint.js" 892 | }, 893 | "engines": { 894 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 895 | }, 896 | "funding": { 897 | "url": "https://opencollective.com/eslint" 898 | } 899 | }, 900 | "node_modules/eslint-scope": { 901 | "version": "7.2.2", 902 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", 903 | "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", 904 | "dev": true, 905 | "dependencies": { 906 | "esrecurse": "^4.3.0", 907 | "estraverse": "^5.2.0" 908 | }, 909 | "engines": { 910 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 911 | }, 912 | "funding": { 913 | "url": "https://opencollective.com/eslint" 914 | } 915 | }, 916 | "node_modules/eslint-visitor-keys": { 917 | "version": "3.4.3", 918 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 919 | "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 920 | "dev": true, 921 | "engines": { 922 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 923 | }, 924 | "funding": { 925 | "url": "https://opencollective.com/eslint" 926 | } 927 | }, 928 | "node_modules/espree": { 929 | "version": "9.6.1", 930 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", 931 | "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", 932 | "dev": true, 933 | "dependencies": { 934 | "acorn": "^8.9.0", 935 | "acorn-jsx": "^5.3.2", 936 | "eslint-visitor-keys": "^3.4.1" 937 | }, 938 | "engines": { 939 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 940 | }, 941 | "funding": { 942 | "url": "https://opencollective.com/eslint" 943 | } 944 | }, 945 | "node_modules/esquery": { 946 | "version": "1.5.0", 947 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", 948 | "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", 949 | "dev": true, 950 | "dependencies": { 951 | "estraverse": "^5.1.0" 952 | }, 953 | "engines": { 954 | "node": ">=0.10" 955 | } 956 | }, 957 | "node_modules/esrecurse": { 958 | "version": "4.3.0", 959 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 960 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 961 | "dev": true, 962 | "dependencies": { 963 | "estraverse": "^5.2.0" 964 | }, 965 | "engines": { 966 | "node": ">=4.0" 967 | } 968 | }, 969 | "node_modules/estraverse": { 970 | "version": "5.3.0", 971 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 972 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 973 | "dev": true, 974 | "engines": { 975 | "node": ">=4.0" 976 | } 977 | }, 978 | "node_modules/esutils": { 979 | "version": "2.0.3", 980 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 981 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 982 | "dev": true, 983 | "engines": { 984 | "node": ">=0.10.0" 985 | } 986 | }, 987 | "node_modules/fast-deep-equal": { 988 | "version": "3.1.3", 989 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 990 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 991 | }, 992 | "node_modules/fast-json-stable-stringify": { 993 | "version": "2.1.0", 994 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 995 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 996 | "dev": true 997 | }, 998 | "node_modules/fast-levenshtein": { 999 | "version": "2.0.6", 1000 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1001 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 1002 | "dev": true 1003 | }, 1004 | "node_modules/fast-safe-stringify": { 1005 | "version": "2.1.1", 1006 | "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", 1007 | "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" 1008 | }, 1009 | "node_modules/fastq": { 1010 | "version": "1.15.0", 1011 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", 1012 | "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", 1013 | "dev": true, 1014 | "dependencies": { 1015 | "reusify": "^1.0.4" 1016 | } 1017 | }, 1018 | "node_modules/file-entry-cache": { 1019 | "version": "6.0.1", 1020 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 1021 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 1022 | "dev": true, 1023 | "dependencies": { 1024 | "flat-cache": "^3.0.4" 1025 | }, 1026 | "engines": { 1027 | "node": "^10.12.0 || >=12.0.0" 1028 | } 1029 | }, 1030 | "node_modules/file-type": { 1031 | "version": "18.7.0", 1032 | "resolved": "https://registry.npmjs.org/file-type/-/file-type-18.7.0.tgz", 1033 | "integrity": "sha512-ihHtXRzXEziMrQ56VSgU7wkxh55iNchFkosu7Y9/S+tXHdKyrGjVK0ujbqNnsxzea+78MaLhN6PGmfYSAv1ACw==", 1034 | "dependencies": { 1035 | "readable-web-to-node-stream": "^3.0.2", 1036 | "strtok3": "^7.0.0", 1037 | "token-types": "^5.0.1" 1038 | }, 1039 | "engines": { 1040 | "node": ">=14.16" 1041 | }, 1042 | "funding": { 1043 | "url": "https://github.com/sindresorhus/file-type?sponsor=1" 1044 | } 1045 | }, 1046 | "node_modules/find-up": { 1047 | "version": "5.0.0", 1048 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 1049 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 1050 | "dev": true, 1051 | "dependencies": { 1052 | "locate-path": "^6.0.0", 1053 | "path-exists": "^4.0.0" 1054 | }, 1055 | "engines": { 1056 | "node": ">=10" 1057 | }, 1058 | "funding": { 1059 | "url": "https://github.com/sponsors/sindresorhus" 1060 | } 1061 | }, 1062 | "node_modules/flat-cache": { 1063 | "version": "3.0.4", 1064 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 1065 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 1066 | "dev": true, 1067 | "dependencies": { 1068 | "flatted": "^3.1.0", 1069 | "rimraf": "^3.0.2" 1070 | }, 1071 | "engines": { 1072 | "node": "^10.12.0 || >=12.0.0" 1073 | } 1074 | }, 1075 | "node_modules/flatted": { 1076 | "version": "3.2.7", 1077 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", 1078 | "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", 1079 | "dev": true 1080 | }, 1081 | "node_modules/follow-redirects": { 1082 | "version": "1.15.6", 1083 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", 1084 | "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", 1085 | "funding": [ 1086 | { 1087 | "type": "individual", 1088 | "url": "https://github.com/sponsors/RubenVerborgh" 1089 | } 1090 | ], 1091 | "engines": { 1092 | "node": ">=4.0" 1093 | }, 1094 | "peerDependenciesMeta": { 1095 | "debug": { 1096 | "optional": true 1097 | } 1098 | } 1099 | }, 1100 | "node_modules/form-data": { 1101 | "version": "4.0.0", 1102 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 1103 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 1104 | "dependencies": { 1105 | "asynckit": "^0.4.0", 1106 | "combined-stream": "^1.0.8", 1107 | "mime-types": "^2.1.12" 1108 | }, 1109 | "engines": { 1110 | "node": ">= 6" 1111 | } 1112 | }, 1113 | "node_modules/formidable": { 1114 | "version": "1.2.6", 1115 | "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", 1116 | "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==", 1117 | "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau", 1118 | "funding": { 1119 | "url": "https://ko-fi.com/tunnckoCore/commissions" 1120 | } 1121 | }, 1122 | "node_modules/fs.realpath": { 1123 | "version": "1.0.0", 1124 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1125 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1126 | "dev": true 1127 | }, 1128 | "node_modules/function-bind": { 1129 | "version": "1.1.1", 1130 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1131 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 1132 | }, 1133 | "node_modules/fuzzysort": { 1134 | "version": "1.9.0", 1135 | "resolved": "https://registry.npmjs.org/fuzzysort/-/fuzzysort-1.9.0.tgz", 1136 | "integrity": "sha512-MOxCT0qLTwLqmEwc7UtU045RKef7mc8Qz8eR4r2bLNEq9dy/c3ZKMEFp6IEst69otkQdFZ4FfgH2dmZD+ddX1g==" 1137 | }, 1138 | "node_modules/genshin-db": { 1139 | "version": "5.2.0", 1140 | "resolved": "https://registry.npmjs.org/genshin-db/-/genshin-db-5.2.0.tgz", 1141 | "integrity": "sha512-m3sMfEhn+o/QXQ9hKElo2x0TbeHcu9XjOWh19fPB4hggNG2maGhCZkUAi7eF0EVqSFpzWRTXNLgoRftmd72yew==", 1142 | "license": "MIT", 1143 | "dependencies": { 1144 | "fuzzysort": "^1.1.4", 1145 | "pako": "^2.0.4" 1146 | } 1147 | }, 1148 | "node_modules/get-intrinsic": { 1149 | "version": "1.2.1", 1150 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", 1151 | "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", 1152 | "dependencies": { 1153 | "function-bind": "^1.1.1", 1154 | "has": "^1.0.3", 1155 | "has-proto": "^1.0.1", 1156 | "has-symbols": "^1.0.3" 1157 | }, 1158 | "funding": { 1159 | "url": "https://github.com/sponsors/ljharb" 1160 | } 1161 | }, 1162 | "node_modules/glob": { 1163 | "version": "7.2.3", 1164 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1165 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1166 | "dev": true, 1167 | "dependencies": { 1168 | "fs.realpath": "^1.0.0", 1169 | "inflight": "^1.0.4", 1170 | "inherits": "2", 1171 | "minimatch": "^3.1.1", 1172 | "once": "^1.3.0", 1173 | "path-is-absolute": "^1.0.0" 1174 | }, 1175 | "engines": { 1176 | "node": "*" 1177 | }, 1178 | "funding": { 1179 | "url": "https://github.com/sponsors/isaacs" 1180 | } 1181 | }, 1182 | "node_modules/glob-parent": { 1183 | "version": "6.0.2", 1184 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 1185 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 1186 | "dev": true, 1187 | "dependencies": { 1188 | "is-glob": "^4.0.3" 1189 | }, 1190 | "engines": { 1191 | "node": ">=10.13.0" 1192 | } 1193 | }, 1194 | "node_modules/globals": { 1195 | "version": "13.24.0", 1196 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", 1197 | "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", 1198 | "dev": true, 1199 | "dependencies": { 1200 | "type-fest": "^0.20.2" 1201 | }, 1202 | "engines": { 1203 | "node": ">=8" 1204 | }, 1205 | "funding": { 1206 | "url": "https://github.com/sponsors/sindresorhus" 1207 | } 1208 | }, 1209 | "node_modules/graphemer": { 1210 | "version": "1.4.0", 1211 | "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", 1212 | "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", 1213 | "dev": true 1214 | }, 1215 | "node_modules/has": { 1216 | "version": "1.0.3", 1217 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1218 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1219 | "dependencies": { 1220 | "function-bind": "^1.1.1" 1221 | }, 1222 | "engines": { 1223 | "node": ">= 0.4.0" 1224 | } 1225 | }, 1226 | "node_modules/has-flag": { 1227 | "version": "4.0.0", 1228 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1229 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1230 | "dev": true, 1231 | "engines": { 1232 | "node": ">=8" 1233 | } 1234 | }, 1235 | "node_modules/has-proto": { 1236 | "version": "1.0.1", 1237 | "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", 1238 | "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", 1239 | "engines": { 1240 | "node": ">= 0.4" 1241 | }, 1242 | "funding": { 1243 | "url": "https://github.com/sponsors/ljharb" 1244 | } 1245 | }, 1246 | "node_modules/has-symbols": { 1247 | "version": "1.0.3", 1248 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 1249 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 1250 | "engines": { 1251 | "node": ">= 0.4" 1252 | }, 1253 | "funding": { 1254 | "url": "https://github.com/sponsors/ljharb" 1255 | } 1256 | }, 1257 | "node_modules/htmlparser2": { 1258 | "version": "8.0.2", 1259 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", 1260 | "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", 1261 | "funding": [ 1262 | "https://github.com/fb55/htmlparser2?sponsor=1", 1263 | { 1264 | "type": "github", 1265 | "url": "https://github.com/sponsors/fb55" 1266 | } 1267 | ], 1268 | "dependencies": { 1269 | "domelementtype": "^2.3.0", 1270 | "domhandler": "^5.0.3", 1271 | "domutils": "^3.0.1", 1272 | "entities": "^4.4.0" 1273 | } 1274 | }, 1275 | "node_modules/ieee754": { 1276 | "version": "1.2.1", 1277 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1278 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 1279 | "funding": [ 1280 | { 1281 | "type": "github", 1282 | "url": "https://github.com/sponsors/feross" 1283 | }, 1284 | { 1285 | "type": "patreon", 1286 | "url": "https://www.patreon.com/feross" 1287 | }, 1288 | { 1289 | "type": "consulting", 1290 | "url": "https://feross.org/support" 1291 | } 1292 | ] 1293 | }, 1294 | "node_modules/ignore": { 1295 | "version": "5.3.1", 1296 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", 1297 | "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", 1298 | "dev": true, 1299 | "engines": { 1300 | "node": ">= 4" 1301 | } 1302 | }, 1303 | "node_modules/import-fresh": { 1304 | "version": "3.3.0", 1305 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1306 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1307 | "dev": true, 1308 | "dependencies": { 1309 | "parent-module": "^1.0.0", 1310 | "resolve-from": "^4.0.0" 1311 | }, 1312 | "engines": { 1313 | "node": ">=6" 1314 | }, 1315 | "funding": { 1316 | "url": "https://github.com/sponsors/sindresorhus" 1317 | } 1318 | }, 1319 | "node_modules/imurmurhash": { 1320 | "version": "0.1.4", 1321 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1322 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 1323 | "dev": true, 1324 | "engines": { 1325 | "node": ">=0.8.19" 1326 | } 1327 | }, 1328 | "node_modules/inflight": { 1329 | "version": "1.0.6", 1330 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1331 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1332 | "dev": true, 1333 | "dependencies": { 1334 | "once": "^1.3.0", 1335 | "wrappy": "1" 1336 | } 1337 | }, 1338 | "node_modules/inherits": { 1339 | "version": "2.0.4", 1340 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1341 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1342 | }, 1343 | "node_modules/is-extglob": { 1344 | "version": "2.1.1", 1345 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1346 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1347 | "dev": true, 1348 | "engines": { 1349 | "node": ">=0.10.0" 1350 | } 1351 | }, 1352 | "node_modules/is-glob": { 1353 | "version": "4.0.3", 1354 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1355 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1356 | "dev": true, 1357 | "dependencies": { 1358 | "is-extglob": "^2.1.1" 1359 | }, 1360 | "engines": { 1361 | "node": ">=0.10.0" 1362 | } 1363 | }, 1364 | "node_modules/is-path-inside": { 1365 | "version": "3.0.3", 1366 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 1367 | "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 1368 | "dev": true, 1369 | "engines": { 1370 | "node": ">=8" 1371 | } 1372 | }, 1373 | "node_modules/isexe": { 1374 | "version": "2.0.0", 1375 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1376 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1377 | "dev": true 1378 | }, 1379 | "node_modules/js-yaml": { 1380 | "version": "4.1.0", 1381 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1382 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1383 | "dev": true, 1384 | "dependencies": { 1385 | "argparse": "^2.0.1" 1386 | }, 1387 | "bin": { 1388 | "js-yaml": "bin/js-yaml.js" 1389 | } 1390 | }, 1391 | "node_modules/json-schema-traverse": { 1392 | "version": "0.4.1", 1393 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1394 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1395 | "dev": true 1396 | }, 1397 | "node_modules/json-stable-stringify-without-jsonify": { 1398 | "version": "1.0.1", 1399 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1400 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 1401 | "dev": true 1402 | }, 1403 | "node_modules/levn": { 1404 | "version": "0.4.1", 1405 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 1406 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 1407 | "dev": true, 1408 | "dependencies": { 1409 | "prelude-ls": "^1.2.1", 1410 | "type-check": "~0.4.0" 1411 | }, 1412 | "engines": { 1413 | "node": ">= 0.8.0" 1414 | } 1415 | }, 1416 | "node_modules/locate-path": { 1417 | "version": "6.0.0", 1418 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 1419 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 1420 | "dev": true, 1421 | "dependencies": { 1422 | "p-locate": "^5.0.0" 1423 | }, 1424 | "engines": { 1425 | "node": ">=10" 1426 | }, 1427 | "funding": { 1428 | "url": "https://github.com/sponsors/sindresorhus" 1429 | } 1430 | }, 1431 | "node_modules/lodash": { 1432 | "version": "4.17.21", 1433 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1434 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 1435 | }, 1436 | "node_modules/lodash.merge": { 1437 | "version": "4.6.2", 1438 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 1439 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 1440 | "dev": true 1441 | }, 1442 | "node_modules/lru-cache": { 1443 | "version": "6.0.0", 1444 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1445 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1446 | "dependencies": { 1447 | "yallist": "^4.0.0" 1448 | }, 1449 | "engines": { 1450 | "node": ">=10" 1451 | } 1452 | }, 1453 | "node_modules/mal-scraper": { 1454 | "version": "2.13.2", 1455 | "resolved": "https://registry.npmjs.org/mal-scraper/-/mal-scraper-2.13.2.tgz", 1456 | "integrity": "sha512-Fz1Ac/I4F3822ZWaoibrHSpulY79hMEOT4qTDw09QxHdy69hP9a0tXeaHXAK3zuDunpxouKq2gXVeHqSmOOUag==", 1457 | "dependencies": { 1458 | "axios": "^1.4.0", 1459 | "cheerio": "^1.0.0-rc.12", 1460 | "match-sorter": "^6.3.1" 1461 | }, 1462 | "engines": { 1463 | "node": ">=8" 1464 | } 1465 | }, 1466 | "node_modules/match-sorter": { 1467 | "version": "6.3.1", 1468 | "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.1.tgz", 1469 | "integrity": "sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==", 1470 | "dependencies": { 1471 | "@babel/runtime": "^7.12.5", 1472 | "remove-accents": "0.4.2" 1473 | } 1474 | }, 1475 | "node_modules/methods": { 1476 | "version": "1.1.2", 1477 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 1478 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", 1479 | "engines": { 1480 | "node": ">= 0.6" 1481 | } 1482 | }, 1483 | "node_modules/mime": { 1484 | "version": "2.6.0", 1485 | "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", 1486 | "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", 1487 | "bin": { 1488 | "mime": "cli.js" 1489 | }, 1490 | "engines": { 1491 | "node": ">=4.0.0" 1492 | } 1493 | }, 1494 | "node_modules/mime-db": { 1495 | "version": "1.52.0", 1496 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1497 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 1498 | "engines": { 1499 | "node": ">= 0.6" 1500 | } 1501 | }, 1502 | "node_modules/mime-types": { 1503 | "version": "2.1.35", 1504 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1505 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1506 | "dependencies": { 1507 | "mime-db": "1.52.0" 1508 | }, 1509 | "engines": { 1510 | "node": ">= 0.6" 1511 | } 1512 | }, 1513 | "node_modules/minimatch": { 1514 | "version": "3.1.2", 1515 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1516 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1517 | "dev": true, 1518 | "dependencies": { 1519 | "brace-expansion": "^1.1.7" 1520 | }, 1521 | "engines": { 1522 | "node": "*" 1523 | } 1524 | }, 1525 | "node_modules/moment": { 1526 | "version": "2.30.1", 1527 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", 1528 | "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", 1529 | "engines": { 1530 | "node": "*" 1531 | } 1532 | }, 1533 | "node_modules/moment-timezone": { 1534 | "version": "0.5.48", 1535 | "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.48.tgz", 1536 | "integrity": "sha512-f22b8LV1gbTO2ms2j2z13MuPogNoh5UzxL3nzNAYKGraILnbGc9NEE6dyiiiLv46DGRb8A4kg8UKWLjPthxBHw==", 1537 | "license": "MIT", 1538 | "dependencies": { 1539 | "moment": "^2.29.4" 1540 | }, 1541 | "engines": { 1542 | "node": "*" 1543 | } 1544 | }, 1545 | "node_modules/ms": { 1546 | "version": "2.1.3", 1547 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1548 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1549 | }, 1550 | "node_modules/msn-weather-api": { 1551 | "version": "0.3.1", 1552 | "resolved": "https://registry.npmjs.org/msn-weather-api/-/msn-weather-api-0.3.1.tgz", 1553 | "integrity": "sha512-8cEz2VuUMs1fCMn/jVBddv/w1ZJA0/aZBHvNHPFi0okvGJ/04uuF/byN7xek2TwcGh5m988N3V5QnwbDalIiVw==", 1554 | "dependencies": { 1555 | "xml2js": "0.6.x" 1556 | }, 1557 | "engines": { 1558 | "node": ">=18.20.2", 1559 | "npm": ">=10.5.0" 1560 | } 1561 | }, 1562 | "node_modules/natural-compare": { 1563 | "version": "1.4.0", 1564 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1565 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 1566 | "dev": true 1567 | }, 1568 | "node_modules/node-fetch": { 1569 | "version": "2.6.12", 1570 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", 1571 | "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", 1572 | "dependencies": { 1573 | "whatwg-url": "^5.0.0" 1574 | }, 1575 | "engines": { 1576 | "node": "4.x || >=6.0.0" 1577 | }, 1578 | "peerDependencies": { 1579 | "encoding": "^0.1.0" 1580 | }, 1581 | "peerDependenciesMeta": { 1582 | "encoding": { 1583 | "optional": true 1584 | } 1585 | } 1586 | }, 1587 | "node_modules/node-osu": { 1588 | "version": "2.2.1", 1589 | "resolved": "https://registry.npmjs.org/node-osu/-/node-osu-2.2.1.tgz", 1590 | "integrity": "sha512-SM9kj+7q7j/Y5nkMSRchQi9g2RxgDQ8JjC/zds7VyzUWQPokGQW3KuiskPLHwITn3RW3V98k7Y3RB3zkLIX9jA==", 1591 | "dependencies": { 1592 | "superagent": "^5.2.1" 1593 | } 1594 | }, 1595 | "node_modules/nth-check": { 1596 | "version": "2.1.1", 1597 | "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", 1598 | "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", 1599 | "dependencies": { 1600 | "boolbase": "^1.0.0" 1601 | }, 1602 | "funding": { 1603 | "url": "https://github.com/fb55/nth-check?sponsor=1" 1604 | } 1605 | }, 1606 | "node_modules/object-inspect": { 1607 | "version": "1.12.3", 1608 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", 1609 | "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", 1610 | "funding": { 1611 | "url": "https://github.com/sponsors/ljharb" 1612 | } 1613 | }, 1614 | "node_modules/once": { 1615 | "version": "1.4.0", 1616 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1617 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1618 | "dev": true, 1619 | "dependencies": { 1620 | "wrappy": "1" 1621 | } 1622 | }, 1623 | "node_modules/optionator": { 1624 | "version": "0.9.3", 1625 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", 1626 | "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", 1627 | "dev": true, 1628 | "dependencies": { 1629 | "@aashutoshrathi/word-wrap": "^1.2.3", 1630 | "deep-is": "^0.1.3", 1631 | "fast-levenshtein": "^2.0.6", 1632 | "levn": "^0.4.1", 1633 | "prelude-ls": "^1.2.1", 1634 | "type-check": "^0.4.0" 1635 | }, 1636 | "engines": { 1637 | "node": ">= 0.8.0" 1638 | } 1639 | }, 1640 | "node_modules/p-limit": { 1641 | "version": "3.1.0", 1642 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 1643 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 1644 | "dev": true, 1645 | "dependencies": { 1646 | "yocto-queue": "^0.1.0" 1647 | }, 1648 | "engines": { 1649 | "node": ">=10" 1650 | }, 1651 | "funding": { 1652 | "url": "https://github.com/sponsors/sindresorhus" 1653 | } 1654 | }, 1655 | "node_modules/p-locate": { 1656 | "version": "5.0.0", 1657 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 1658 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 1659 | "dev": true, 1660 | "dependencies": { 1661 | "p-limit": "^3.0.2" 1662 | }, 1663 | "engines": { 1664 | "node": ">=10" 1665 | }, 1666 | "funding": { 1667 | "url": "https://github.com/sponsors/sindresorhus" 1668 | } 1669 | }, 1670 | "node_modules/pako": { 1671 | "version": "2.1.0", 1672 | "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", 1673 | "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" 1674 | }, 1675 | "node_modules/parent-module": { 1676 | "version": "1.0.1", 1677 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1678 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1679 | "dev": true, 1680 | "dependencies": { 1681 | "callsites": "^3.0.0" 1682 | }, 1683 | "engines": { 1684 | "node": ">=6" 1685 | } 1686 | }, 1687 | "node_modules/parse5": { 1688 | "version": "7.1.2", 1689 | "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", 1690 | "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", 1691 | "dependencies": { 1692 | "entities": "^4.4.0" 1693 | }, 1694 | "funding": { 1695 | "url": "https://github.com/inikulin/parse5?sponsor=1" 1696 | } 1697 | }, 1698 | "node_modules/parse5-htmlparser2-tree-adapter": { 1699 | "version": "7.0.0", 1700 | "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", 1701 | "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", 1702 | "dependencies": { 1703 | "domhandler": "^5.0.2", 1704 | "parse5": "^7.0.0" 1705 | }, 1706 | "funding": { 1707 | "url": "https://github.com/inikulin/parse5?sponsor=1" 1708 | } 1709 | }, 1710 | "node_modules/path-exists": { 1711 | "version": "4.0.0", 1712 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1713 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1714 | "dev": true, 1715 | "engines": { 1716 | "node": ">=8" 1717 | } 1718 | }, 1719 | "node_modules/path-is-absolute": { 1720 | "version": "1.0.1", 1721 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1722 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 1723 | "dev": true, 1724 | "engines": { 1725 | "node": ">=0.10.0" 1726 | } 1727 | }, 1728 | "node_modules/path-key": { 1729 | "version": "3.1.1", 1730 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1731 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1732 | "dev": true, 1733 | "engines": { 1734 | "node": ">=8" 1735 | } 1736 | }, 1737 | "node_modules/peek-readable": { 1738 | "version": "5.0.0", 1739 | "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", 1740 | "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==", 1741 | "engines": { 1742 | "node": ">=14.16" 1743 | }, 1744 | "funding": { 1745 | "type": "github", 1746 | "url": "https://github.com/sponsors/Borewit" 1747 | } 1748 | }, 1749 | "node_modules/prelude-ls": { 1750 | "version": "1.2.1", 1751 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 1752 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 1753 | "dev": true, 1754 | "engines": { 1755 | "node": ">= 0.8.0" 1756 | } 1757 | }, 1758 | "node_modules/proxy-from-env": { 1759 | "version": "1.1.0", 1760 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 1761 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 1762 | }, 1763 | "node_modules/punycode": { 1764 | "version": "2.3.1", 1765 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 1766 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 1767 | "dev": true, 1768 | "engines": { 1769 | "node": ">=6" 1770 | } 1771 | }, 1772 | "node_modules/qs": { 1773 | "version": "6.11.2", 1774 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", 1775 | "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", 1776 | "dependencies": { 1777 | "side-channel": "^1.0.4" 1778 | }, 1779 | "engines": { 1780 | "node": ">=0.6" 1781 | }, 1782 | "funding": { 1783 | "url": "https://github.com/sponsors/ljharb" 1784 | } 1785 | }, 1786 | "node_modules/queue-microtask": { 1787 | "version": "1.2.3", 1788 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1789 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 1790 | "dev": true, 1791 | "funding": [ 1792 | { 1793 | "type": "github", 1794 | "url": "https://github.com/sponsors/feross" 1795 | }, 1796 | { 1797 | "type": "patreon", 1798 | "url": "https://www.patreon.com/feross" 1799 | }, 1800 | { 1801 | "type": "consulting", 1802 | "url": "https://feross.org/support" 1803 | } 1804 | ] 1805 | }, 1806 | "node_modules/randombytes": { 1807 | "version": "2.1.0", 1808 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 1809 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 1810 | "dependencies": { 1811 | "safe-buffer": "^5.1.0" 1812 | } 1813 | }, 1814 | "node_modules/readable-stream": { 1815 | "version": "3.6.2", 1816 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", 1817 | "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 1818 | "dependencies": { 1819 | "inherits": "^2.0.3", 1820 | "string_decoder": "^1.1.1", 1821 | "util-deprecate": "^1.0.1" 1822 | }, 1823 | "engines": { 1824 | "node": ">= 6" 1825 | } 1826 | }, 1827 | "node_modules/readable-web-to-node-stream": { 1828 | "version": "3.0.2", 1829 | "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", 1830 | "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", 1831 | "dependencies": { 1832 | "readable-stream": "^3.6.0" 1833 | }, 1834 | "engines": { 1835 | "node": ">=8" 1836 | }, 1837 | "funding": { 1838 | "type": "github", 1839 | "url": "https://github.com/sponsors/Borewit" 1840 | } 1841 | }, 1842 | "node_modules/regenerator-runtime": { 1843 | "version": "0.14.1", 1844 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", 1845 | "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", 1846 | "license": "MIT" 1847 | }, 1848 | "node_modules/remove-accents": { 1849 | "version": "0.4.2", 1850 | "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz", 1851 | "integrity": "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==" 1852 | }, 1853 | "node_modules/resolve-from": { 1854 | "version": "4.0.0", 1855 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1856 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1857 | "dev": true, 1858 | "engines": { 1859 | "node": ">=4" 1860 | } 1861 | }, 1862 | "node_modules/reusify": { 1863 | "version": "1.0.4", 1864 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 1865 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 1866 | "dev": true, 1867 | "engines": { 1868 | "iojs": ">=1.0.0", 1869 | "node": ">=0.10.0" 1870 | } 1871 | }, 1872 | "node_modules/rimraf": { 1873 | "version": "3.0.2", 1874 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1875 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1876 | "dev": true, 1877 | "dependencies": { 1878 | "glob": "^7.1.3" 1879 | }, 1880 | "bin": { 1881 | "rimraf": "bin.js" 1882 | }, 1883 | "funding": { 1884 | "url": "https://github.com/sponsors/isaacs" 1885 | } 1886 | }, 1887 | "node_modules/run-parallel": { 1888 | "version": "1.2.0", 1889 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 1890 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 1891 | "dev": true, 1892 | "funding": [ 1893 | { 1894 | "type": "github", 1895 | "url": "https://github.com/sponsors/feross" 1896 | }, 1897 | { 1898 | "type": "patreon", 1899 | "url": "https://www.patreon.com/feross" 1900 | }, 1901 | { 1902 | "type": "consulting", 1903 | "url": "https://feross.org/support" 1904 | } 1905 | ], 1906 | "dependencies": { 1907 | "queue-microtask": "^1.2.2" 1908 | } 1909 | }, 1910 | "node_modules/safe-buffer": { 1911 | "version": "5.2.1", 1912 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1913 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1914 | "funding": [ 1915 | { 1916 | "type": "github", 1917 | "url": "https://github.com/sponsors/feross" 1918 | }, 1919 | { 1920 | "type": "patreon", 1921 | "url": "https://www.patreon.com/feross" 1922 | }, 1923 | { 1924 | "type": "consulting", 1925 | "url": "https://feross.org/support" 1926 | } 1927 | ] 1928 | }, 1929 | "node_modules/sax": { 1930 | "version": "1.3.0", 1931 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", 1932 | "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" 1933 | }, 1934 | "node_modules/semver": { 1935 | "version": "7.5.3", 1936 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", 1937 | "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", 1938 | "dependencies": { 1939 | "lru-cache": "^6.0.0" 1940 | }, 1941 | "bin": { 1942 | "semver": "bin/semver.js" 1943 | }, 1944 | "engines": { 1945 | "node": ">=10" 1946 | } 1947 | }, 1948 | "node_modules/serialize-javascript": { 1949 | "version": "6.0.2", 1950 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", 1951 | "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", 1952 | "license": "BSD-3-Clause", 1953 | "dependencies": { 1954 | "randombytes": "^2.1.0" 1955 | } 1956 | }, 1957 | "node_modules/shebang-command": { 1958 | "version": "2.0.0", 1959 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1960 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1961 | "dev": true, 1962 | "dependencies": { 1963 | "shebang-regex": "^3.0.0" 1964 | }, 1965 | "engines": { 1966 | "node": ">=8" 1967 | } 1968 | }, 1969 | "node_modules/shebang-regex": { 1970 | "version": "3.0.0", 1971 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1972 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1973 | "dev": true, 1974 | "engines": { 1975 | "node": ">=8" 1976 | } 1977 | }, 1978 | "node_modules/side-channel": { 1979 | "version": "1.0.4", 1980 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 1981 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 1982 | "dependencies": { 1983 | "call-bind": "^1.0.0", 1984 | "get-intrinsic": "^1.0.2", 1985 | "object-inspect": "^1.9.0" 1986 | }, 1987 | "funding": { 1988 | "url": "https://github.com/sponsors/ljharb" 1989 | } 1990 | }, 1991 | "node_modules/string_decoder": { 1992 | "version": "1.3.0", 1993 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1994 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1995 | "dependencies": { 1996 | "safe-buffer": "~5.2.0" 1997 | } 1998 | }, 1999 | "node_modules/strip-ansi": { 2000 | "version": "6.0.1", 2001 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2002 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2003 | "dev": true, 2004 | "dependencies": { 2005 | "ansi-regex": "^5.0.1" 2006 | }, 2007 | "engines": { 2008 | "node": ">=8" 2009 | } 2010 | }, 2011 | "node_modules/strip-json-comments": { 2012 | "version": "3.1.1", 2013 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2014 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2015 | "dev": true, 2016 | "engines": { 2017 | "node": ">=8" 2018 | }, 2019 | "funding": { 2020 | "url": "https://github.com/sponsors/sindresorhus" 2021 | } 2022 | }, 2023 | "node_modules/strtok3": { 2024 | "version": "7.0.0", 2025 | "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", 2026 | "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", 2027 | "dependencies": { 2028 | "@tokenizer/token": "^0.3.0", 2029 | "peek-readable": "^5.0.0" 2030 | }, 2031 | "engines": { 2032 | "node": ">=14.16" 2033 | }, 2034 | "funding": { 2035 | "type": "github", 2036 | "url": "https://github.com/sponsors/Borewit" 2037 | } 2038 | }, 2039 | "node_modules/superagent": { 2040 | "version": "5.3.1", 2041 | "resolved": "https://registry.npmjs.org/superagent/-/superagent-5.3.1.tgz", 2042 | "integrity": "sha512-wjJ/MoTid2/RuGCOFtlacyGNxN9QLMgcpYLDQlWFIhhdJ93kNscFonGvrpAHSCVjRVj++DGCglocF7Aej1KHvQ==", 2043 | "deprecated": "Please upgrade to v7.0.2+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at .", 2044 | "dependencies": { 2045 | "component-emitter": "^1.3.0", 2046 | "cookiejar": "^2.1.2", 2047 | "debug": "^4.1.1", 2048 | "fast-safe-stringify": "^2.0.7", 2049 | "form-data": "^3.0.0", 2050 | "formidable": "^1.2.2", 2051 | "methods": "^1.1.2", 2052 | "mime": "^2.4.6", 2053 | "qs": "^6.9.4", 2054 | "readable-stream": "^3.6.0", 2055 | "semver": "^7.3.2" 2056 | }, 2057 | "engines": { 2058 | "node": ">= 7.0.0" 2059 | } 2060 | }, 2061 | "node_modules/superagent/node_modules/form-data": { 2062 | "version": "3.0.1", 2063 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", 2064 | "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", 2065 | "dependencies": { 2066 | "asynckit": "^0.4.0", 2067 | "combined-stream": "^1.0.8", 2068 | "mime-types": "^2.1.12" 2069 | }, 2070 | "engines": { 2071 | "node": ">= 6" 2072 | } 2073 | }, 2074 | "node_modules/supports-color": { 2075 | "version": "7.2.0", 2076 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2077 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2078 | "dev": true, 2079 | "dependencies": { 2080 | "has-flag": "^4.0.0" 2081 | }, 2082 | "engines": { 2083 | "node": ">=8" 2084 | } 2085 | }, 2086 | "node_modules/text-table": { 2087 | "version": "0.2.0", 2088 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2089 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 2090 | "dev": true 2091 | }, 2092 | "node_modules/token-types": { 2093 | "version": "5.0.1", 2094 | "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", 2095 | "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", 2096 | "dependencies": { 2097 | "@tokenizer/token": "^0.3.0", 2098 | "ieee754": "^1.2.1" 2099 | }, 2100 | "engines": { 2101 | "node": ">=14.16" 2102 | }, 2103 | "funding": { 2104 | "type": "github", 2105 | "url": "https://github.com/sponsors/Borewit" 2106 | } 2107 | }, 2108 | "node_modules/tr46": { 2109 | "version": "0.0.3", 2110 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 2111 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 2112 | }, 2113 | "node_modules/ts-mixer": { 2114 | "version": "6.0.4", 2115 | "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.4.tgz", 2116 | "integrity": "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==" 2117 | }, 2118 | "node_modules/tslib": { 2119 | "version": "2.7.0", 2120 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", 2121 | "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" 2122 | }, 2123 | "node_modules/type-check": { 2124 | "version": "0.4.0", 2125 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 2126 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 2127 | "dev": true, 2128 | "dependencies": { 2129 | "prelude-ls": "^1.2.1" 2130 | }, 2131 | "engines": { 2132 | "node": ">= 0.8.0" 2133 | } 2134 | }, 2135 | "node_modules/type-fest": { 2136 | "version": "0.20.2", 2137 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 2138 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 2139 | "dev": true, 2140 | "engines": { 2141 | "node": ">=10" 2142 | }, 2143 | "funding": { 2144 | "url": "https://github.com/sponsors/sindresorhus" 2145 | } 2146 | }, 2147 | "node_modules/undici": { 2148 | "version": "5.29.0", 2149 | "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", 2150 | "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", 2151 | "license": "MIT", 2152 | "dependencies": { 2153 | "@fastify/busboy": "^2.0.0" 2154 | }, 2155 | "engines": { 2156 | "node": ">=14.0" 2157 | } 2158 | }, 2159 | "node_modules/uri-js": { 2160 | "version": "4.4.1", 2161 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2162 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2163 | "dev": true, 2164 | "dependencies": { 2165 | "punycode": "^2.1.0" 2166 | } 2167 | }, 2168 | "node_modules/util-deprecate": { 2169 | "version": "1.0.2", 2170 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2171 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 2172 | }, 2173 | "node_modules/webidl-conversions": { 2174 | "version": "3.0.1", 2175 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 2176 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 2177 | }, 2178 | "node_modules/whatwg-url": { 2179 | "version": "5.0.0", 2180 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 2181 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 2182 | "dependencies": { 2183 | "tr46": "~0.0.3", 2184 | "webidl-conversions": "^3.0.0" 2185 | } 2186 | }, 2187 | "node_modules/which": { 2188 | "version": "2.0.2", 2189 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2190 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2191 | "dev": true, 2192 | "dependencies": { 2193 | "isexe": "^2.0.0" 2194 | }, 2195 | "bin": { 2196 | "node-which": "bin/node-which" 2197 | }, 2198 | "engines": { 2199 | "node": ">= 8" 2200 | } 2201 | }, 2202 | "node_modules/wrappy": { 2203 | "version": "1.0.2", 2204 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2205 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 2206 | "dev": true 2207 | }, 2208 | "node_modules/ws": { 2209 | "version": "8.18.0", 2210 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", 2211 | "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", 2212 | "engines": { 2213 | "node": ">=10.0.0" 2214 | }, 2215 | "peerDependencies": { 2216 | "bufferutil": "^4.0.1", 2217 | "utf-8-validate": ">=5.0.2" 2218 | }, 2219 | "peerDependenciesMeta": { 2220 | "bufferutil": { 2221 | "optional": true 2222 | }, 2223 | "utf-8-validate": { 2224 | "optional": true 2225 | } 2226 | } 2227 | }, 2228 | "node_modules/xml2js": { 2229 | "version": "0.6.2", 2230 | "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", 2231 | "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", 2232 | "dependencies": { 2233 | "sax": ">=0.6.0", 2234 | "xmlbuilder": "~11.0.0" 2235 | }, 2236 | "engines": { 2237 | "node": ">=4.0.0" 2238 | } 2239 | }, 2240 | "node_modules/xmlbuilder": { 2241 | "version": "11.0.1", 2242 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", 2243 | "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", 2244 | "engines": { 2245 | "node": ">=4.0" 2246 | } 2247 | }, 2248 | "node_modules/yallist": { 2249 | "version": "4.0.0", 2250 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2251 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 2252 | }, 2253 | "node_modules/yocto-queue": { 2254 | "version": "0.1.0", 2255 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 2256 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 2257 | "dev": true, 2258 | "engines": { 2259 | "node": ">=10" 2260 | }, 2261 | "funding": { 2262 | "url": "https://github.com/sponsors/sindresorhus" 2263 | } 2264 | } 2265 | } 2266 | } 2267 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ryu", 3 | "version": "5.5.3", 4 | "description": "Powerful Discord Automaton", 5 | "main": "index.js", 6 | "type": "commonjs", 7 | "scripts": { 8 | "start": "node index.js", 9 | "deploy": "node deploy.js", 10 | "test": "eslint ." 11 | }, 12 | "homepage": "https://github.com/Muunatic/RyU", 13 | "author": "Muunatic", 14 | "license": "UNLICENSED", 15 | "dependencies": { 16 | "@discordjs/builders": "^1.10.1", 17 | "@discordjs/rest": "^1.7.1", 18 | "cpu-stat": "^2.0.1", 19 | "discord-api-types": "^0.37.119", 20 | "discord-giveaways": "^5.2.2", 21 | "discord.js": "^13.17.1", 22 | "dotenv": "^16.4.7", 23 | "genshin-db": "^5.2.0", 24 | "mal-scraper": "^2.13.2", 25 | "moment": "^2.30.1", 26 | "moment-timezone": "^0.5.48", 27 | "ms": "^2.1.3", 28 | "msn-weather-api": "^0.3.1", 29 | "node-osu": "^2.2.1" 30 | }, 31 | "devDependencies": { 32 | "eslint": "^8.57.1" 33 | }, 34 | "engines": { 35 | "node": ">=16.20.2", 36 | "npm": ">=8.19.4" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/commands/interaction/afk.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const { SlashCommandBuilder } = require('@discordjs/builders'); 3 | 4 | module.exports = { 5 | data: new SlashCommandBuilder() 6 | .setName('afk') 7 | .setDescription('Set AFK'), 8 | /** 9 | * @param {import("../../../client").interaction} interaction 10 | */ 11 | async execute(interaction) { 12 | const afkJson = require('../../../data/afk.json'); 13 | afkJson.afkvalue.push(interaction.user.id); 14 | fs.writeFileSync('./src/data/afk.json', JSON.stringify(afkJson)); 15 | interaction.reply(`**\`${interaction.user.username}\` telah AFK!**`); 16 | interaction.member.setNickname(`[AFK] ${interaction.user.username}`); 17 | } 18 | }; 19 | -------------------------------------------------------------------------------- /src/commands/interaction/avatar.js: -------------------------------------------------------------------------------- 1 | const { SlashCommandBuilder } = require('@discordjs/builders'); 2 | const { MessageEmbed } = require('discord.js'); 3 | 4 | module.exports = { 5 | data: new SlashCommandBuilder() 6 | .setName('avatar') 7 | .setDescription('Get Avatar') 8 | .addUserOption(option => 9 | option.setName('user') 10 | .setDescription('Mention user') 11 | ), 12 | /** 13 | * @param {import("../../../client").interaction} interaction 14 | */ 15 | async execute(interaction) { 16 | const userValue = interaction.options.getUser('user') || interaction.user; 17 | const usernameValue = interaction.options.getUser('user') || interaction.member.user; 18 | const msgEmbed = new MessageEmbed() 19 | 20 | .setColor('#89e0dc') 21 | .setTitle('Avatar') 22 | .setDescription(`Avatarnya ${usernameValue.username}`) 23 | .setImage(`${userValue.avatarURL({format : 'png', dynamic : true, size : 4096})}`) 24 | .setFooter({text: `Direquest oleh ${interaction.member.nickname || interaction.user.username}`, iconURL: interaction.user.avatarURL({format : 'png', dynamic : true, size : 1024})}); 25 | 26 | interaction.reply({embeds: [msgEmbed]}); 27 | } 28 | }; 29 | -------------------------------------------------------------------------------- /src/commands/interaction/eval.js: -------------------------------------------------------------------------------- 1 | const { SlashCommandBuilder } = require('@discordjs/builders'); 2 | const { inspect } = require('util'); 3 | 4 | module.exports = { 5 | data: new SlashCommandBuilder() 6 | .setName('eval') 7 | .setDescription('Eval') 8 | .addStringOption(value => 9 | value.setName('value') 10 | .setDescription('Eval value') 11 | .setRequired(true) 12 | ), 13 | /** 14 | * @param {import("../../../client").interaction} interaction 15 | */ 16 | async execute(interaction) { 17 | const args = interaction.options.get('value').value; 18 | if (interaction.user.id !== process.env.OWNERID) return interaction.reply(process.env.DEFAULT_ERROR); 19 | 20 | try { 21 | const result = await eval(args); 22 | let output = result; 23 | if (typeof result !== 'string') { 24 | output = inspect(result); 25 | } 26 | interaction.reply({content: output}); 27 | } catch (error) { 28 | console.log(error); 29 | interaction.reply(process.env.DEFAULT_ERROR); 30 | } 31 | } 32 | }; 33 | -------------------------------------------------------------------------------- /src/commands/interaction/genshin.js: -------------------------------------------------------------------------------- 1 | const genshindb = require('genshin-db'); 2 | const { SlashCommandBuilder } = require('@discordjs/builders'); 3 | const { MessageEmbed } = require('discord.js'); 4 | genshindb.setOptions({v4Prop: true}); 5 | 6 | module.exports = { 7 | data: new SlashCommandBuilder() 8 | .setName('genshin') 9 | .setDescription('Genshin impact') 10 | .addStringOption(characters => 11 | characters.setName('characters') 12 | .setDescription('Characters name') 13 | ) 14 | .addStringOption(weapon => 15 | weapon.setName('weapon') 16 | .setDescription('Weapon name') 17 | ), 18 | /** 19 | * @param {import("../../../client").interaction} interaction 20 | * @param {import("../../../client").client} client 21 | */ 22 | async execute(interaction) { 23 | if (interaction.options.get('weapon')) { 24 | const data = genshindb.weapons(interaction.options.get('weapon').value); 25 | const moracosts = data.costs.ascend1[0].count + data.costs.ascend2[0].count + data.costs.ascend3[0].count + data.costs.ascend4[0].count + data.costs.ascend5[0].count + data.costs.ascend6[0].count; 26 | 27 | const embed = new MessageEmbed() 28 | 29 | .setColor('#89e0dc') 30 | .setTitle(data.name) 31 | .setDescription(data.description) 32 | .setThumbnail(data.images.mihoyo_icon) 33 | .addFields( 34 | { name: 'Weapon', value: `${data.weaponText}`, inline: true }, 35 | { name: 'Rarity', value: `${data.rarity}✰`, inline: true }, 36 | { name: 'Substat', value: `${data.mainStatText}`, inline: true }, 37 | { name: 'Refine', value: `${data.r1.description}`, inline: true }, 38 | { name: 'Material', value: `${data.costs.ascend6[0].name + ', ' + data.costs.ascend6[1].name + ', ' + data.costs.ascend6[2].name}`, inline: true }, 39 | { name: 'Costs', value: `${moracosts}`, inline: true } 40 | ) 41 | .setFooter({text: `Direquest oleh ${interaction.member.nickname || interaction.user.username}`, iconURL: interaction.user.avatarURL({format : 'png', dynamic : true, size : 1024})}) 42 | .setTimestamp(); 43 | interaction.reply({embeds: [embed]}); 44 | } else if (interaction.options.get('characters')) { 45 | const data = genshindb.characters(interaction.options.get('characters').value); 46 | const moracosts = data.costs.ascend1[0].count + data.costs.ascend2[0].count + data.costs.ascend3[0].count + data.costs.ascend4[0].count + data.costs.ascend5[0].count + data.costs.ascend6[0].count; 47 | 48 | const embed = new MessageEmbed() 49 | 50 | .setColor('#89e0dc') 51 | .setTitle(data.name) 52 | .setDescription(data.description) 53 | .setThumbnail(data.images.mihoyo_icon) 54 | .addFields( 55 | { name: 'Weapon', value: `${data.weaponText}`, inline: true }, 56 | { name: 'Vision', value: `${data?.elementText || '?'}`, inline: true }, 57 | { name: 'Rarity', value: `${data.rarity}✰`, inline: true }, 58 | { name: 'Substat', value: `${data.substatText}`, inline: true }, 59 | { name: 'Region', value: `${data?.region || '?'}`, inline: true }, 60 | { name: 'Birthday', value: `${data?.birthday || '?'}`, inline: true }, 61 | { name: 'Material', value: `${data.costs.ascend6[0].name + ', ' + data.costs.ascend6[1].name + ', ' + data.costs.ascend6[2].name + ', ' + data.costs.ascend6[3].name + ', ' + (data.costs.ascend6[4]?.name || '-')}`, inline: true }, 62 | { name: 'Costs', value: `${moracosts}`, inline: true } 63 | ) 64 | .setFooter({text: `Direquest oleh ${interaction.member.nickname || interaction.user.username}`, iconURL: interaction.user.avatarURL({format : 'png', dynamic : true, size : 1024})}) 65 | .setTimestamp(); 66 | 67 | interaction.reply({embeds: [embed]}); 68 | } else { 69 | interaction.reply('**Pilih salah satu option yang disediakan**'); 70 | } 71 | } 72 | }; 73 | -------------------------------------------------------------------------------- /src/commands/interaction/help.js: -------------------------------------------------------------------------------- 1 | const { SlashCommandBuilder } = require('@discordjs/builders'); 2 | const { MessageEmbed, MessageActionRow, MessageButton } = require('discord.js'); 3 | const prefix = process.env.PREFIX; 4 | 5 | module.exports = { 6 | data: new SlashCommandBuilder() 7 | .setName('help') 8 | .setDescription('Help command'), 9 | /** 10 | * @param {import("../../../client").interaction} interaction 11 | * @param {import("../../../client").client} client 12 | */ 13 | async execute(interaction, client) { 14 | const msgEmbed = new MessageEmbed() 15 | 16 | .setColor('#89e0dc') 17 | .setTitle('Help commands') 18 | .setDescription(`Prefix = **${prefix}**`) 19 | .addFields( 20 | { name: 'General command', value: 'ping, userinfo, serverinfo, osu, avatar, stats, afk, mal, genshin, weather' }, 21 | { name: 'DM command', value: 'report' }, 22 | { name: 'Moderator command', value: 'nickname' }, 23 | { name: 'Admin command', value: 'warn, kick, ban, mute, unmute, user, add, reroll, end, eval'} 24 | ) 25 | .setFooter({text: `Direquest oleh ${interaction.member.nickname || interaction.user.username}`, iconURL: interaction.user.avatarURL({format : 'png', dynamic : true, size : 1024})}) 26 | .setTimestamp(); 27 | 28 | const button = new MessageActionRow() 29 | .addComponents( 30 | new MessageButton() 31 | .setCustomId('ping') 32 | .setLabel('Ping') 33 | .setStyle('PRIMARY') 34 | ) 35 | .addComponents( 36 | new MessageButton() 37 | .setCustomId('userinfo') 38 | .setLabel('User Info') 39 | .setStyle('SECONDARY') 40 | ) 41 | .addComponents( 42 | new MessageButton() 43 | .setCustomId('avatar') 44 | .setLabel('Avatar') 45 | .setStyle('SECONDARY') 46 | ); 47 | 48 | const btnFilter = i => i.user.id === interaction.user.id; 49 | const collector = interaction.channel.createMessageComponentCollector({ filter: btnFilter, time: 60000 }); 50 | 51 | collector.on('collect', async i => { 52 | 53 | if (i.customId === 'ping') { 54 | button.components[0].setDisabled(true); 55 | button.components[1].setDisabled(true); 56 | button.components[2].setDisabled(true); 57 | interaction.editReply({components: [button]}); 58 | await i.reply({content: `Pong !! \`${client.ws.ping}ms.\` Latensi \`${Date.now() - i.createdTimestamp}ms.\``}); 59 | collector.stop(); 60 | } 61 | 62 | if (i.customId === 'userinfo') { 63 | button.components[0].setDisabled(true); 64 | button.components[1].setDisabled(true); 65 | button.components[2].setDisabled(true); 66 | interaction.editReply({components: [button]}); 67 | const userInfoEmbed = new MessageEmbed() 68 | 69 | .setColor('#89e0dc') 70 | .setTitle(`${interaction.user.username} Info`) 71 | .setThumbnail(`${interaction.user.avatarURL({format : 'png', dynamic : true, size : 4096})}`) 72 | .setDescription(`Username : **${interaction.user.username}**\n\nNickname : **${interaction.member.nickname || interaction.user.username}**\n\nID : **${interaction.user.id}**\n\nTanggal dibuatnya akun : **${interaction.user.createdAt}**\n\nTanggal join server : **${interaction.member.joinedAt}**\n\nRole : **<@&${interaction.member.roles.highest.id}>**`) 73 | .setFooter({text: `Direquest oleh ${interaction.member.nickname || interaction.user.username}`, iconURL: interaction.user.avatarURL({format : 'png', dynamic : true, size : 1024})}) 74 | .setTimestamp(); 75 | 76 | await i.reply({embeds: [userInfoEmbed]}); 77 | collector.stop(); 78 | } 79 | 80 | if (i.customId === 'avatar') { 81 | button.components[0].setDisabled(true); 82 | button.components[1].setDisabled(true); 83 | button.components[2].setDisabled(true); 84 | interaction.editReply({components: [button]}); 85 | const avatarEmbed = new MessageEmbed() 86 | 87 | .setColor('#89e0dc') 88 | .setTitle('Avatar') 89 | .setDescription(`Avatarnya ${interaction.user.username}`) 90 | .setImage(`${interaction.user.avatarURL({format : 'png', dynamic : true, size : 4096})}`) 91 | .setFooter({text: `Direquest oleh ${interaction.member.nickname || interaction.user.username}`, iconURL: interaction.user.avatarURL({format : 'png', dynamic : true, size : 1024})}); 92 | 93 | await i.reply({embeds: [avatarEmbed]}); 94 | collector.stop(); 95 | } 96 | 97 | collector.on('end', collected => console.log(collected.size)); 98 | 99 | }); 100 | 101 | interaction.reply({embeds: [msgEmbed], components: [button]}); 102 | setTimeout(() => { 103 | button.components[0].setDisabled(true); 104 | button.components[1].setDisabled(true); 105 | button.components[2].setDisabled(true); 106 | button.components[3].setDisabled(true); 107 | interaction.editReply({components: [button]}); 108 | collector.stop(); 109 | }, 60000); 110 | } 111 | }; 112 | -------------------------------------------------------------------------------- /src/commands/interaction/mal.js: -------------------------------------------------------------------------------- 1 | const { SlashCommandBuilder } = require('@discordjs/builders'); 2 | const { MessageEmbed } = require('discord.js'); 3 | const malScraper = require('mal-scraper'); 4 | 5 | module.exports = { 6 | data: new SlashCommandBuilder() 7 | .setName('mal') 8 | .setDescription('MAL scraper') 9 | .addStringOption(option => 10 | option.setName('anime') 11 | .setDescription('Anime name') 12 | .setRequired(true) 13 | ), 14 | /** 15 | * @param {import("../../../client").interaction} interaction 16 | * @param {import("../../../client").client} client 17 | */ 18 | async execute(interaction, client) { 19 | const animeValue = interaction.options.get('anime').value; 20 | const animeScraper = await malScraper.getInfoFromName(animeValue); 21 | if (!animeScraper) return interaction.reply(process.env.DEFAULT_ERROR); 22 | 23 | const msgEmbed = new MessageEmbed() 24 | 25 | .setColor('#CE0F3D') 26 | .setAuthor({name: animeScraper.title, iconURL: client.user.displayAvatarURL(), url: animeScraper.url}) 27 | .setImage(animeScraper.picture) 28 | .setDescription(animeScraper.synopsis) 29 | .addFields( 30 | { name: 'Type', value: `${animeScraper.type}`, inline: true }, 31 | { name: 'Episode', value: `${animeScraper.episodes}`, inline: true }, 32 | { name: 'Duration', value: `${animeScraper.duration}`, inline: true }, 33 | { name: 'Genres', value: `${animeScraper.genres.join(', ')}`, inline: true }, 34 | { name: 'Status', value: `${animeScraper.status}`, inline: true }, 35 | { name: 'Score', value: `${animeScraper.score}`, inline: true } 36 | ) 37 | .setFooter({text: animeScraper.url, iconURL: 'https://pbs.twimg.com/profile_images/1190380284295950339/Py6XnxvH_400x400.jpg'}) 38 | .setTimestamp(); 39 | 40 | interaction.reply({embeds: [msgEmbed]}); 41 | } 42 | }; 43 | -------------------------------------------------------------------------------- /src/commands/interaction/osu.js: -------------------------------------------------------------------------------- 1 | const { SlashCommandBuilder } = require('@discordjs/builders'); 2 | const { MessageEmbed } = require('discord.js'); 3 | const osu = require('node-osu'); 4 | const osuApi = new osu.Api(process.env.OSU_API); 5 | 6 | module.exports = { 7 | data: new SlashCommandBuilder() 8 | .setName('osu') 9 | .setDescription('Osu profile') 10 | .addStringOption(option => 11 | option.setName('username') 12 | .setDescription('osu! username') 13 | .setRequired(true) 14 | ) 15 | .addNumberOption(option2 => 16 | option2.setName('mode') 17 | .setDescription('osu! mode') 18 | .setRequired(true) 19 | .addChoices( 20 | {name: 'osu', value: 1}, 21 | {name: 'taiko', value: 2}, 22 | {name: 'osumania', value: 3} 23 | ) 24 | ), 25 | /** 26 | * @param {import("../../../client").interaction} interaction 27 | */ 28 | async execute(interaction) { 29 | const args1 = interaction.options.get('username').value; 30 | const args2 = interaction.options.get('mode').value; 31 | const user = args1; 32 | const mode = args2; 33 | if (!user) return interaction.reply('**Username tidak ditemukan**'); 34 | if (!mode) return interaction.reply('**Mode tidak ditemukan**'); 35 | const data = await osuApi.getUser({ 36 | u: user, m: mode 37 | }); 38 | if (!data) return interaction.reply('**Data tidak ditemukan**'); 39 | if (!data.pp.rank || !data.accuracy === null) return interaction.reply('**Data tidak ditemukan**'); 40 | const msgEmbed = new MessageEmbed() 41 | 42 | .setColor('#CE0F3D') 43 | .setTitle(`OSU ${data.name} Profile`) 44 | .setThumbnail(`https://s.ppy.sh/a/${data.id}`) 45 | .setDescription(`:flag_${data.country.toLowerCase()}: **${data.name}**`) 46 | .addFields( 47 | { name: 'Name', value: `${data.name}`, inline: true }, 48 | { name: 'Rank', value: `${data.pp.rank}`, inline: true }, 49 | { name: 'Level', value: `${data.level}`, inline: true }, 50 | { name: 'Accuracy', value: `${data.accuracy}`, inline: true }, 51 | { name: 'Joined', value: `${data.raw_joinDate}`, inline: true }, 52 | { name: 'Performance Point', value: `${data.pp.raw}`, inline: true } 53 | ) 54 | .setFooter({text: `https://osu.ppy.sh/users/${data.id}`, iconURL:`https://s.ppy.sh/a/${data.id}`}) 55 | .setTimestamp(); 56 | 57 | interaction.reply({embeds: [msgEmbed]}); 58 | } 59 | }; 60 | -------------------------------------------------------------------------------- /src/commands/interaction/ping.js: -------------------------------------------------------------------------------- 1 | const { SlashCommandBuilder } = require('@discordjs/builders'); 2 | 3 | module.exports = { 4 | data: new SlashCommandBuilder() 5 | .setName('ping') 6 | .setDescription('Client ping'), 7 | /** 8 | * @param {import("../../../client").interaction} interaction 9 | * @param {import("../../../client").client} client 10 | */ 11 | async execute(interaction, client) { 12 | interaction.reply(`Pong !! \`${client.ws.ping}ms.\` Latensi \`${Date.now() - interaction.createdTimestamp}ms.\``); 13 | } 14 | }; 15 | -------------------------------------------------------------------------------- /src/commands/interaction/serverinfo.js: -------------------------------------------------------------------------------- 1 | const { SlashCommandBuilder } = require('@discordjs/builders'); 2 | const { MessageEmbed } = require('discord.js'); 3 | 4 | module.exports = { 5 | data: new SlashCommandBuilder() 6 | .setName('serverinfo') 7 | .setDescription('Server info'), 8 | /** 9 | * @param {import("../../../client").interaction} interaction 10 | */ 11 | async execute(interaction) { 12 | const msgEmbed = new MessageEmbed() 13 | 14 | .setColor('#89e0dc') 15 | .setTitle('Info Server') 16 | .setThumbnail(`${interaction.guild.iconURL({format : 'png', dynamic : true, size : 4096})}`) 17 | .setDescription(`Nama server : **${interaction.guild.name}**\n\nID server : **${interaction.guild.id}**\n\nJumlah member : **${interaction.guild.memberCount}**\n\nServer dibuat pada tanggal : **${interaction.guild.createdAt}**`) 18 | .setFooter({text: `Info server ${interaction.guild.name}`, iconURL: interaction.guild.iconURL({format : 'png', dynamic : true, size : 1024})}) 19 | .setTimestamp(); 20 | 21 | interaction.reply({embeds: [msgEmbed]}); 22 | } 23 | }; 24 | -------------------------------------------------------------------------------- /src/commands/interaction/stats.js: -------------------------------------------------------------------------------- 1 | const os = require('os'); 2 | const cpuStat = require('cpu-stat'); 3 | const { SlashCommandBuilder } = require('@discordjs/builders'); 4 | const { MessageEmbed } = require('discord.js'); 5 | const moment = require('moment-timezone'); 6 | 7 | module.exports = { 8 | data: new SlashCommandBuilder() 9 | .setName('stats') 10 | .setDescription('Client stats'), 11 | /** 12 | * @param {import("../../../client").interaction} interaction 13 | * @param {import("../../../client").client} client 14 | */ 15 | async execute(interaction, client) { 16 | let indonesiaTime = moment().tz('Asia/Jakarta').format(); 17 | setInterval(() => { 18 | indonesiaTime -= 2000; 19 | }); 20 | 21 | const idTime = indonesiaTime.slice(11, -6); 22 | const idDate = indonesiaTime.slice(0, -15); 23 | 24 | cpuStat.usagePercent((err, percent) => { 25 | if (err) { 26 | return console.log(err); 27 | } 28 | 29 | let totalSeconds = (client.uptime / 1000); 30 | let days = Math.floor(totalSeconds / 86400); 31 | totalSeconds %= 86400; 32 | let hours = Math.floor(totalSeconds / 3600); 33 | totalSeconds %= 3600; 34 | let minutes = Math.floor(totalSeconds / 60); 35 | let seconds = Math.floor(totalSeconds % 60); 36 | 37 | let msgEmbed = new MessageEmbed() 38 | 39 | .setColor('#89e0dc') 40 | .setTitle('Client Stats') 41 | .setThumbnail(`${interaction.client.user.avatarURL({format : 'png', dynamic : true, size : 4096})}`) 42 | .setDescription(`Client ini telah aktif selama **${days} hari, ${hours} jam, ${minutes} menit, dan ${seconds} detik**`) 43 | .addFields( 44 | { name: 'CPU', value: `${os.cpus().map(i => `${i.model}`)[0]}`, inline: true }, 45 | { name: 'CPU Usage', value: `${percent.toFixed(2)}%`, inline: true }, 46 | { name: 'Memory', value: `${(process.memoryUsage().heapUsed / 1024 / 1024).toFixed(2)}MB / ${(os.totalmem() / 1024 / 1024).toFixed(2)}MB`, inline: true }, 47 | { name: 'Architecture', value: `${os.arch()}-based processor`, inline: true }, 48 | { name: 'Platform', value: `${os.platform()}`, inline: true }, 49 | { name: 'Engine', value: `${process.version}`, inline: true } 50 | ) 51 | .setFooter({text: `Direquest oleh ${interaction.member.nickname || interaction.user.username} • ${idTime} ${idDate}`, iconURL: interaction.user.avatarURL({format : 'png', dynamic : true, size : 1024})}); 52 | 53 | interaction.reply({embeds: [msgEmbed]}); 54 | }); 55 | } 56 | }; 57 | -------------------------------------------------------------------------------- /src/commands/interaction/userinfo.js: -------------------------------------------------------------------------------- 1 | const { SlashCommandBuilder } = require('@discordjs/builders'); 2 | const { MessageEmbed } = require('discord.js'); 3 | 4 | module.exports = { 5 | data: new SlashCommandBuilder() 6 | .setName('userinfo') 7 | .setDescription('User info'), 8 | /** 9 | * @param {import("../../../client").interaction} interaction 10 | * @param {import("../../../client").client} client 11 | */ 12 | async execute(interaction) { 13 | const msgEmbed = new MessageEmbed() 14 | 15 | .setColor('#89e0dc') 16 | .setTitle(`${interaction.user.username} Info`) 17 | .setThumbnail(`${interaction.user.avatarURL({format : 'png', dynamic : true, size : 4096})}`) 18 | .setDescription(`Username : **${interaction.user.username}**\n\nNickname : **${interaction.member.nickname || interaction.user.username}**\n\nID : **${interaction.user.id}**\n\nTanggal dibuatnya akun : **${interaction.user.createdAt}**\n\nTanggal join server : **${interaction.member.joinedAt}**\n\nRole : **<@&${interaction.member.roles.highest.id}>**`) 19 | .setFooter({text: `Direquest oleh ${interaction.member.nickname || interaction.user.username}`, iconURL: interaction.user.avatarURL({format : 'png', dynamic : true, size : 1024})}) 20 | .setTimestamp(); 21 | 22 | interaction.reply({embeds: [msgEmbed]}); 23 | } 24 | }; 25 | -------------------------------------------------------------------------------- /src/commands/interaction/weather.js: -------------------------------------------------------------------------------- 1 | const MsnWeather = require('msn-weather-api'); 2 | const weather = new MsnWeather('en', 'C'); 3 | const { SlashCommandBuilder } = require('@discordjs/builders'); 4 | const { MessageEmbed } = require('discord.js'); 5 | 6 | module.exports = { 7 | data: new SlashCommandBuilder() 8 | .setName('weather') 9 | .setDescription('Weather forecast') 10 | .addStringOption(option => 11 | option.setName('location') 12 | .setDescription('location') 13 | .setRequired(true) 14 | ), 15 | /** 16 | * @param {import("../../../client").interaction} interaction 17 | */ 18 | async execute(interaction) { 19 | let location = interaction.options.get('location').value; 20 | 21 | if (!location) return interaction.reply('**Berikan args**'); 22 | 23 | const current = await weather.getCurrentData(location); 24 | 25 | const weatherEmbed = new MessageEmbed() 26 | 27 | .setColor('#89e0dc') 28 | .setTitle('Weather') 29 | .setThumbnail(current.icon) 30 | .setDescription('Powered by msn-weather-api') 31 | .addFields( 32 | { name: 'Location', value: `${current.location}`, inline: true }, 33 | { name: 'Weather', value: `${current.weather}`, inline: true }, 34 | { name: 'Temperature', value: `${current.temperature}`, inline: true }, 35 | { name: 'Humidity', value: `${current.humidity}`, inline: true }, 36 | { name: 'Date', value: `${current.date}`, inline: true }, 37 | { name: 'Windspeed', value: `${current.windspeed}`, inline: true } 38 | ) 39 | .setFooter({ text: `Direquest oleh ${interaction.member.nickname || interaction.user.username}`, iconURL: interaction.user.avatarURL({ format: 'png', dynamic: true, size: 1024 }) }) 40 | .setTimestamp(); 41 | 42 | interaction.reply({ embeds: [weatherEmbed] }); 43 | } 44 | }; 45 | -------------------------------------------------------------------------------- /src/commands/message/admin/ban.js: -------------------------------------------------------------------------------- 1 | const { Permissions } = require('discord.js'); 2 | 3 | module.exports = { 4 | name: 'ban', 5 | /** 6 | * @param {import("../../../../client").message} message 7 | * @param {Array} args 8 | */ 9 | execute(message, args) { 10 | if (!message.member.permissions.has(Permissions.FLAGS.BAN_MEMBERS)) return message.channel.send('Kamu tidak memiliki izin untuk menggunakan command ini'); 11 | const user = message.mentions.users.first(); 12 | if (user) { 13 | const member = message.guild.members.resolve(user); 14 | if (member) { 15 | member.ban({ 16 | days: 0 17 | }).then(() => { 18 | if (args[1]) return message.channel.send(`**${user.tag} Telah diban permanen dikarenakan ${args.slice(1).join(' ')}**`); 19 | if (!args[1]) return message.channel.send(`**${user.tag} Telah diban permanen**`); 20 | }); 21 | } else { 22 | message.channel.send('**User tidak ditemukan**'); 23 | } 24 | } else { 25 | message.channel.send('**Mention user untuk melakukan ban**'); 26 | } 27 | } 28 | }; 29 | -------------------------------------------------------------------------------- /src/commands/message/admin/kick.js: -------------------------------------------------------------------------------- 1 | const { Permissions } = require('discord.js'); 2 | 3 | module.exports = { 4 | name: 'kick', 5 | /** 6 | * @param {import("../../../../client").message} message 7 | * @param {Array} args 8 | */ 9 | execute(message, args) { 10 | if (!message.member.permissions.has(Permissions.FLAGS.KICK_MEMBERS)) return message.channel.send('Kamu tidak memiliki izin untuk menggunakan command ini'); 11 | const user = message.mentions.users.first(); 12 | if (user) { 13 | const member = message.guild.members.resolve(user); 14 | if (member) { 15 | member.kick(`Telah dikick dari server oleh ${message.author.username}`).then(() => { 16 | if (args[1]) return message.channel.send(`**${user.tag} Telah dikick dikarenakan ${args.slice(1).join(' ')}**`); 17 | if (!args[1]) return message.channel.send(`**${user.tag} Telah dikick**`); 18 | }); 19 | } else { 20 | message.channel.send('**User tidak ditemukan**'); 21 | } 22 | } else { 23 | message.channel.send('**Mention user untuk melakukan kick**'); 24 | } 25 | } 26 | }; 27 | -------------------------------------------------------------------------------- /src/commands/message/admin/mute.js: -------------------------------------------------------------------------------- 1 | const { client } = require('../../../../client'); 2 | const { MessageEmbed, Permissions } = require('discord.js'); 3 | 4 | module.exports = { 5 | name: 'mute', 6 | /** 7 | * @param {import("../../../../client").message} message 8 | */ 9 | execute(message) { 10 | if (!message.member.permissions.has(Permissions.FLAGS.MANAGE_ROLES)) return message.channel.send('Kamu tidak memiliki izin untuk menggunakan command ini'); 11 | if (!message.mentions.users.first()) return message.channel.send('**Mention user untuk melakukan mute**'); 12 | const muteRole = message.guild.roles.cache.get(process.env.MUTE_ROLE); 13 | const mentionUsername = message.mentions.users.first(); 14 | const mentionMember = message.mentions.members.first(); 15 | if (mentionMember.roles.cache.get(process.env.MUTE_ROLE)) return message.channel.send('**User masih dimute**'); 16 | mentionMember.roles.add(muteRole); 17 | message.channel.send(`**<@${mentionMember.id}>** telah dimute oleh **<@${message.author.id}>**`); 18 | 19 | let channellog = client.channels.cache.get(process.env.CHANNELLOGID); 20 | let channellogembed = new MessageEmbed() 21 | 22 | .setColor('#ff0000') 23 | .setAuthor({name: 'Member Muted', iconURL:message.author.avatarURL({format : 'png', dynamic : true, size : 1024})}) 24 | .setDescription(`**⚠️ - ${mentionUsername.username} dimuted oleh ${message.author.username}**`) 25 | .setTimestamp(); 26 | 27 | channellog.send({embeds: [channellogembed]}); 28 | } 29 | }; 30 | -------------------------------------------------------------------------------- /src/commands/message/admin/say.js: -------------------------------------------------------------------------------- 1 | const { client } = require('../../../../client'); 2 | const { Permissions } = require('discord.js'); 3 | 4 | module.exports = { 5 | name: 'say', 6 | /** 7 | * @param {import("../../../../client").message} message 8 | * @param {Array} args 9 | */ 10 | execute(message, args) { 11 | if (!message.member.permissions.has(Permissions.FLAGS.MANAGE_MESSAGES)) return message.channel.send('Kamu tidak memiliki izin untuk menggunakan command ini'); 12 | const channel = client.channels.cache.get(args[0]); 13 | if (!client.channels.cache.get(args[0])) return message.channel.send(process.env.DEFAULT_ERROR); 14 | if (!args[1]) return message.channel.send('**Berikan args**'); 15 | channel.send(args.slice(1).join(' ')); 16 | message.react('✅'); 17 | } 18 | }; 19 | -------------------------------------------------------------------------------- /src/commands/message/admin/unmute.js: -------------------------------------------------------------------------------- 1 | const { client } = require('../../../../client'); 2 | const { MessageEmbed, Permissions } = require('discord.js'); 3 | 4 | module.exports = { 5 | name: 'unmute', 6 | /** 7 | * @param {import("../../../../client").message} message 8 | */ 9 | execute(message) { 10 | if (!message.member.permissions.has(Permissions.FLAGS.MANAGE_ROLES)) return message.channel.send('Kamu tidak memiliki izin untuk menggunakan command ini'); 11 | if (!message.mentions.users.first()) return message.channel.send('**Mention user untuk melakukan unmute**'); 12 | const muteRole = message.guild.roles.cache.get(process.env.MUTE_ROLE); 13 | const mentionUsername = message.mentions.users.first(); 14 | const mentionMember = message.mentions.members.first(); 15 | if (!mentionMember.roles.cache.get(process.env.MUTE_ROLE)) return message.channel.send('**User tidak dimute**'); 16 | mentionMember.roles.remove(muteRole); 17 | message.channel.send(`**<@${mentionMember.id}>** telah diunmute oleh **<@${message.author.id}>**`); 18 | 19 | let channellog = client.channels.cache.get(process.env.CHANNELLOGID); 20 | let channellogembed = new MessageEmbed() 21 | 22 | .setColor('#00ff00') 23 | .setAuthor({name: 'Member Unmuted', iconURL:message.author.avatarURL({format : 'png', dynamic : true, size : 1024})}) 24 | .setDescription(`**⚠️ - ${mentionUsername.username} diunmuted oleh ${message.author.username}**`) 25 | .setTimestamp(); 26 | 27 | channellog.send({embeds: [channellogembed]}); 28 | } 29 | }; 30 | -------------------------------------------------------------------------------- /src/commands/message/admin/user.js: -------------------------------------------------------------------------------- 1 | const { client } = require('../../../../client'); 2 | const { Permissions } = require('discord.js'); 3 | 4 | module.exports = { 5 | name: 'user', 6 | /** 7 | * @param {import("../../../../client").message} message 8 | * @param {Array} args 9 | */ 10 | execute(message, args) { 11 | if (!message.member.permissions.has(Permissions.FLAGS.MANAGE_MESSAGES)) return message.channel.send('Kamu tidak memiliki izin untuk menggunakan command ini'); 12 | const dmUser = client.users.cache.get(args[0]); 13 | dmUser.send(args.slice(1).join(' ')); 14 | } 15 | }; 16 | -------------------------------------------------------------------------------- /src/commands/message/admin/warn.js: -------------------------------------------------------------------------------- 1 | const { client } = require('../../../../client'); 2 | const { MessageEmbed, Permissions } = require('discord.js'); 3 | 4 | module.exports = { 5 | name: 'warn', 6 | /** 7 | * @param {import("../../../../client").message} message 8 | * @param {Array} args 9 | */ 10 | execute(message, args) { 11 | if (!message.member.permissions.has(Permissions.FLAGS.MANAGE_MESSAGES)) return message.channel.send('Kamu tidak memiliki izin untuk menggunakan command ini'); 12 | const mentionUser = message.mentions.users.first(); 13 | if (!message.mentions.users.first()) return message.channel.send('**Mention user sebelum memberikan alasan\n\n\`\`\`/warn \`\`\`**'); 14 | const msgEmbed = new MessageEmbed() 15 | 16 | .setColor('#f82c2c') 17 | .setTitle(`**${mentionUser.username} Warning**`) 18 | .setThumbnail(`${mentionUser.avatarURL({format : 'png', dynamic : true, size : 1024})}`) 19 | .setDescription(`${mentionUser.username} **berhasil diwarn dengan alasan:**\`\`\`diff\n- ${args.slice(1).join(' ')}\`\`\``) 20 | .setFooter({text: `Diwarn oleh ${message.author.username}`, iconURL: message.author.avatarURL({format : 'png', dynamic : true, size : 1024})}) 21 | .setTimestamp(); 22 | 23 | message.channel.send({embeds: [msgEmbed]}); 24 | 25 | let channellog = client.channels.cache.get(process.env.CHANNELLOGID); 26 | let channellogembed = new MessageEmbed() 27 | 28 | .setColor('#ff0000') 29 | .setAuthor({name: `${mentionUser.username} Warning`, iconURL: mentionUser.avatarURL({format : 'png', dynamic : true, size : 1024})}) 30 | .setDescription(`**⚠️ - ${mentionUser.username} telah diwarn oleh ${message.author.username}**`) 31 | .setTimestamp(); 32 | 33 | channellog.send({embeds: [channellogembed]}); 34 | } 35 | }; 36 | -------------------------------------------------------------------------------- /src/commands/message/general/add.js: -------------------------------------------------------------------------------- 1 | const ms = require('ms'); 2 | const { Permissions } = require('discord.js'); 3 | const { manager } = require('../../../../client'); 4 | 5 | module.exports = { 6 | name: 'add', 7 | /** 8 | * @param {import("../../../../client").message} message 9 | * @param {Array} args 10 | */ 11 | execute(message, args) { 12 | if (!message.member.permissions.has(Permissions.FLAGS.MANAGE_MESSAGES)) return message.channel.send('Kamu tidak memiliki izin untuk menggunakan command ini'); 13 | if (!args[0]) return message.channel.send(`${process.env.PREFIX}giveaway ****