From b2fff2382adc8a938de695edc68db152b9dd7d01 Mon Sep 17 00:00:00 2001 From: hotsu0p Date: Thu, 8 Feb 2024 07:29:45 -0600 Subject: [PATCH] update --- package-lock.json | 818 ++-- package.json | 1 + src/commands/games/wouldyourather.js | 42 + src/commands/information/profile.js | 55 + src/commands/stick/sticky.js | 62 + src/commands/testing/gametest | 58 + src/commands/testing/hidetest.js | 47 + src/commands/testing/how to use inpiut.js | 27 + src/commands/testing/mad.js | 63 + src/commands/testing/randomword.js | 32 + src/commands/testing/test3.js | 77 + src/commands/utility/poll.js | 100 + src/dashboard/dashboard.js | 13 +- src/dashboard/templates/new/mainpage.ejs | 105 +- .../templates/new/mainreactionroles.ejs | 112 +- src/dashboard/templates/new/mainreports.ejs | 4027 +++++++++-------- src/dashboard/templates/new/mainstats.ejs | 6 +- .../templates/new/mainsuggestions.ejs | 94 +- src/dashboard/templates/new/maintickets.ejs | 118 +- src/data/badwords.json | 1 + src/data/guild_information.json | 1 + src/data/profiles.json | 13 + src/data/stickyData/1182740492644003910.json | 4 + src/data/stickyMessages.json | 1 + src/database/routes/router.js | 13 + src/database/schemas/Guild.js | 4 + src/events/members/userUpdate.js | 2 +- src/events/message/messageCreate.js | 1 - sticky logic.md | 124 + 29 files changed, 3561 insertions(+), 2460 deletions(-) create mode 100644 src/commands/games/wouldyourather.js create mode 100644 src/commands/information/profile.js create mode 100644 src/commands/stick/sticky.js create mode 100644 src/commands/testing/gametest create mode 100644 src/commands/testing/hidetest.js create mode 100644 src/commands/testing/how to use inpiut.js create mode 100644 src/commands/testing/mad.js create mode 100644 src/commands/testing/randomword.js create mode 100644 src/commands/testing/test3.js create mode 100644 src/commands/utility/poll.js create mode 100644 src/data/badwords.json create mode 100644 src/data/guild_information.json create mode 100644 src/data/profiles.json create mode 100644 src/data/stickyData/1182740492644003910.json create mode 100644 src/data/stickyMessages.json create mode 100644 src/database/routes/router.js create mode 100644 sticky logic.md diff --git a/package-lock.json b/package-lock.json index 27573c0..9b74bb4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,7 @@ "canvas": "^2.11.2", "chalk": "^4.1.0", "channelsave-discord": "^1.5.0", + "chart.js": "^4.4.1", "cheerio": "^1.0.0-rc.12", "colors": "^1.4.0", "common-tags": "^1.8.0", @@ -31,7 +32,6 @@ "datadog-metrics": "^0.8.2", "date-and-time": "^0.14.2", "discord-api-types": "^0.37.11", - "discord-buttons": "^4.0.0-deprecated", "discord-gamecord": "^3.0.0", "discord-guild-logger": "^1.3.5", "discord-player": "^6.6.7", @@ -54,6 +54,7 @@ "intl": "^1.2.5", "logs.chat": "^1.0.3", "memorystore": "^1.6.5", + "mkdirp": "^3.0.1", "modmail.djs": "^1.1.0", "moment": "^2.27.0", "moment-duration-format": "^2.3.2", @@ -92,7 +93,7 @@ "zlib": "^1.0.5" }, "devDependencies": { - "eslint": "^7.6.0", + "eslint": "^8.56.0", "eslint-config-tesseract": "^0.0.3", "node": "^16.9.0" } @@ -773,109 +774,6 @@ "tslib": "^2.3.1" } }, - "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/runtime": { "version": "7.23.8", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.8.tgz", @@ -1134,24 +1032,51 @@ "node": ">=14.0" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/@eslint/eslintrc/node_modules/debug": { @@ -1177,6 +1102,15 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@fastify/busboy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", @@ -1287,14 +1221,14 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" @@ -1323,10 +1257,23 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, "node_modules/@jimp/bmp": { @@ -1360,6 +1307,17 @@ "tinycolor2": "^1.4.1" } }, + "node_modules/@jimp/core/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/@jimp/custom": { "version": "0.16.13", "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.13.tgz", @@ -1755,6 +1713,11 @@ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, + "node_modules/@kurkle/color": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz", + "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==" + }, "node_modules/@m3rcena/weky": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@m3rcena/weky/-/weky-4.3.1.tgz", @@ -1982,6 +1945,41 @@ "node": ">= 10" } }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/@resvg/resvg-js": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/@resvg/resvg-js/-/resvg-js-2.6.0.tgz", @@ -2934,6 +2932,12 @@ "@types/node": "*" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/@vladfrangu/async_event_emitter": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.2.4.tgz", @@ -3061,15 +3065,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -3199,13 +3194,10 @@ } }, "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/array-flatten": { "version": "1.1.1", @@ -3239,15 +3231,6 @@ "node": ">=0.8" } }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/async": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", @@ -3747,6 +3730,17 @@ "resolved": "https://registry.npmjs.org/channelsave-discord/-/channelsave-discord-1.5.0.tgz", "integrity": "sha512-Uc7emADJ4w11NfTNO1qu70O9N8BMkyOTYJrhEd8MbMsZxfR0vLYGpCWNMmb1bPTkTm6oy+EaS0U3vvpz5jo2Lg==" }, + "node_modules/chart.js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.1.tgz", + "integrity": "sha512-C74QN1bxwV1v2PEujhmKjOZ7iUM4w6BWs23Md/6aOZZSlwMzeCIDGuZay++rBgChYru7/+QFeoQW0fQoP534Dg==", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=7" + } + }, "node_modules/cheerio": { "version": "1.0.0-rc.12", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", @@ -4699,16 +4693,6 @@ "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.67.tgz", "integrity": "sha512-4HEzUEmwGPXWJdVhGZ/K+9eWs8kurdn5r/I8qD3/0hb14I0MZvx8K/JOyLhKLgcR4/8/jcr6Xej820BNgNXN7A==" }, - "node_modules/discord-buttons": { - "version": "4.0.0-deprecated", - "resolved": "https://registry.npmjs.org/discord-buttons/-/discord-buttons-4.0.0-deprecated.tgz", - "integrity": "sha512-9pH8YHRumOz9+VJr/MNJEdYDSMJiL0tCJ+wKPtjQQusohJHL1KTTxRtT1PH8snXYQKoevZ1c0YJ3ZWW4uTsIMA==", - "deprecated": "New lib is coming! Join our support server for more help: https://discord.gg/KUS5pjyA4J", - "funding": { - "type": "individual", - "url": "https://ko-fi.com/angelocore" - } - }, "node_modules/discord-gamecord": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/discord-gamecord/-/discord-gamecord-3.0.0.tgz", @@ -5259,19 +5243,6 @@ "once": "^1.4.0" } }, - "node_modules/enquirer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -5343,66 +5314,56 @@ "source-map": "~0.6.1" } }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -5418,49 +5379,31 @@ } }, "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/debug": { @@ -5480,33 +5423,121 @@ } } }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint/node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "node_modules/espree/node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": ">=4" + "node": ">=0.4.0" } }, "node_modules/esprima": { @@ -5533,15 +5564,6 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -5554,20 +5576,10 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, "engines": { "node": ">=4.0" } @@ -5742,6 +5754,17 @@ "extract-zip": "cli.js" } }, + "node_modules/extract-zip/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -5937,6 +5960,15 @@ "fxparser": "src/cli/cli.js" } }, + "node_modules/fastq": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.0.tgz", + "integrity": "sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -6285,12 +6317,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, "node_modules/gamescord": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/gamescord/-/gamescord-1.0.4.tgz", @@ -6580,6 +6606,12 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -6892,9 +6924,9 @@ ] }, "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true, "engines": { "node": ">= 4" @@ -7139,6 +7171,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", @@ -7282,20 +7323,13 @@ "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" @@ -7747,12 +7781,6 @@ "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, "node_modules/lodash.union": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", @@ -8133,14 +8161,17 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", "bin": { - "mkdirp": "bin/cmd.js" + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/mkdirp-classic": { @@ -9766,6 +9797,26 @@ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", @@ -10080,18 +10131,6 @@ "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -10226,15 +10265,6 @@ "node": ">=0.10.0" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", @@ -10298,6 +10328,16 @@ "node": ">=8" } }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, "node_modules/reverbnation-scraper": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/reverbnation-scraper/-/reverbnation-scraper-2.0.0.tgz", @@ -10715,6 +10755,29 @@ "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==" }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -11007,23 +11070,6 @@ "semver": "bin/semver.js" } }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, "node_modules/sliced": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", @@ -11320,12 +11366,6 @@ "node": ">= 12" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, "node_modules/sshpk": { "version": "1.18.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", @@ -11601,64 +11641,6 @@ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" }, - "node_modules/table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/table/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/tar": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", @@ -12347,12 +12329,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/v8-compile-cache": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", - "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", - "dev": true - }, "node_modules/vali-date": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", @@ -12898,6 +12874,18 @@ "fd-slicer": "~1.1.0" } }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/youtube-sr": { "version": "4.3.10", "resolved": "https://registry.npmjs.org/youtube-sr/-/youtube-sr-4.3.10.tgz", diff --git a/package.json b/package.json index 2fc2428..a50f72d 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "canvas": "^2.11.2", "chalk": "^4.1.0", "channelsave-discord": "^1.5.0", + "chart.js": "^4.4.1", "cheerio": "^1.0.0-rc.12", "colors": "^1.4.0", "common-tags": "^1.8.0", diff --git a/src/commands/games/wouldyourather.js b/src/commands/games/wouldyourather.js new file mode 100644 index 0000000..9fc33b7 --- /dev/null +++ b/src/commands/games/wouldyourather.js @@ -0,0 +1,42 @@ +const Command = require("../../structures/Command"); + + +module.exports = class EmptyCommand extends Command { + constructor(...args) { + super(...args, { + name: "wouldyourather", + aliases: [], + description: "wouldyourather", + category: "General", + cooldown: 5, + + }); + } + + async run(message) { + try { + const { WouldYouRather } = require('falgames'); + const Game = new WouldYouRather({ + message: message, + isSlashGame: false, + embed: { + title: 'Would You Rather', + color: '#551476', + + }, + buttons: { + option1: 'Option 1', + option2: 'Option 2', + }, + timeoutTime: 60000, + errMessage: 'Unable to fetch question data! Please try again.', + playerOnlyMessage: 'Only {player} can use these buttons.' + }); + + Game.startGame(); + } catch (error) { + console.error("Error in the empty command:", error); + message.channel.send("An error occurred. Please try again later."); + } + } +}; \ No newline at end of file diff --git a/src/commands/information/profile.js b/src/commands/information/profile.js new file mode 100644 index 0000000..d1e3e34 --- /dev/null +++ b/src/commands/information/profile.js @@ -0,0 +1,55 @@ +// ProfileCommand.js +const Command = require("../../structures/Command"); +const fs = require("fs"); +const { MessageEmbed } = require("discord.js"); + +module.exports = class ProfileCommand extends Command { + constructor(...args) { + super(...args, { + name: "profile", + aliases: ["myprofile"], + description: "View or update your profile.", + category: "User", + cooldown: 5, + }); + } + + async run(message, args) { + try { + // Load existing profiles from JSON file + let profiles = {}; + if (fs.existsSync("/home/vboxuser/Pogy-3/src/data/profiles.json")) { + const data = fs.readFileSync("/home/vboxuser/Pogy-3/src/data/profiles.json"); + profiles = JSON.parse(data); + } + + // Get member ID + const memberId = message.author.id; + + // Check if the member has a profile + if (!profiles[memberId]) { + // Create a new profile if not exists + profiles[memberId] = { + username: message.author.username, + points: 0, + // Add more profile fields as needed + }; + } + + // Display the member's profile card + const profileEmbed = new MessageEmbed() + .setTitle(`${message.author.username}'s Profile`) + .addField("Points") + // Add more fields as needed + .setColor("#3498db"); // Set the embed color + + message.channel.send(profileEmbed); + + // Save updated profiles to JSON file + fs.writeFileSync("profiles.json", JSON.stringify(profiles, null, 2)); + } catch (error) { + console.error("Error in the profile command:", error); + message.channel.send("An error occurred. Please try again later."); + } + } +}; diff --git a/src/commands/stick/sticky.js b/src/commands/stick/sticky.js new file mode 100644 index 0000000..d71b544 --- /dev/null +++ b/src/commands/stick/sticky.js @@ -0,0 +1,62 @@ +const fs = require('fs'); +const path = require('path'); +const Command = require("../../structures/Command"); + +module.exports = class SetupStickyCommand extends Command { + constructor(...args) { + super(...args, { + name: "setupsticky", + aliases: ["setsticky"], + description: "Set up a sticky message in the current channel.", + category: "Moderation", + cooldown: 5, + guildOnly: true, + permissions: ["MANAGE_MESSAGES"], + }); + } + + async run(message, args) { + try { + const guildId = message.guild.id; + const stickyDataDir = path.join(__dirname, '..', '..', 'data', 'stickyData'); + const filePath = path.join(stickyDataDir, `${guildId}.json`); + + if (!fs.existsSync(stickyDataDir)) { + fs.mkdirSync(stickyDataDir, { recursive: true }); + } + + let stickyData = {}; + + if (fs.existsSync(filePath)) { + stickyData = JSON.parse(fs.readFileSync(filePath)); + } + + const stickyContent = args.join(' ') || 'This is a sticky message!'; + const stickyChannelId = message.channel.id; + + // Delete the previous sticky message if exists + const currentStickyMessageId = stickyData[stickyChannelId]; + if (currentStickyMessageId) { + const previousStickyMessage = await message.channel.messages.fetch(currentStickyMessageId); + if (previousStickyMessage) { + await previousStickyMessage.delete(); + } + } + + // Send the new sticky message + const newStickyMessage = await message.channel.send(stickyContent); + stickyData[stickyChannelId] = newStickyMessage.id; + stickyData[`${stickyChannelId}_content`] = stickyContent; // Store the content in the data + saveStickyData(filePath, stickyData); + + message.channel.send("Sticky message has been set up!"); + } catch (error) { + console.error("Error in the setupsticky command:", error); + message.channel.send("An error occurred. Please try again later."); + } + } +}; + +function saveStickyData(filePath, data) { + fs.writeFileSync(filePath, JSON.stringify(data, null, 2)); +} diff --git a/src/commands/testing/gametest b/src/commands/testing/gametest new file mode 100644 index 0000000..4cd878a --- /dev/null +++ b/src/commands/testing/gametest @@ -0,0 +1,58 @@ +const Command = require("../../structures/Command"); +const Discord = require('discord.js'); // Import the Discord.js library + +const prefix = '!'; // Set your desired prefix + +module.exports = class EmptyCommand extends Command { + constructor(...args) { + super(...args, { + name: "empty2", + aliases: [], + description: "Empty command template.", + category: "General", + cooldown: 5, + }); + } + + async run(message) { + try { + const gridSize = 10; + let gameGrid = Array.from(Array(gridSize), () => new Array(gridSize).fill('◻️')); + + // Create a new Discord.Client instance + const msg = message.channel + startTetrisGame(msg.channel); + + function startTetrisGame(channel) { + // Initialize game state and send the initial game grid + gameGrid = Array.from(Array(gridSize), () => new Array(gridSize).fill('◻️')); + sendGameGrid(channel); + + // Game loop + const gameInterval = setInterval(() => { + // Update game state here + // Check for user input, move pieces, update grid, etc. + + // Send updated game grid + sendGameGrid(channel); + }, 1000); // Update every second + + // End the game after a certain time or condition + setTimeout(() => { + clearInterval(gameInterval); + channel.send('Game Over!'); + }, 60000); // End the game after 60 seconds + } + + function sendGameGrid(channel) { + const gameMessage = gameGrid.map(row => row.join('')).join('\n'); + channel.send(`\`\`\`${gameMessage}\`\`\``); + } + + // Log in to Discord with the bot token + } catch (error) { + console.error("Error in the empty command:", error); + message.channel.send("An error occurred. Please try again later."); + } + } +}; diff --git a/src/commands/testing/hidetest.js b/src/commands/testing/hidetest.js new file mode 100644 index 0000000..8b8bbf4 --- /dev/null +++ b/src/commands/testing/hidetest.js @@ -0,0 +1,47 @@ +// HideChannelsCommand.js +const Command = require("../../structures/Command"); +const { createAudioPlayer, joinVoiceChannel, createAudioResource } = require('@discordjs/voice'); +const { createReadStream } = require('fs'); +const path = require('path'); +module.exports = class HideChannelsCommand extends Command { + constructor(...args) { + super(...args, { + name: "hidechannels", + aliases: ["hidechans"], + description: "Hide all channels from regular members, making them visible only to owners and admins.", + category: "Moderation", + cooldown: 10, + // Add any other command options or configurations + }); + } + + async run(message) { + try { + + // Fetch all channels in the server + const channels = message.guild.channels.cache; + + // Iterate through each channel and update permissions + channels.forEach(async (channel) => { + try { + // Check if the channel is a text or voice channel + if (channel.type === "text" || channel.type === "voice") { + await channel.updateOverwrite(message.guild.roles.everyone, { VIEW_CHANNEL: false }); + await channel.updateOverwrite(message.guild.ownerID, { VIEW_CHANNEL: true }); + // You can add more roles (like admin roles) if needed + + message.channel.send(`Channel ${channel.name} is now visible only to owners and admins.`); + } + } catch (error) { + console.error(`Error updating channel permissions for ${channel.name}:`, error); + message.channel.send(`An error occurred while updating permissions for ${channel.name}.`); + } + }); + + message.channel.send("All channels have been hidden from regular members."); + } catch (error) { + console.error("Error in the hidechannels command:", error); + message.channel.send("An error occurred. Please try again later."); + } + } +}; diff --git a/src/commands/testing/how to use inpiut.js b/src/commands/testing/how to use inpiut.js new file mode 100644 index 0000000..86cccb8 --- /dev/null +++ b/src/commands/testing/how to use inpiut.js @@ -0,0 +1,27 @@ +// EmptyCommand.js +const Command = require("../../structures/Command"); +// Add any additional dependencies or modules as needed + +module.exports = class EmptyCommand extends Command { + constructor(...args) { + super(...args, { + name: "slowmode", + aliases: [], + description: "Sets the slow mode of the current channel", + category: "Moderation", + cooldown: 5, + + }); + } + + async run(message) { + try { + const test = message.content.split(" "); + + message.channel.send("This is an empty command template. Implement your logic here." + test[1]); + } catch (error) { + console.error("Error in the empty command:", error); + message.channel.send("An error occurred. Please try again later."); + } + } +}; \ No newline at end of file diff --git a/src/commands/testing/mad.js b/src/commands/testing/mad.js new file mode 100644 index 0000000..7f83279 --- /dev/null +++ b/src/commands/testing/mad.js @@ -0,0 +1,63 @@ +const { MessageActionRow, MessageButton } = require('discord.js'); +const Command = require("../../structures/Command"); + +module.exports = class MadCommand extends Command { + constructor(...args) { + super(...args, { + name: "mad", + aliases: [], + description: "Create a Mad Libs story.", + category: "Fun", + cooldown: 5, + }); + } + + async run(message) { + const collectedWords = { + noun: "", + verb: "", + adjective: "", + }; + + const askForWord = async (wordType) => { + const row = new MessageActionRow().addComponents( + new MessageButton().setCustomId(`confirm_${wordType}`).setLabel('Confirm').setStyle('SUCCESS'), + new MessageButton().setCustomId(`retry_${wordType}`).setLabel('Retry').setStyle('PRIMARY'), + ); + + const sentMessage = await message.channel.send(`Enter a ${wordType}:`, { components: [row] }); + + const filter = (i) => i.user.id === message.author.id; + const collector = sentMessage.createMessageComponentCollector({ filter, time: 30000 }); + + return new Promise((resolve, reject) => { + collector.on('collect', async (i) => { + if (i.customId === `confirm_${wordType}`) { + collector.stop(); + resolve(collectedWords[wordType]); + } else if (i.customId === `retry_${wordType}`) { + collector.stop(); + const response = await askForWord(wordType); + collectedWords[wordType] = response; + } + }); + + collector.on('end', (collected, reason) => { + if (reason === 'time') { + reject(`Time is up! ${wordType} not provided.`); + } + }); + }); + }; + + // Ask for each word type + collectedWords.noun = await askForWord("noun"); + collectedWords.verb = await askForWord("verb"); + collectedWords.adjective = await askForWord("adjective"); + + // Display the Mad Libs story + if (collectedWords.noun && collectedWords.verb && collectedWords.adjective) { + message.channel.send(`The ${collectedWords.adjective} ${collectedWords.noun} ${collectedWords.verb} and was very ${collectedWords.adjective}.`); + } + } +}; diff --git a/src/commands/testing/randomword.js b/src/commands/testing/randomword.js new file mode 100644 index 0000000..57358a1 --- /dev/null +++ b/src/commands/testing/randomword.js @@ -0,0 +1,32 @@ +const Command = require("../../structures/Command"); +const {MessageEmbed} = require('discord.js'); + +module.exports = class EmptyCommand extends Command { + constructor(...args) { + super(...args, { + name: "empty3", + aliases: [], + description: "Empty command template.", + category: "General", + cooldown: 5, + + }); + } + + async run(message) { + try { + // fetch stuff from a url + const fetch = require("node-fetch"); + const response = await fetch("https://cv75jg-3030.csb.app/meme/"); + const data = await response.json(); + const embed = new MessageEmbed() + .setColor("#FF5733") + .setTitle(data.id) + .setImage(data.url) + message.channel.send({ embeds: [embed] }); + } catch (error) { + console.error("Error in the empty command:", error); + message.channel.send("An error occurred. Please try again later."); + } + } +}; diff --git a/src/commands/testing/test3.js b/src/commands/testing/test3.js new file mode 100644 index 0000000..a9555e3 --- /dev/null +++ b/src/commands/testing/test3.js @@ -0,0 +1,77 @@ +const Command = require("../../structures/Command"); +const { + MessageEmbed, + MessageActionRow, + MessageButton, + MessageAttachment, +} = require("discord.js"); +const Guild = require("../../database/schemas/Guild"); +const fs = require("fs"); +const path = require("path"); +const emojis = require("../../assets/emojis.json"); + +function checkDays(date) { + let now = new Date(); + let diff = now.getTime() - date.getTime(); + let days = Math.floor(diff / 86400000); + return days + (days == 1 ? " day" : " days") + " ago"; +} + +module.exports = class extends Command { + constructor(...args) { + super(...args, { + name: "serverinfo2", + aliases: ["server", "si", "guildinfo", "info"], + description: "Displays information about the current server.", + category: "Information", + guildOnly: true, + cooldown: 3, + }); + } + + async run(message) { + const guildDB = await Guild.findOne({ + guildId: message.guild.id, + }); + + + const embed = new MessageEmbed() + .setAuthor(message.guild.name, message.guild.iconURL()) + .setDescription("this is a test") + + .setThumbnail(message.guild.iconURL()) + .setColor(message.guild.me.displayHexColor); + + const row = new MessageActionRow().addComponents( + new MessageButton() + .setCustomId("test") + .setLabel("testinng") + .setStyle("SUCCESS") + .setEmoji(`${emojis.utility}`) + ); + + const sentMessage = await message.channel.sendCustom({ + embeds: [embed], + components: [row], + }); + + + const collector = sentMessage.createMessageComponentCollector({ + filter, + time: 15000, + }); + + collector.on("collect", async (i) => { + const htmlContent = `meow + `; + + sentMessage.edit({ components: [] }); + }); + + collector.on("end", (collected) => { + if (collected.size === 0) { + sentMessage.edit({ components: [] }); + } + }); + } +}; diff --git a/src/commands/utility/poll.js b/src/commands/utility/poll.js new file mode 100644 index 0000000..a3172e3 --- /dev/null +++ b/src/commands/utility/poll.js @@ -0,0 +1,100 @@ +// PollCommand.js +const Command = require("../../structures/Command"); +const { MessageEmbed } = require("discord.js"); +const Guild = require("../../database/schemas/Guild"); + +module.exports = class PollCommand extends Command { + constructor(...args) { + super(...args, { + name: "poll", + aliases: [], + description: "Start or show a poll.", + category: "General", + cooldown: 5, + }); + } + + async run(message, args) { + try { + // Check if the server is premium + const guildDB = await Guild.findOne({ + guildId: message.guild.id, + }); + + if (!guildDB) { + return message.channel.send("Error fetching server information."); + } + + const isPremium = guildDB.isPremium === "true"; + + // Parse command arguments + const command = args[0]; + const pollMessage = args.slice(1).join(" "); + + if (command === "show") { + // Show the poll based on message ID or link + const pollID = args[1]; + const pollMessage = await this.getExistingPoll(pollID); + return message.channel.send(pollMessage); + } else if (command === "start") { + // Parse choices from the message content + const choices = this.parseChoices(pollMessage); + + // Check if the user has premium for extended choices + const maxChoices = isPremium ? 20 : 10; + + if (choices.length > maxChoices) { + return message.channel.send(`You can only have a maximum of ${maxChoices} choices.`); + } + + // Create and send the poll message + const pollEmbed = this.createPollEmbed(choices); + const pollMessage = await message.channel.send(pollEmbed); + + // Add reactions to the choices + for (let i = 0; i < choices.length; i++) { + await pollMessage.react(`${i + 1}\u20e3`); // React with number emojis + } + + return message.channel.send(`Poll started!`); + } else { + return message.channel.send("Invalid poll command. Use `start` or `show`."); + } + } catch (error) { + console.error("Error in the poll command:", error); + message.channel.send("An error occurred. Please try again later."); + } + } + + parseChoices(pollMessage) { + // Extract choices from the message content + const choices = pollMessage.match(/"([^"]*)"/g); + + if (!choices) { + throw new Error("Invalid poll format. Provide choices in double quotes."); + } + + return choices.map((choice) => choice.slice(1, -1)); // Remove quotes + } + + createPollEmbed(choices) { + // Create an embed with poll choices + const embed = new MessageEmbed() + .setTitle("Poll") + .setDescription(choices.map((choice, index) => `${index + 1}. ${choice}`).join("\n")) + .setColor("#3498db"); + + return embed; + } + + async getExistingPoll(pollID) { + // Fetch the poll message using ID or link + const pollMessage = await message.channel.messages.fetch(pollID, false).catch(() => null); + + if (!pollMessage) { + throw new Error("Poll not found. Please provide a valid message ID or link."); + } + + return pollMessage.content; + } +}; diff --git a/src/dashboard/dashboard.js b/src/dashboard/dashboard.js index b7a5c32..acf5a35 100644 --- a/src/dashboard/dashboard.js +++ b/src/dashboard/dashboard.js @@ -386,7 +386,15 @@ app.get('/dashboard/:guildID/stats', async (req, res) => { memberCount++; } }); - + const moderatorCount = guildMembersbot.filter( + (member) => member.permissions.has("KICK_MEMBERS") + ).size; + const admincount = guildMembersbot.filter((member) => member.permissions.has("ADMINISTRATOR") + ).size; + const modactions = await guild.fetchAuditLogs({ + limit: 10, + type: "MEMBER_KICK", // You can change this type to the desired audit log event type + }); //Nickname let data = req.body; let nickname = data.nickname; @@ -416,6 +424,9 @@ app.get('/dashboard/:guildID/stats', async (req, res) => { leave2: leave2.length || 0, botCount: botCount, memberCount: memberCount, + modactions: modactions.entries, + admincount: admincount, + moderatorCount: moderatorCount, memberRolesCount: JSON.stringify(memberRolesCount), nickname: guild.me.nickname || guild.me.user.username, }); diff --git a/src/dashboard/templates/new/mainpage.ejs b/src/dashboard/templates/new/mainpage.ejs index 21dfc02..186b2db 100644 --- a/src/dashboard/templates/new/mainpage.ejs +++ b/src/dashboard/templates/new/mainpage.ejs @@ -40,51 +40,88 @@ } -
+
diff --git a/src/dashboard/templates/new/mainreactionroles.ejs b/src/dashboard/templates/new/mainreactionroles.ejs index e4c7da8..23080f5 100644 --- a/src/dashboard/templates/new/mainreactionroles.ejs +++ b/src/dashboard/templates/new/mainreactionroles.ejs @@ -36,52 +36,88 @@ -
+
diff --git a/src/dashboard/templates/new/mainreports.ejs b/src/dashboard/templates/new/mainreports.ejs index 9d82ebf..8a977ad 100644 --- a/src/dashboard/templates/new/mainreports.ejs +++ b/src/dashboard/templates/new/mainreports.ejs @@ -1,18 +1,16 @@ - - - - - - - - - - - - + + + + + + + + + + + + <%- include("../partials/dashMenu", { bot, user, path, description, title: `Chaotic- Dashboard`, url})%> @@ -31,216 +29,266 @@ } %> -
+
- -
- -
- <% if (alert) { %> - -<% } %> -

Report Channel

-
-
Sets the Report Channel for the current Guild
-
-

Select Channel

- -
- -
- - - - -
- -
-

Additional Settings

-
-

Additional Customizations for the guild.

-
- -

Report Color

-

Disable Issue Reports

-<% if(settings.report.disableIssue == "true") {%> - -<% } else { %> - -<% } %> -

Disable User Reports

+ + +
+ <% if (alert) { %> + + <% } %> +

Report Channel

+
+
Sets the Report Channel for the current Guild
+
+

Select Channel

+ +
+ +
+ + + -<% if(settings.report.disableUser == "true") {%> - -<% } else { %> - -<% } %> -

<% if(settings.isPremium == "false"){ %>Enable report Upvotes

-<% } else { %> -

Enable report Upvotes

-<% } %> -<% if(settings.report.upvote == "true") {%> - -<% } else { %> - -<% } %> - +
+

Additional Settings

+
+

Additional Customizations for the guild.

+
+ +

Report Color

+

Disable Issue Reports

+ <% if(settings.report.disableIssue == "true") {%> + + <% } else { %> + + <% } %> + +

Disable User Reports

+ + <% if(settings.report.disableUser == "true") {%> + + <% } else { %> + + <% } %> +

<% if(settings.isPremium == "false"){ %>Enable report Upvotes

+ <% } else { %> +

Enable report Upvotes

+ <% } %> + <% if(settings.report.upvote == "true") {%> + + <% } else { %> + + <% } %> + + -
- - +
-
- -
+
- +
@@ -251,193 +299,216 @@ <% } %> - - + + <%- include("../partials/footer") %> - + + $.fn.tooltip.noConflict = function() { + $.fn.tooltip = old + return this + } + }(window.jQuery); + \ No newline at end of file diff --git a/src/dashboard/templates/new/mainstats.ejs b/src/dashboard/templates/new/mainstats.ejs index cfb98a4..0e2da37 100644 --- a/src/dashboard/templates/new/mainstats.ejs +++ b/src/dashboard/templates/new/mainstats.ejs @@ -122,7 +122,8 @@

Roles Statistics

Roles in the server: <%= roles %>

- +

mod Statistics

+

Roles in the server: <%= modactions %>

Member Roles Distribution