From e5046a95a039d6af3fd7538b4309f2b7f798c197 Mon Sep 17 00:00:00 2001 From: John Doe <69335633+Jejebecarte@users.noreply.github.com> Date: Sat, 2 Mar 2024 16:54:17 +1100 Subject: [PATCH] refactor: remove rank emojis --- .env.template | 1 - .gitignore | 4 +- README.md | 15 -- package.json | 4 +- pnpm-lock.yaml | 172 ++---------------- setupFiles.js | 2 +- src/commands/blacklist.ts | 2 +- src/commands/emojis.ts | 118 ------------ src/events/discord/message.ts | 2 +- src/events/mineflayer/chat/commentBlocked.ts | 2 +- src/events/mineflayer/chat/guildChat.ts | 8 +- src/events/mineflayer/chat/guildMuteUnmute.ts | 22 +-- src/events/mineflayer/chat/joinLeave.ts | 2 +- src/events/mineflayer/chat/joinRequest.ts | 2 +- src/events/mineflayer/chat/memberJoinLeave.ts | 13 +- src/events/mineflayer/chat/memberKick.ts | 13 +- src/events/mineflayer/chat/promoteDemote.ts | 11 +- src/events/mineflayer/chat/questComplete.ts | 2 +- .../mineflayer/chat/questTierComplete.ts | 2 +- src/events/mineflayer/handler/kicked.ts | 2 +- src/events/mineflayer/handler/login.ts | 2 +- src/interfaces/EmojiIds.ts | 8 - src/interfaces/Ranks.ts | 22 --- .../{ => blacklist}/_blacklist.json.template | 0 src/util/{ => blacklist}/isUserBlacklisted.ts | 2 +- src/util/{emojis/chatEmojis.ts => emojis.ts} | 0 src/util/emojis/_emojiIds.json.template | 8 - src/util/emojis/getEmojiBuffers.ts | 17 -- src/util/emojis/getRankData.ts | 46 ----- src/util/emojis/images/mvp++/mvpPlusPlus1.png | Bin 2007 -> 0 bytes src/util/emojis/images/mvp++/mvpPlusPlus2.png | Bin 2008 -> 0 bytes src/util/emojis/images/mvp++/mvpPlusPlus3.png | Bin 1843 -> 0 bytes src/util/emojis/images/mvp++/mvpPlusPlus4.png | Bin 1841 -> 0 bytes src/util/emojis/images/mvp+/mvpPlus1.png | Bin 1730 -> 0 bytes src/util/emojis/images/mvp+/mvpPlus2.png | Bin 1784 -> 0 bytes src/util/emojis/images/mvp+/mvpPlus3.png | Bin 1820 -> 0 bytes src/util/emojis/images/mvp+/mvpPlus4.png | Bin 2006 -> 0 bytes src/util/emojis/images/mvp/mvp1.png | Bin 2142 -> 0 bytes src/util/emojis/images/mvp/mvp2.png | Bin 2167 -> 0 bytes src/util/emojis/images/mvp/mvp3.png | Bin 2170 -> 0 bytes src/util/emojis/images/vip+/vipPlus1.png | Bin 2040 -> 0 bytes src/util/emojis/images/vip+/vipPlus2.png | Bin 2085 -> 0 bytes src/util/emojis/images/vip+/vipPlus3.png | Bin 2189 -> 0 bytes src/util/emojis/images/vip/vip1.png | Bin 1974 -> 0 bytes src/util/emojis/images/vip/vip2.png | Bin 1812 -> 0 bytes src/util/emojis/images/vip/vip3.png | Bin 1815 -> 0 bytes src/util/emojis/images/youtube/youtube1.png | Bin 2118 -> 0 bytes src/util/emojis/images/youtube/youtube2.png | Bin 2349 -> 0 bytes src/util/emojis/images/youtube/youtube3.png | Bin 2351 -> 0 bytes src/util/emojis/images/youtube/youtube4.png | Bin 2109 -> 0 bytes src/util/emojis/images/youtube/youtube5.png | Bin 2124 -> 0 bytes src/util/getRankColor.ts | 22 +++ 52 files changed, 76 insertions(+), 450 deletions(-) delete mode 100644 src/commands/emojis.ts delete mode 100644 src/interfaces/EmojiIds.ts delete mode 100644 src/interfaces/Ranks.ts rename src/util/{ => blacklist}/_blacklist.json.template (100%) rename src/util/{ => blacklist}/isUserBlacklisted.ts (74%) rename src/util/{emojis/chatEmojis.ts => emojis.ts} (100%) delete mode 100644 src/util/emojis/_emojiIds.json.template delete mode 100644 src/util/emojis/getEmojiBuffers.ts delete mode 100644 src/util/emojis/getRankData.ts delete mode 100644 src/util/emojis/images/mvp++/mvpPlusPlus1.png delete mode 100644 src/util/emojis/images/mvp++/mvpPlusPlus2.png delete mode 100644 src/util/emojis/images/mvp++/mvpPlusPlus3.png delete mode 100644 src/util/emojis/images/mvp++/mvpPlusPlus4.png delete mode 100644 src/util/emojis/images/mvp+/mvpPlus1.png delete mode 100644 src/util/emojis/images/mvp+/mvpPlus2.png delete mode 100644 src/util/emojis/images/mvp+/mvpPlus3.png delete mode 100644 src/util/emojis/images/mvp+/mvpPlus4.png delete mode 100644 src/util/emojis/images/mvp/mvp1.png delete mode 100644 src/util/emojis/images/mvp/mvp2.png delete mode 100644 src/util/emojis/images/mvp/mvp3.png delete mode 100644 src/util/emojis/images/vip+/vipPlus1.png delete mode 100644 src/util/emojis/images/vip+/vipPlus2.png delete mode 100644 src/util/emojis/images/vip+/vipPlus3.png delete mode 100644 src/util/emojis/images/vip/vip1.png delete mode 100644 src/util/emojis/images/vip/vip2.png delete mode 100644 src/util/emojis/images/vip/vip3.png delete mode 100644 src/util/emojis/images/youtube/youtube1.png delete mode 100644 src/util/emojis/images/youtube/youtube2.png delete mode 100644 src/util/emojis/images/youtube/youtube3.png delete mode 100644 src/util/emojis/images/youtube/youtube4.png delete mode 100644 src/util/emojis/images/youtube/youtube5.png create mode 100644 src/util/getRankColor.ts diff --git a/.env.template b/.env.template index 8635041e..3003a69a 100644 --- a/.env.template +++ b/.env.template @@ -23,7 +23,6 @@ REMINDER_FREQUENCY=60 DISCORD_TOKEN=xxxxxxxxxxxxxxxxx DISCORD_PREFIX=) DISCORD_INVITE_LINK=discord.gg/ -USE_RANK_EMOJIS=false MEMBER_CHANNEL_ID=xxxxxxxxxxxxxxxxx OFFICER_CHANNEL_ID=xxxxxxxxxxxxxxxxx diff --git a/.gitignore b/.gitignore index 9e94d2b8..e7bde6ef 100644 --- a/.gitignore +++ b/.gitignore @@ -76,8 +76,7 @@ history/ .env.test # Blacklist and emojis file -src/util/_blacklist.json -src/util/emojis/_emojiIds.json +src/util/blacklist/_blacklist.json # parcel-bundler cache (https://parceljs.org/) .cache @@ -122,6 +121,5 @@ dist .yarn/install-state.gz .pnp.* - #MacOSX SHIT .DS_Store \ No newline at end of file diff --git a/README.md b/README.md index ed1637a1..4da7d6c1 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,6 @@ - [Installation](#installation) - [Prerequisites](#prerequisites) - [Setup](#setup) - - [Rank Emojis](#rank-emojis) - [Process Management](#process-management) - [Contributing](#contributing) - [Issues and Bug Reports](#issues-and-bug-reports) @@ -38,7 +37,6 @@ - Bridges between Discord and Hypixel guild chats. - Sends all guild related messages, including chat, guild announcements and more to Discord. - Automatic restarts and reconnections. -- Toggleable use of Discord emojis for Hypixel ranks in chat messages. - Privileged slash commands to control bot behaviour in-game. - Toggleable slowmode to control member usage. - Basic filtering of extreme profanity to protect bot accounts from abuse. @@ -97,19 +95,6 @@ $ pnpm run build $ pnpm start ``` -### Rank Emojis - -Optionally, you may activate the use of rank emojis in discord messages by following these steps: - -1. Run the `/emojis upload` command in a discord server of your choice. - - > **Note** - > It is recommended to run this command in an alternate server, as it uses a significant number of emoji slots. In this case, the user of id `BOT_OWNER_ID` is the only person with permission to run this command. - -2. Set the value of `USE_RANK_EMOJIS` in the `.env` file to `true`, or `false` to disable this feature. - -If at any time you wish to delete the emojis created by the bot, run the `/emojis remove` command. - ### Process Management If you are self-hosting or your process manager does not automatically restart the bot in the event of a crash, you may use [PM2](https://pm2.keymetrics.io/), a process manager for Node.js applications. diff --git a/package.json b/package.json index dc25276a..a19393d1 100644 --- a/package.json +++ b/package.json @@ -5,9 +5,8 @@ "license": "MIT", "private": false, "scripts": { - "build": "tsc && pnpm copy-files", + "build": "tsc", "clean": "rm -r dist/", - "copy-files": "copyfiles -u 1 src/**/*.png dist/", "dev": "ts-node-dev --respawn --transpile-only --poll src/index.ts", "lint:fix": "pnpm lint --fix", "lint": "eslint . --ext .ts,.tsx", @@ -22,7 +21,6 @@ }, "dependencies": { "consola": "^2.15.3", - "copyfiles": "^2.4.1", "discord.js": "14.10.2", "dotenv": "^16.0.3", "mineflayer": "^4.4.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dd12cd3d..063db655 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,9 +8,6 @@ dependencies: consola: specifier: ^2.15.3 version: 2.15.3 - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 discord.js: specifier: 14.10.2 version: 14.10.2 @@ -519,12 +516,14 @@ packages: /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + dev: true /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 + dev: true /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} @@ -565,6 +564,7 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -580,6 +580,7 @@ packages: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 + dev: true /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} @@ -636,22 +637,16 @@ packages: fsevents: 2.3.3 dev: true - /cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: false - /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 + dev: true /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} @@ -666,28 +661,12 @@ packages: /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true /consola@2.15.3: resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} dev: false - /copyfiles@2.4.1: - resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==} - hasBin: true - dependencies: - glob: 7.2.3 - minimatch: 3.1.2 - mkdirp: 1.0.4 - noms: 0.0.0 - through2: 2.0.5 - untildify: 4.0.0 - yargs: 16.2.0 - dev: false - - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: false - /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true @@ -788,19 +767,10 @@ packages: safe-buffer: 5.2.1 dev: false - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: false - /endian-toggle@0.0.0: resolution: {integrity: sha512-ShfqhXeHRE4TmggSlHXG8CMGIcsOsqDw/GcoPcosToE59Rm9e4aXaMhEQf2kPBsBRrKem1bbOAv5gOKnkliMFQ==} dev: false - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - dev: false - /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -1025,6 +995,7 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} @@ -1038,11 +1009,6 @@ packages: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} dev: true - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: false - /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1066,6 +1032,7 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 + dev: true /globals@13.23.0: resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} @@ -1129,6 +1096,7 @@ packages: dependencies: once: 1.4.0 wrappy: 1.0.2 + dev: true /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -1151,11 +1119,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: false - /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -1173,14 +1136,6 @@ packages: engines: {node: '>=8'} dev: true - /isarray@0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - dev: false - - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: false - /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true @@ -1410,6 +1365,7 @@ packages: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 + dev: true /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -1419,6 +1375,7 @@ packages: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true + dev: true /mojangson@2.0.4: resolution: {integrity: sha512-HYmhgDjr1gzF7trGgvcC/huIg2L8FsVbi/KacRe6r1AswbboGVZDS47SOZlomPuMWvZLas8m9vuHHucdZMwTmQ==} @@ -1473,13 +1430,6 @@ packages: asn1: 0.2.3 dev: false - /noms@0.0.0: - resolution: {integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==} - dependencies: - inherits: 2.0.4 - readable-stream: 1.0.34 - dev: false - /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -1494,6 +1444,7 @@ packages: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 + dev: true /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} @@ -1536,6 +1487,7 @@ packages: /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} + dev: true /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} @@ -1703,10 +1655,6 @@ packages: vec3: 0.1.8 dev: false - /process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: false - /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} @@ -1749,27 +1697,6 @@ packages: ret: 0.1.15 dev: false - /readable-stream@1.0.34: - resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - dev: false - - /readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: false - /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} @@ -1804,11 +1731,6 @@ packages: picomatch: 2.3.1 dev: true - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: false - /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -1910,25 +1832,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: false - - /string_decoder@0.10.31: - resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} - dev: false - - /string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - dev: false - /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: @@ -1940,6 +1843,7 @@ packages: engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 + dev: true /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} @@ -1980,13 +1884,6 @@ packages: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - dependencies: - readable-stream: 2.3.8 - xtend: 4.0.2 - dev: false - /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -2143,11 +2040,6 @@ packages: '@fastify/busboy': 2.1.0 dev: false - /untildify@4.0.0: - resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} - engines: {node: '>=8'} - dev: false - /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -2195,17 +2087,9 @@ packages: isexe: 2.0.0 dev: true - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: false - /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true /ws@8.14.2: resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} @@ -2223,37 +2107,15 @@ packages: /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} + dev: true /xxhash-wasm@0.4.2: resolution: {integrity: sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==} dev: false - /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: false - /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - /yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - dev: false - - /yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - dependencies: - cliui: 7.0.4 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - dev: false - /yggdrasil@1.7.0: resolution: {integrity: sha512-QBIo5fiNd7688G3FqXXYGr36uyrYzczlNuzpWFy2zL3+R+3KT2lF+wFxm51synfA3l3z6IBiGOc1/EVXWCYY1Q==} dependencies: diff --git a/setupFiles.js b/setupFiles.js index baed9d85..1191fca7 100644 --- a/setupFiles.js +++ b/setupFiles.js @@ -1,7 +1,7 @@ // eslint-disable-next-line @typescript-eslint/no-var-requires const fs = require("fs"); -const files = [".env", "src/util/_blacklist.json", "src/util/emojis/_emojiIds.json"]; +const files = [".env", "src/util/_blacklist.json"]; for (const newPath of files) { const oldPath = `${newPath}.template`; diff --git a/src/commands/blacklist.ts b/src/commands/blacklist.ts index 1a160676..102ef80e 100644 --- a/src/commands/blacklist.ts +++ b/src/commands/blacklist.ts @@ -1,7 +1,7 @@ import { ApplicationCommandOptionType, EmbedBuilder, TextChannel } from "discord.js"; import { BlacklistEntry } from "../interfaces/BlacklistEntry"; import { Command } from "../interfaces/Command"; -import _blacklist from "../util/_blacklist.json"; +import _blacklist from "../util/blacklist/_blacklist.json"; import fetchErrorEmbed from "../util/requests/fetchErrorEmbed"; import fetchMojangProfile from "../util/requests/fetchMojangProfile"; import isFetchError from "../util/requests/isFetchError"; diff --git a/src/commands/emojis.ts b/src/commands/emojis.ts deleted file mode 100644 index 4308206a..00000000 --- a/src/commands/emojis.ts +++ /dev/null @@ -1,118 +0,0 @@ -import { ApplicationCommandOptionType, EmbedBuilder, GuildPremiumTier } from "discord.js"; -import { Emoji, EmojiIds } from "../interfaces/EmojiIds"; -import { VerboseHypixelRank, VerboseHypixelRanks } from "../interfaces/Ranks"; -import { Command } from "../interfaces/Command"; -import _emojiIds from "../util/emojis/_emojiIds.json"; -import getEmojiBuffers from "../util/emojis/getEmojiBuffers"; -import writeToJsonFile from "../util/writeToJsonFile"; - -export default { - data: { - name: "emojis", - description: "Upload or remove Hypixel rank emojis", - options: [ - { - name: "upload", - description: "Upload all Hypixel rank emojis to the server!", - type: ApplicationCommandOptionType.Subcommand, - }, - { - name: "remove", - description: "Remove all Hypixel rank emojis from the server!", - type: ApplicationCommandOptionType.Subcommand, - }, - ], - }, - run: async (bot, interaction) => { - const type = interaction.options.getSubcommand() as "upload" | "remove"; - const emojiIds = _emojiIds as EmojiIds; - - await interaction.deferReply(); - - if (type === "upload") { - let maxEmojis: GuildPremiumTier; - switch (interaction.guild?.premiumTier) { - case GuildPremiumTier.Tier1: - maxEmojis = 100; - break; - case GuildPremiumTier.Tier2: - maxEmojis = 150; - break; - case GuildPremiumTier.Tier3: - maxEmojis = 250; - break; - default: - maxEmojis = 50; - break; - } - - const emojiBuffers = await getEmojiBuffers(); - - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - if (interaction.guild!.emojis.cache.size + Object.keys(emojiBuffers).length > maxEmojis) { - const embed = new EmbedBuilder() - .setColor("Red") - .setTitle("Error") - .setDescription( - `Not enough emoji slots! This command requires ${Object.keys(emojiBuffers).length} open slots.`, - ); - interaction.editReply({ embeds: [embed] }); - return; - } - - for (const [name, buffer] of Object.entries(emojiBuffers)) { - const rankName = Object.keys(VerboseHypixelRanks).find( - (rank) => name.toString().replace(/[0-9]/g, "") === rank, - ) as VerboseHypixelRank | undefined; - - if (!rankName) { - const embed = new EmbedBuilder() - .setColor("Red") - .setTitle("Error") - .setDescription(`An unexpected error occured: Unkown emoji ${name}`); - - await interaction.editReply({ embeds: [embed] }); - return; - } - - // Check if the rank has no value - if (!emojiIds[rankName]) { - emojiIds[rankName] = []; - } - - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - const emoji = await interaction.guild!.emojis.create({ attachment: buffer, name: name }); - (emojiIds[rankName] as Emoji[]).push({ name: emoji.name as string, id: emoji.id }); - } - } else if (type === "remove") { - for (const emojis of Object.values(emojiIds)) { - for (const emoji of emojis) { - try { - bot.discord.emojis.cache.get(emoji.id)?.delete(); - } catch (e) { - // Delete emoji anyhow, as to avoid causing errors in the future - emojis.splice(emojis.indexOf(emoji)); - - const embed = new EmbedBuilder() - .setColor("Red") - .setTitle("Error") - .setDescription(`Failed to delete emoji ${emoji.name}`); - - await interaction.editReply({ embeds: [embed] }); - return; - } - - emojis.splice(emojis.indexOf(emoji)); - } - } - } - - const successEmbed = new EmbedBuilder() - .setColor("Green") - .setTitle("✅ Done") - .setDescription(`All Hypixel rank emojis have been ${type === "upload" ? "uploaded" : "removed"}!`); - - writeToJsonFile("./src/util/emojis/_emojiIds.json", emojiIds, interaction, successEmbed); - }, - staffonly: true, -} as Command; diff --git a/src/events/discord/message.ts b/src/events/discord/message.ts index 76c3e1b7..062aebca 100644 --- a/src/events/discord/message.ts +++ b/src/events/discord/message.ts @@ -1,7 +1,7 @@ import { Message } from "discord.js"; import { DataSet, RegExpMatcher, englishDataset, englishRecommendedTransformers } from "obscenity"; import { Event } from "../../interfaces/Event"; -import emojis from "../../util/emojis/chatEmojis"; +import emojis from "../../util/emojis"; const whitelist = ["ass", "bitch", "cock", "dick", "fuck"]; const dataset = new DataSet<{ originalWord: string }>() diff --git a/src/events/mineflayer/chat/commentBlocked.ts b/src/events/mineflayer/chat/commentBlocked.ts index 380dd6d3..77d7e9e9 100644 --- a/src/events/mineflayer/chat/commentBlocked.ts +++ b/src/events/mineflayer/chat/commentBlocked.ts @@ -1,4 +1,4 @@ -import Emojis from "../../../util/emojis/chatEmojis"; +import Emojis from "../../../util/emojis"; import { Event } from "../../../interfaces/Event"; export default { diff --git a/src/events/mineflayer/chat/guildChat.ts b/src/events/mineflayer/chat/guildChat.ts index 2eb27693..9e28a68a 100644 --- a/src/events/mineflayer/chat/guildChat.ts +++ b/src/events/mineflayer/chat/guildChat.ts @@ -1,7 +1,6 @@ import { Event } from "../../../interfaces/Event"; -import { HypixelRank } from "../../../interfaces/Ranks"; import { escapeMarkdown } from "discord.js"; -import getRankData from "../../../util/emojis/getRankData"; +import getRankColor from "../../../util/getRankColor"; export default { name: "chat:guildChat", @@ -9,16 +8,15 @@ export default { run: async ( bot, channel: "Guild" | "Officer", - hypixelRank: HypixelRank | undefined, + rank: string | undefined, playerName: string, guildRank: string | undefined, message: string, ) => { - const [rank, color] = await getRankData(hypixelRank); const content = ` **${rank ? rank + " " : ""}${escapeMarkdown(playerName)}${ guildRank ? " " + guildRank : "" }:** ${escapeMarkdown(message)}`; - await bot.sendToDiscord(channel === "Guild" ? "gc" : "oc", content, color); + await bot.sendToDiscord(channel === "Guild" ? "gc" : "oc", content, getRankColor(rank)); }, } as Event; diff --git a/src/events/mineflayer/chat/guildMuteUnmute.ts b/src/events/mineflayer/chat/guildMuteUnmute.ts index f068f812..5b6351b3 100644 --- a/src/events/mineflayer/chat/guildMuteUnmute.ts +++ b/src/events/mineflayer/chat/guildMuteUnmute.ts @@ -1,28 +1,24 @@ -import Emojis from "../../../util/emojis/chatEmojis"; +import Emojis from "../../../util/emojis"; import { Event } from "../../../interfaces/Event"; -import { HypixelRank } from "../../../interfaces/Ranks"; import { escapeMarkdown } from "discord.js"; -import getRankData from "../../../util/emojis/getRankData"; export default { name: "chat:guildMuteUnmute", runOnce: false, run: async ( bot, - byHypixelRank: HypixelRank | undefined, - byPlayerName: string, + authorRank: string | undefined, + authorName: string, type: "muted" | "unmuted", - hypixelRank: HypixelRank | undefined, - playerName: string, + victimRank: string | undefined, + victimName: string, duration: string | undefined, ) => { - const [[byRank], [rank]] = await Promise.all([getRankData(byHypixelRank), getRankData(hypixelRank)]); - const content = `${type === "unmuted" ? Emojis.positiveGuildEvent : Emojis.negativeGuildEvent} **${ - byRank ? byRank + " " : "" - }${escapeMarkdown(byPlayerName)}** has ${type} **${rank ? rank + " " : ""}${escapeMarkdown(playerName)}**${ - duration ? ` for ${duration}` : "" - }`; + authorRank ? authorRank + " " : "" + }${escapeMarkdown(authorName)}** has ${type} **${victimRank ? victimRank + " " : ""}${escapeMarkdown( + victimName, + )}**${duration ? ` for ${duration}` : ""}`; await bot.sendToDiscord("gc", content, undefined, true); }, diff --git a/src/events/mineflayer/chat/joinLeave.ts b/src/events/mineflayer/chat/joinLeave.ts index ab981e14..8aa4fcf9 100644 --- a/src/events/mineflayer/chat/joinLeave.ts +++ b/src/events/mineflayer/chat/joinLeave.ts @@ -1,4 +1,4 @@ -import Emojis from "../../../util/emojis/chatEmojis"; +import Emojis from "../../../util/emojis"; import { Event } from "../../../interfaces/Event"; import { escapeMarkdown } from "discord.js"; diff --git a/src/events/mineflayer/chat/joinRequest.ts b/src/events/mineflayer/chat/joinRequest.ts index 8aae3e57..1552becf 100644 --- a/src/events/mineflayer/chat/joinRequest.ts +++ b/src/events/mineflayer/chat/joinRequest.ts @@ -2,7 +2,7 @@ import { Event } from "../../../interfaces/Event"; import fetchHypixelPlayerProfile from "../../../util/requests/fetchHypixelPlayerProfile"; import fetchMojangProfile from "../../../util/requests/fetchMojangProfile"; import isFetchError from "../../../util/requests/isFetchError"; -import isUserBlacklisted from "../../../util/isUserBlacklisted"; +import isUserBlacklisted from "../../../util/blacklist/isUserBlacklisted"; export default { name: "chat:joinRequest", diff --git a/src/events/mineflayer/chat/memberJoinLeave.ts b/src/events/mineflayer/chat/memberJoinLeave.ts index e3bafbbc..915876d1 100644 --- a/src/events/mineflayer/chat/memberJoinLeave.ts +++ b/src/events/mineflayer/chat/memberJoinLeave.ts @@ -1,18 +1,15 @@ -import Emojis from "../../../util/emojis/chatEmojis"; +import Emojis from "../../../util/emojis"; import { Event } from "../../../interfaces/Event"; -import { HypixelRank } from "../../../interfaces/Ranks"; import { escapeMarkdown } from "discord.js"; import fetchMojangProfile from "../../../util/requests/fetchMojangProfile"; -import getRankData from "../../../util/emojis/getRankData"; import isFetchError from "../../../util/requests/isFetchError"; -import isUserBlacklisted from "../../../util/isUserBlacklisted"; +import isUserBlacklisted from "../../../util/blacklist/isUserBlacklisted"; +import getRankColor from "../../../util/getRankColor"; export default { name: "chat:memberJoinLeave", runOnce: false, - run: async (bot, hypixelRank: HypixelRank | undefined, playerName: string, type: "joined" | "left") => { - const [rank, color] = await getRankData(hypixelRank); - + run: async (bot, rank: string | undefined, playerName: string, type: "joined" | "left") => { if (type === "joined") { const mojangProfile = await fetchMojangProfile(playerName); @@ -28,7 +25,7 @@ export default { `${type === "joined" ? Emojis.positiveGuildEvent : Emojis.negativeGuildEvent} **${ rank ? rank + " " : "" }${escapeMarkdown(playerName)}** ${type} the guild!`, - color, + getRankColor(rank), true, ); }, diff --git a/src/events/mineflayer/chat/memberKick.ts b/src/events/mineflayer/chat/memberKick.ts index 43fc6f7b..e7c08a23 100644 --- a/src/events/mineflayer/chat/memberKick.ts +++ b/src/events/mineflayer/chat/memberKick.ts @@ -1,24 +1,17 @@ -import Emojis from "../../../util/emojis/chatEmojis"; +import Emojis from "../../../util/emojis"; import { Event } from "../../../interfaces/Event"; -import { HypixelRank } from "../../../interfaces/Ranks"; import { escapeMarkdown } from "discord.js"; -import getRankData from "../../../util/emojis/getRankData"; export default { name: "chat:memberKick", runOnce: false, run: async ( bot, - hypixelRank: HypixelRank | undefined, + rank: string | undefined, playerName: string, - kickedByHypixelRank: HypixelRank | undefined, + kickedByRank: string | undefined, kickedByPlayerName: string, ) => { - const [[rank], [kickedByRank]] = await Promise.all([ - getRankData(hypixelRank), - getRankData(kickedByHypixelRank), - ]); - await bot.sendToDiscord( "gc", `${Emojis.negativeGuildEvent} **${rank ? rank + " " : ""}${escapeMarkdown(playerName)}** was kicked by **${ diff --git a/src/events/mineflayer/chat/promoteDemote.ts b/src/events/mineflayer/chat/promoteDemote.ts index bc23851a..d39e7fb6 100644 --- a/src/events/mineflayer/chat/promoteDemote.ts +++ b/src/events/mineflayer/chat/promoteDemote.ts @@ -1,28 +1,25 @@ -import Emojis from "../../../util/emojis/chatEmojis"; +import Emojis from "../../../util/emojis"; import { Event } from "../../../interfaces/Event"; -import { HypixelRank } from "../../../interfaces/Ranks"; import { escapeMarkdown } from "discord.js"; -import getRankData from "../../../util/emojis/getRankData"; +import getRankColor from "../../../util/getRankColor"; export default { name: "chat:promoteDemote", runOnce: false, run: async ( bot, - hypixelRank: HypixelRank | undefined, + rank: string | undefined, playerName: string, type: "promoted" | "demoted", guildRankFrom: string, guildRankTo: string, ) => { - const [rank, color] = await getRankData(hypixelRank); - await bot.sendToDiscord( "gc", `${type === "promoted" ? Emojis.positiveGuildEvent : Emojis.negativeGuildEvent} **${ rank ? rank + " " : "" }${escapeMarkdown(playerName)}** was ${type} to ${guildRankTo} from ${guildRankFrom}!`, - color, + getRankColor(rank), true, ); }, diff --git a/src/events/mineflayer/chat/questComplete.ts b/src/events/mineflayer/chat/questComplete.ts index d95a99f4..8747b977 100644 --- a/src/events/mineflayer/chat/questComplete.ts +++ b/src/events/mineflayer/chat/questComplete.ts @@ -1,4 +1,4 @@ -import Emojis from "../../../util/emojis/chatEmojis"; +import Emojis from "../../../util/emojis"; import { Event } from "../../../interfaces/Event"; export default { diff --git a/src/events/mineflayer/chat/questTierComplete.ts b/src/events/mineflayer/chat/questTierComplete.ts index 60b26d80..6b5563bb 100644 --- a/src/events/mineflayer/chat/questTierComplete.ts +++ b/src/events/mineflayer/chat/questTierComplete.ts @@ -1,4 +1,4 @@ -import Emojis from "../../../util/emojis/chatEmojis"; +import Emojis from "../../../util/emojis"; import { Event } from "../../../interfaces/Event"; export default { diff --git a/src/events/mineflayer/handler/kicked.ts b/src/events/mineflayer/handler/kicked.ts index c617d345..a0fad7ec 100644 --- a/src/events/mineflayer/handler/kicked.ts +++ b/src/events/mineflayer/handler/kicked.ts @@ -1,4 +1,4 @@ -import Emojis from "../../../util/emojis/chatEmojis"; +import Emojis from "../../../util/emojis"; import { Event } from "../../../interfaces/Event"; export default { diff --git a/src/events/mineflayer/handler/login.ts b/src/events/mineflayer/handler/login.ts index eac508e5..c29aa021 100644 --- a/src/events/mineflayer/handler/login.ts +++ b/src/events/mineflayer/handler/login.ts @@ -1,4 +1,4 @@ -import Emojis from "../../../util/emojis/chatEmojis"; +import Emojis from "../../../util/emojis"; import { Event } from "../../../interfaces/Event"; export default { diff --git a/src/interfaces/EmojiIds.ts b/src/interfaces/EmojiIds.ts deleted file mode 100644 index b44fa0f7..00000000 --- a/src/interfaces/EmojiIds.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { VerboseHypixelRank } from "./Ranks"; - -export type EmojiIds = { [key in VerboseHypixelRank]?: Emoji[] }; - -export interface Emoji { - name: string; - id: string; -} diff --git a/src/interfaces/Ranks.ts b/src/interfaces/Ranks.ts deleted file mode 100644 index 84e6b39a..00000000 --- a/src/interfaces/Ranks.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* eslint no-shadow: 0 */ - -export enum HypixelRanks { - "[YOUTUBE]", - "[MVP++]", - "[MVP+]", - "[MVP]", - "[VIP+]", - "[VIP]", -} - -export enum VerboseHypixelRanks { - youtube = 0xff5555, - mvpPlusPlus = 0xffaa00, - mvpPlus = 0x55ffff, - mvp = 0x55ffff, - vipPlus = 0x55ff55, - vip = 0x55ff55, -} - -export type HypixelRank = keyof typeof HypixelRanks; -export type VerboseHypixelRank = keyof typeof VerboseHypixelRanks; diff --git a/src/util/_blacklist.json.template b/src/util/blacklist/_blacklist.json.template similarity index 100% rename from src/util/_blacklist.json.template rename to src/util/blacklist/_blacklist.json.template diff --git a/src/util/isUserBlacklisted.ts b/src/util/blacklist/isUserBlacklisted.ts similarity index 74% rename from src/util/isUserBlacklisted.ts rename to src/util/blacklist/isUserBlacklisted.ts index 9441765c..d906ad3d 100644 --- a/src/util/isUserBlacklisted.ts +++ b/src/util/blacklist/isUserBlacklisted.ts @@ -1,4 +1,4 @@ -import { BlacklistEntry } from "../interfaces/BlacklistEntry"; +import { BlacklistEntry } from "../../interfaces/BlacklistEntry"; import _blacklist from "./_blacklist.json"; export default (uuid: string) => { diff --git a/src/util/emojis/chatEmojis.ts b/src/util/emojis.ts similarity index 100% rename from src/util/emojis/chatEmojis.ts rename to src/util/emojis.ts diff --git a/src/util/emojis/_emojiIds.json.template b/src/util/emojis/_emojiIds.json.template deleted file mode 100644 index 9ea0abbd..00000000 --- a/src/util/emojis/_emojiIds.json.template +++ /dev/null @@ -1,8 +0,0 @@ -{ - "youtube": [], - "mvpPlusPlus": [], - "mvpPlus": [], - "mvp": [], - "vipPlus": [], - "vip": [] -} diff --git a/src/util/emojis/getEmojiBuffers.ts b/src/util/emojis/getEmojiBuffers.ts deleted file mode 100644 index bfb8e388..00000000 --- a/src/util/emojis/getEmojiBuffers.ts +++ /dev/null @@ -1,17 +0,0 @@ -import fs from "fs/promises"; -import path from "path"; -import recursiveWalkDir from "../recursiveWalkDir"; - -export default async () => { - const buffers: { [key: string]: Buffer } = {}; - - const callback = async (currentDir: string, file: string) => { - const name = file.split(".")[0] as string; - const buffer = await fs.readFile(path.join(currentDir, file)); - buffers[name] = buffer; - }; - - await recursiveWalkDir(path.join(__dirname, "./images"), callback, "Error while fetching image buffers: "); - - return buffers; -}; diff --git a/src/util/emojis/getRankData.ts b/src/util/emojis/getRankData.ts deleted file mode 100644 index 4bff573d..00000000 --- a/src/util/emojis/getRankData.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { HypixelRank, VerboseHypixelRank, VerboseHypixelRanks } from "../../interfaces/Ranks"; -import { ColorResolvable } from "discord.js"; -import { EmojiIds } from "../../interfaces/EmojiIds"; -import _emojiIds from "./_emojiIds.json"; - -export default async (rank: HypixelRank | undefined): Promise<[rank: string, color: ColorResolvable | undefined]> => { - const emojiIds = _emojiIds as EmojiIds; - let rankName: VerboseHypixelRank; - - if (!rank) { - return ["", 0xaaaaaa]; - } - - switch (rank) { - case "[VIP]": - rankName = "vip"; - break; - case "[VIP+]": - rankName = "vipPlus"; - break; - case "[MVP]": - rankName = "mvp"; - break; - case "[MVP+]": - rankName = "mvpPlus"; - break; - case "[MVP++]": - rankName = "mvpPlusPlus"; - break; - case "[YOUTUBE]": - rankName = "youtube"; - break; - default: - return [rank, undefined]; - } - - const emojis = emojiIds[rankName]; - if (process.env.USE_RANK_EMOJIS === "true" && emojis !== undefined) { - return [ - `${emojis.reduce((acc, emoji) => (acc += `<:${emoji.name}:${emoji.id}>`), "")} `, - VerboseHypixelRanks[rankName], - ]; - } - - return [rank, VerboseHypixelRanks[rankName]]; -}; diff --git a/src/util/emojis/images/mvp++/mvpPlusPlus1.png b/src/util/emojis/images/mvp++/mvpPlusPlus1.png deleted file mode 100644 index 8e55003945d73d02292c74ab003075279c735886..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2007 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 WQ_gSbJ9aqusU`Y{VrRGP-v198y<-Xh diff --git a/src/util/emojis/images/mvp+/mvpPlus1.png b/src/util/emojis/images/mvp+/mvpPlus1.png deleted file mode 100644 index 0f5d317f34b6395f730f4fa3e958a17a6bd1d3e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1730 zcmcIl&x_nt98YVNT3xk@AVnplm--{WGnq+j+-@i1?ts}Hx3hEwp?!JpWhU$-FD99t znMH&a6f7Rpo4TNQl069GrO<;t=t0~+p!T4G(34UI4;~8QH}k7S+I24mlDxe4d7tm+ z`{RA{USoN2?#Qtt9LLSom)uo&pD6Cb55V*Nzb{AddN5gfJ>$5Co+$1E+$Y;laoqjG zu(_VEd#~D`-D~hwmQvo7 z6cHsl)eS_hH0zj3#wu(${6ZF9T1eG{ec+?gTa2Fo@dwNEJrb> zb=MI~|UN7U3)QkIR-Y3>>ov z*@ji}OMw}PBv6oO`GzT0$^j9HrIsqHh7GH1PT5w{5Ka#2+{s#~BEVQN4CI@dFDe15 zhygJa(Z@s=O$^$Qq3UJd5O{*^fTaPCTR0Ac# zWIDV{nD^(Xokgb)`j6?*2ifK)G2i7o5Ssopu_j-?m~0@ojMrC*Qz_UB{QRz5hj zcI(-u+B?v~#$5^h=>p`~1?WCoepIaP82}7q{5Ez2Psv-}lVV-w)r|-K8tn iM_ZiBcz)sFTKUHLN4xG1pM6*SW$LwM_p8(AFa85r+bK=} diff --git a/src/util/emojis/images/mvp+/mvpPlus2.png b/src/util/emojis/images/mvp+/mvpPlus2.png deleted file mode 100644 index 3bf3cd627e5cca52d6eb2b43e998db59778fb75b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1784 zcmcIlTZkJ~7>-(7yWJGK77@WZ&c19llQ}cVOfqBBWjBdU)LEC^z((}JlXFgzaWiwq znaL*ERbjn>Sl_&sKB(YJDJly>u?2-b7~P^26$LF75h_Yuu%L*vdL}m)>9+e~U^3_O zo$vqt%lYT|>8S(Zp<9PSp-?!V%gnI%Sn%AimHi*Qbj)I}?N07NFBIBwQ}A39I&}D! zQ0V#}%tFyG8u#mnT2Y8;iA0;0!_cA7zVW65(LC|F5~-MWieEeaACF`1;nmqVSQdG%1M%lm{6t`oD;m>W zn!1Ejqd-6as9ZveN@_fz#3GywWJv_FC@F#@>58mNF|POHnKc)e^_k2)JzH#+;;X*z z=%UzYG@^}Il)4pB(ljmLkY#}(1g~ZLuqoKyXrCcNJmi{=Z&I5J7-5Ol{S?oXc3rTX z0j=%z!o&h5HlZU*Q4qM)2O7qep_Vm3dwzC-S?TG$EU{N;IYgWx9<95GWEY6-kM@mW zG&t+j-CD;}j6_l+7K3?Am^3iuRH;wBD&4@3!S=u#M^C#1`qV8@TI(ljy3fMNax}(` z&6zf)4R3FtsCR&5pifdf%bF|zRfvItr0DVZT@ug%=;91k1Q_~o6G)29a_g!%!_f1# z=R+Hjd?v*+Em70NdP$YBR4xG_K~z>eAg%}+!itbcDo8~tj?1LfQN+$?D5?ih3(j|| z6;s4G27%FWnIt8kDT0iUDrh*a2~dv31R@bRiDU%;)b)?CJ>Z(`!ob>k)<6|zj7p*` zBNb|b0whULlz2%a6_$^yR-U+#at|(CS@-73tfimG zXC?~8XV1TOI{XY6PJcT)cdXUkJ^ab;*U!E3(-Y{;m)f}>Pp-Xt=a$u#;kQ569wPhc zj^Z855k$l3Z{Tge-u}Y2_b#m7J+>UVc-(@!4*lhBJ$kZb-~8Ff7k}G%FSiOBr*3pV z{WAO9O6t|OPCPx*mceZM$hI?)Q{TO~C%kvL2rRNGJdR diff --git a/src/util/emojis/images/mvp+/mvpPlus3.png b/src/util/emojis/images/mvp+/mvpPlus3.png deleted file mode 100644 index 6e8e56ae6bdf0862ad8faca9acd8a7189fd7781e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1820 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 NIDRbu(b(yi{sBL9v&R4c diff --git a/src/util/emojis/images/mvp/mvp2.png b/src/util/emojis/images/mvp/mvp2.png deleted file mode 100644 index c615c0791461f2d654fa79b1101d6249f8b65a45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2167 zcmcImTWB0r7~Yb$v27w!FBDOkPAQF;vvcOQvomIsCc9~~jhn`FAt|Et%*>hHF}rid znMrmNP^q!0N*@X-Qi_U#f)CP%_N6FZN)>ArN)^S2AoihZrBbEEV1(8)dut3$2!ac< zb7toMzyI=m|D1VwaA0Ta`uo>MB9Yc~UuuY++rs0HweTIcrd^&^oDcZbKS z$g$TpMIy}uc6KBf$vmbRq!>je(Q&j~bg6YD($Q6Rkuiz`M#nkZNw8Nx_?TsEGrSQ{~8U-lg05Roa!SS_ng00|cbRFL2Sf*kUj3(Ib zFd#FM8Dx^g!%Qp+fdOHRQPe0OlN4EOX9Otl927WS20X9Hg2szX?Z?t+o@r@AsU5Xg z^eVyTgTU1|u2d>TOJbCGIgVFVHN+4EKrMhj;RL7*9Dhq4A%%Uzv)#ZZ4ih3Gos0zu zmS$Qlq3AYX9lzEl+Ayw+T#k>zu%xdf&uHK+n8X%JTJGE@g93Q)sR z05AqbnB`?nP&Ft%!c&*JF)?jxVkM@TjFxu%067LurxGm9C~Dg#WizfzhOPn&$74W2 zk^of25&%{O9!ip->V{s)i~6UCF&1_r^sma+BnHK3bW@X5-IPt;0w&_)zz`$@#1)wb zGDNCq8nTXbsgAbWv+3lZ!a~$AE0ZGXCXWQD$3YB=5)hCS2XS7ZErW`{TdE={e4J%& z#Z8g|@iN4utrZvEPbZUu9|xTq$r!K3VnB%UEMpp)MZ6-SLbHn~hdI~D zg|eq<&~p21pK?4=8>Bt>ncAvgGZl4e$Owlb!5X0&u*ueL+qY@+$_lE&mhzZ_E+vtw zjZdtgggo4xqkODHg4|Nc`)GXm)RnlPE0$paEK@plg>r$QtN==`Vp4i^UZk!3A5*Vk z8+qj9Fnz;v?0+w2WpZCs%u)lmA}RzSDlU8#RGk(T!-X%_s=~O%;=85t`lNKz84jiC z*EsD#xdywP^$~))9D@pq14+~&P*q6;NJKFJO#{Igv}8%(J1TJtHubKoszBWG5i6Dp zHifz~-D$#QV~e8~jZG3elsAuVftL~|&(iJld^**g9XasZ(F?6jn_H4^ooji0TmSXx zEBAc$&DLL(&eSWjPhGn>_xYL^@7=rh_@6)YTh7h7Cv-%8qLj8XB;9uqEKRqeGfAivVmmh80-#$&I|DKzBspCE6i`{AN z_ajp?%9-fnQRh-&{?1*@msi?%ysMmRe&fvi_VBv@+pecKt}`c^+Ak|#H_eiL;io~m McOZ4VXWt9|01Gt5#sB~S diff --git a/src/util/emojis/images/mvp/mvp3.png b/src/util/emojis/images/mvp/mvp3.png deleted file mode 100644 index 1840109ee7946af608c1b34f4eb85ccf06579bc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2170 zcmcImU5MO79N${GepytCQnhGEDQ)p)Gm~VqN$&Q_cK7TpbbH5j;jYM`lbOkGxZNZs zx!b){`*6k5qF_N$k@_G$RL~0Ti^U?#Fv6tUy40!dmt(zSe@)w&!asK!G&xl z$?yOBfBpWM939!WXXE-u*C!H*jfJ87C_nFrkF`Dg|CL*3YW%d$A36{w5*s$f$Ew8J z$2TVuYsQ??cr;$zYZ9-P#MHA`vQhInI+5t#)$lQyWRYO8vg2mNg|p{G!J!#(ELDU> zKgTN0&}_i=&+aRc*-2thao2#*-!M5rjYU{!)T(Z1HZo$9*W~N?wj>HoNHm!dv#~>A zyf`A{ynqQ>5&{CDCZvrd($sWH=@n!sBMHh9N&$q-lx!kJX#Yg+EugkJnt!V8i(h5L zN)-8~B-QKnWL-&mL0LkEVZ#0w@hurHw`j8p0Wi^b)kwOSV)MuXGbOFP~>5{IQ3pGl)E^riyB2B(=D zZS6SoD_-P<74I&wbszsLLQ1+0{i&eZEDt3TtFjvB4mlPzfz2fsJ0EuhW z4JfdLQl_Gqviv0CRvoZM9eZXa&|=XnxM74{!V39}$b(8c4mB-8(lS)ifaw$gLs4yj z6~=(f6hy5w#SES7D#{rtMF?`00}WdQFsSN4hlKut{IxyXnl76hYW`?hn3GOsM57Hz%4IO#GfX~9Czj_NpI z*)ng*N`xrgE&dQsFCRTrER@!X4lF%IL5iqcDY8L;!qSR{kOf(qb+Z4zqHhV_;QmBsIbmeG=Ar1%Zn(wVeWg15EanU^e|26w@x~f}lwhbqJEh8~zv;K?aO>u(MI%?v~8ueGB+r_~OLFfAD?u>q0(T8h`1=Tc2aYt*U!DYNqgej@a)x1uV>%5 zbvS#?-nlA#My)TLy&OG$@YSE*93JU8&@*smzVzjH#`VoNuYCA%c>0Ao`NHW4_N{p= zy72v}*A9Go^p|xPg-hRN@9lf&!Ks_8!{68bdU5-XL%n#-W#jNWmqrJ&kI;2}M`+(y xKb*Z3KX`B3!rJ?f-0Xe237h!){Q^C9bwlZdG@pUb_r+fag~5IKk9I#h_Ye4_z}El( diff --git a/src/util/emojis/images/vip+/vipPlus1.png b/src/util/emojis/images/vip+/vipPlus1.png deleted file mode 100644 index 95d682cc0c8d354bfceb874431cf75789aebea83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2040 zcmcIlZD<@t7`~PoY;7!5D1KmEw?-q)+c6bDQe=WHj={=D!G%h+a|-7Ba0 zw41nQZ57rlYJ=f+7wOQ!W-9UoXem3a?Jbp_yZu3M3efvt8kY z%y4>;Ne~Y+N|Xl%&nrw!iwcSqlVLj}@}j`;A}7c|5Oi781<2HXES=3WEqy5YKy5Di z7H9K8;OZP#DwU!o7$shg6EsZ=IYbdq1n?)E0F{B`@2oQ`8`#8QLPnG&V?msy zN~<9h-3G1W*V052#+8xF2~j=_sSZr1*M=604YVKhjMG_adaq0DXC_?C4Pl>*c?Rwo z$4;=bKACAWeBCjxP>IwuI9$L*3iGKjp)r-4Cjs&EWR*A?pBvG*dcwmfAYO)$LcLIf zbrvR(poI}Mrfsk7n55+2ABw8^;3NugoTY{10k6`kWq4kve-Q#+qJt_lODhvmhX>@rnjDMPwP%&@JK> z5p5N_h;o>7ogB;jt0qAT#7h&C<{U1!rxJ-lk63nre(;BSyO~r^LJ>4Y0b*1LJDDGF(?RL@^4N?+I0>6~S=f4qNRrZeXr4TJ_FUL^ycVdT`}v)f+j z+H8(oKKn;UuW-UzIxKwq+Usx3&&(e>zMy^Z^e0C*&3*Ie$qj$DEPZCR?0$0lId-aj z`?;k<+w_x1cI^82zF!W{a#?cM?6s}?<^4^q&*Ax|&ZA!+zw%dZCiQlIdFt1F(>^(M z;Ja73f%9KnfNfLl2jA@^zi(fhef$o8DRchriY-<8{2t1>@!pSA{nDkg2g9>D)iaPh J(f!DQe*nUOocRC% diff --git a/src/util/emojis/images/vip+/vipPlus2.png b/src/util/emojis/images/vip+/vipPlus2.png deleted file mode 100644 index 00102ee9ea91604eeb805e14e0126b017a80c7d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2085 zcmcIlTWl0n7~TfOQc4BXhKq&il!qeB&V9N&=~7^~(v2)O%O+G4BWKS!yE}GwW|*0F zw>2bIg+wqR(SW2>qJSnmh(0J1B@ki=F(pWh1~u^#OhZf{#E0@?Li}fMG=!4I#Le!` znRCAL{oj8%|9Pu_+m=O5E1CjZJ%<=G9^BPxCBOhIoS!c9U78E!v2pZEB4vL!6rON9WNsvTdka$t$L{V2IU6h&XhXrd6$>_=0vsGL0 z7GZOqXX`v)EEa=BIcPaqUJQrBK8GZ6fZ*H_(?ccBbUSJcG3sK+usy>v8J`iQtsyVM zg3^i$1-njby45g2!1xlfc`+#XF4cgE#KWP5LLKdTy~ALos`r7!ZfeA)e3H7>kb`OO zFg3l7nlXawd+i}7U-pz>p5|!*U@iy~>!$3Sw^6;3lI4b^!HaPmsl7$>Os<#kSdc53UM-0G%lnlgbT~0i<9LH zrBVh-BrVt2o_7p5JSabt)mKG;5o(->ngoI}lE@K732{i(AY>UWq!3jiT`Fc7g7u8$ z6cCh(Q9xPB+h&$!?x~4ddCN&y1Y!u{v$jg5=<6u(Kgf7|wbspU)Mlb=Qp z{BY7)GdbNdtQqr8Hm^VN%jYBeJC7`xNS`yacBy;SKgV0zJFh%_r}eYFjVF#Bxw>Z0 z)t<9=U%GK)VnzD!dncR6Z?-)-mbzS8-9GQ)7q4xdK7HW)*twzB@he}gY4~Uz`psUs z@$pw5>t&wW-QD(Kf8xg%=eKw4+ME2V@agfTm+|cn8c(E8uL`~UvwFRGa>JRmHy<^R zURZv8cW}X-mVFza`S|E7ou#SbJ5q(?&x0?Y{qEqYH>X!;xy45(uU&fX?=iK^{_Eb> zruT0pe_yuW+IQysp$pemM#|*JrdF#?VrP25Z&67!*N^MX~xKzO>d_Eg|%wQsPfuELgCpp;aWUh)F4h=$-v*DrpP_7iQ+p zz2|=CJLi07?!MBO>1l4<)EJ3Gnp3^We)4P!uRCrh_x(%93gmI8+dJe(B26vfbxY*! z1NTKD4bNHwgTY|>DMfb*QPprX94!@GVjYQeY%RH}K8yoO!&%FY)0e)OqAAOW(>sJT zOuGr3vwFupynQ?~ppOshvO#a%LUoiB0#Lw#N|g$E+gD0)x{RxkaX8J;RM{jLj?5RQi)oRDF@R zIGqauS7Df9u^26KQOCki!!FJDfNp))v-3k2IIwy4a{RT3Un1IHV1oP4cN zeKn61%SJh>ZHHwWPSJlfWK`XNlWKtDG^rX3pa?iPfS>}Qg3#vjpkkUPIxy5gUC~%l zc zMLI{#FGmeo83d8z1sG$+7!Z*m0}T-znKM*!<5kF+P>yi|O*YZh?$EuCA z9q+1+@)lKAr=sd%Q^aXKR0B5X>a?{&n%5Rk1-6*O1auXZRLp$G42r6UJF}!D|EWUe zM&x~Ubam>Q6cc0#L0~{l1BS$#Ko%ttKuzK_$jJf}>!JTI)T?RLbE=)iNpRs!NhA$4G-Av!l!+ZxO8Wr~=EZ?!Rog?1-psCg)B#tRHyfrG8{$n^e&w z2ja%LOP`a&^h_$*IWYLr{9CilC#iMG_q4t3(;M1nXHItfwt_AGsW^szI?k1V`= z?qJL0fy_s(bDuu_=gj=MTlp^P$t#Nui$~t+dhvtSsc$aczixNi(EN1IhfNnZPYqqU zd*|7&uKtjlTgpw$l-JHb@bR0bm)ZI7x4R}6p4oQ12yc7;o>{-~@ZqL=FF$nZ#KeQ^ z5B)K-@7>@3+I`yWJT*S~%a7CR_tA^m>l+U}GP~b87H;_U?}-=F4~Oef*7s+3#L`z9B)KZrSvu@>yo#>#N}(hE#VZ`AOGvd;S4cvecje diff --git a/src/util/emojis/images/vip/vip1.png b/src/util/emojis/images/vip/vip1.png deleted file mode 100644 index 9e9c9b2adf862ad31df40e8ff1b7579077ccbe2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1974 zcmcIlTWB0r7+yBrG*m3OJ3}Y2x0{llv=e9QV=Z-K8YYADiIMWs1JQm|Jj=%G$9BsJ2Pj_ zeE;`<|K*(Xe0g$waL+w^5{blMaUwqr&yo1La~Ist{`G+ij{$$;RG3KY-4|bXBwk$^ zP9%0+b1E~@Oz8=Wa5sr5ud-yz^#Pqo92sr-n9QlWyRkveeCAsA1 zSlyXe4A}9-$qHGVB_(2#^cBGU@tifD>g&<7nyYlNi;$fX{5=Z}YKN{c41q??#sBqrs6{_505pp>w zjA9BSCmoOSX82Gns%yjYIAU253MV5u168ZYvIT!tL$VHo4zvWVKyifoU=_&*(&UOF zTbg0%>ccSTgE@8Vh3!B~C9CL#5%vfx=CdM*N;(d;6q^#tG!3P7n;=H?DyphPMJiQP z*{-TIWh-r6V4vq?F3wVI&swhxm**tJDw2I^6 z8k2mlCJO(m$?*mcN}NK@we|DGT&^5&+iAduaC-cxP%PvO#WW10CY8AJK?a07;e=4; zh3;B9&YtOx8jjFzPz#fIU1UWPHw1&gI@8W=(!9NZI`+*v1JW(Jqyr1N9W`;l#%fTK z?KGmanf?&ZZ>=8N2J`}9NHa7OX(?St7%K#sx*=0l&ZM+Vsu%tLrM{b7QpaA6!B#7Y z|2>}VHT{NaY_<%yRSi{5YU}rej?so-q4`&?Z!~c_7rUK@vwikz)Syh zVjkovfU{@mqWl(|TQ3&#W0jeuUthjD@ToAgGrWK4)Y2bMWexoC>iD^LR=>G+{n-A4 zFBPVKxpLnZD_`%p>+bxACwTe%t@nTU^WcpKN5+in^U{sI$${Y$=$WojJQZW@pYg zGs*78zIa1Sy+I%bkv{Z65!9EyR7*|k1r!279|S>aTP)Sm*h*~;h^_x*F9vC2UL2U2 zGv|Eg`@jEk{&{6EwX3zIttAu+wI&9%A$WHLchjx#eD&&K3tr96z#cCY+IUxR-xPZL zovoqJhTqI|#?K@lQ*~;Eu|cyWT(%rQheAEQWe4ly#79|@H|-d6;mACLOe4mObSL?w z6DI|8V9F)KQ>nB*HLfcL)4Lt@lvNua(D%ze}jxj5|DvX0^jzKFBe>}$Y1qM+j zIf&xaB}fYMtj_Zil9jL^b;;e4P9*Z8!0{p{bhCn>c8jVILA8qkYp#(~hqQ-lw%{wq z6nx)NIj&SHg-ekzb@QB{C`!N~iYy>luVVYS%-Y_zI)g?$-8CKGq&5l|ah6W_F$R=Y zU9g-6t?kvq1Oem9*x`gQAGlNpCX;JJEvtd{{QgO>Qqy}~VlQ2B2scDLI^pW1f0Ee# zwz@GxZ|rp@+~SI-hR%^9u>j_QFri_}DNvt!1$qNN8p{oD95wC|>{B;QX|bND!8!{P z#c%|5jF`4TOWyr~qS^+cVV}ep$ePIV5*y*u0wzYdYQpw>Z0jVU#TXD3Hcdm7F^}agiDv}`%WPEXA}khk5EqGJUdrNV6iPR60rqQD zp9sPi?5~!sL3QA0L`cmkvLeaAAt_Rnl}VS#Vv)yeR3LJc$C4r{RWE^Uw`;=5!Nt|A zfhq$SF)^}+-i28i1h5eaMp(uQo68wkiDKE%iNqj7S98?0Fw}`@;XL6SJI|nh)Wm6# zx=Ct4%pn6A(%jv< zuRw?YI-&KYGcPU8ebf3mx?Nj(Ai}@#R#QCJvN+TJGhIp_{%YXprup8N?@WF73%a=V zg*PjI?cJd@FMM`3`dTyh$?_rl+l3eR(&5s%6JMM^*FN*-x3Za#GH)xMc6m8Ykt zQ)l;2-!t;~k?r4C7kYY{cAPo+b+T{&vuA$2GC0K( diff --git a/src/util/emojis/images/vip/vip3.png b/src/util/emojis/images/vip/vip3.png deleted file mode 100644 index b79c6f130836735120e35c2958e649c03208dc1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1815 zcmbVNZHN?Q93P21l{=3h#H*xflrU^w_jRTluXAVfwrkE~-E!4le0JuU-QjlT8E0l+ zi6Sk!pr{WWDPGWLL5(OdCCluCg+_*-BC?VrFzP-WmPJI*%)W3J>kBT-&hzqne*fS9 z<@wKRlM`D9R^79TAc%p?n3Bcsjlr{GIsSkB-{Tg3t#rnAdIYihi{M!{vuX9c1aaqO zGne=C>JyTNEC%SP0GYbwU^GDtkJKHYO+lY5z@ll()cna$DbmzsYDY}vR3`;X=2+8( z+nWsHzJq`FLnyb>M<%Pd8P5PwRhMgxOnUY#UU$c1E_ z;b@KH;$%W(_;@rCi#$vUoWQf3!16Jg=cSk+@e#89qp&qsH>9lcSlbq!$yCYr9f@UY zwHi~4Fvu;kyeNtRhak`xL3<6`2X)%^)^`{b=xMI$_$IQ+fDsf>#g{3pwB>^3bZKp` z9VQ$wwhkPYXSl$n5U6WioKtbjp>bVfVHsM`_C1W{yI7}$eB_nTb*Q`BOAO%9s%qCp zPc4?!HR1W`Dt4nCke+BS*Ki=4g&wN78cbKQ%=Ljcj+AmC@R6HCsN6}^WJfY72uy_B zxWlw{RP!EMbO0*Ahcbn;CeU1*7Q`H%2(rfUn|My*xE54Jx@k0)LL*!bBLs}*mOydI z=)eaz1?!q*AlCxeVbcOd$U1hBBD-OfQmBkvY#6JHEMCu~Qj;z+%rf5avRk*1nRF`7 zi*YQT;X}EqDrIcX2et+?icI0)Fs7+Xh5#ecXi}#|9Y$zTi~uwlYvL;i%D2rE zT+E<$q%qUOS#7kh&UU!BJt~`ISS}LKf@>gCT9ALJQ|)E5M+9!ogBESA1TpCi>Y@en zkm1*W3rCAMS~smb_IlzyP`$DATT5Oq={@T7cBHq%s+E9Ugt(`&RNxF7be~pI*#GA% z+*{PCI&j?nf?>Ds;z_r2LmN}OxG#VB{EP3q MNlz$8x9r*XAI#NPjQ{`u diff --git a/src/util/emojis/images/youtube/youtube1.png b/src/util/emojis/images/youtube/youtube1.png deleted file mode 100644 index 9bdf7d2e1125c241484bd756252686458c057cc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2118 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 iNJqBX-``Py7QVcLJ^e diff --git a/src/util/emojis/images/youtube/youtube3.png b/src/util/emojis/images/youtube/youtube3.png deleted file mode 100644 index a4cfe8b6c1f8beba4e8f6019fb3142fc48905033..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2351 zcmb_eU1%It6kdzk|5hzRt3}4CXw}}GJO4Xlwl&#}$+m79(uJlN&^t4Cc8BczbY_y> z1Z}CJApX2mL|O%(>XSZ*h!{otP%&80qV0>thgK9RB`DZ}#p0RS%{I{_Eyab|nYnZB zcfRl3^Ua-?2M7AruDWMcCX-oP>Mst#d24d4xE=mqz50m@r`y;$#m^#2E-htF=NoG}g3gOf`^Q4I(6aTR;uGy$aF=Im zaUAFz*Jw1d4KeG7RgTv*Ex`~31Q95j@M6+LUbJNvp-3Y$bb{FNJtjdUhCdePSzy|d z;07I7FKU+w3dS`_!0}m}NJ;}OvlADLh4nPKWpcDmUFyXV#PXfkpytPZRPz^s?mV8C z07_dfcXBMq#dSL=qPTY)WV8#iV02WO2q-s1BY!M3Y414D+>)pX^g>8U?1vTKug@;j z;4EcE5V9h(b+6-Dej|E#&IDQ{G0n5EY68M464VN>>9V9_`B5J07`H;pzU9~x^Fu|x z0t<{qUDD=-Ld#erCf5zNOx^ZFmw;f$B~{7=UX^7!Wz-9P-47u#uoLHwmkNc!(6^mB zJcx$+dYDpgLE$w;K|+>K>6XiS$%|s*nY2{QvrwF@<5;>OONvHC6DhJSBE^twM6iYt zFAI`lD>+G1joJA{-yBO?AerBCgXNomag81^RDsHbB8+8db?AO%s2Y#3qR3PcR9R4z zS+w1u1BN8^xu^*%3lK%ou;rX$A}j(cIR~sXg(wJ942zitM`T+?Eyme_9 zQ@YxY?*PejI-E|HBbOOiE$Oy0~PKJ5%jH3SAB zf}}!En_!NX_WzVfz`CI6Lg$rnGbL(cn>FH9DePGsd-Gy$%;^h>S>UDi|A|R0(CTFF z-%XxAo3pJ!!=yv7S0KQn9--{Nly8POW_buPL5? zM8vx{E_=yZDXcF@e}DYc{`c2a4xYUtel3B&-mLYk{{8fW zy}wR9``5ai%&yng|MJs24_!L5=4Uhi>4wv-(Ql3}zw^}L+fGiepXnR8@O@)&*}iv| zyFZScJvMz}|LeWqjTHaY;13Vn_4OaijEuJH+yMJo@<~(b9VmX#^UU-A E01m7DXaE2J diff --git a/src/util/emojis/images/youtube/youtube4.png b/src/util/emojis/images/youtube/youtube4.png deleted file mode 100644 index d34164baed689f67c4b55eac2a5e1ac0e5e917c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2109 zcmb_eTWB0r7+%4utx2u+MGML}#jv7hXU@#*%CFyhM%X(VKKIQ)42)qNs9OG6q#ei_1@Pk|;qzlmr+D5bAMBhcegx@ywfNnEFU&SKAls zrTB6XxVj+JYPDERj!~~9z+^HR+K?o`5WsIZ0jdMX-`cT|AwKpjH?XL~g%(kfP6jES zF>QrlyIr%6-0vTZWi+>j(YSirBPgI=fznE6 zqw*cfoFv6$E;?#C2CeyzFIzw|C?F}G?V1Ec4Mtx%6SX6)qU9uW{+pFf<%?&Rzp?>vzRb60~tjEkfK4rs>lFISylnmw4{g>Oo%LoY2V^CWch55 z8|^~cOP+7HDi+sF9v$JZC{jEQvw;|Vd)Qh+8GpHet^p}`+ zH_bv}P4d*K5^ouO7kP-CMa1({yy;P!L#|t~FbZQ8s*cev@$T+$0p+eI)tY{MRK2l8 zii{;S0Tp1V8Um)Mm>^M1K%j~VBua8To-m}2#Q%{<5_Kr)Qle8Gw-`^hH=df^Z1%o&Zt;szj*QF zrTu*uYDcG|7am%ed3E8`xj&Pm&HiP1W^sP@{4Wo`!F}?3&+v>Nd*F}k;`}@LO^2qV z->f@w{c-cg7^00Y=!4}26T$=a??FsNFvbTpG2YqTF0Hmeh?~sL zoqNwc=R4o|&b_Y``?q&?tnEl75}o;6c7VRS;%C)O^ndT)$6flm+0X3?6Ny{yh@WMN zgNN265-T@2rNL;h&}Ty8CIKQAPS#zYS|<|STk1Z5LpWkATz0%Pd-23H%Qz^_?o4J z87vf;3<)r!B?S%&g2w1ZQq&Y(l{YbxAc?#n@uJF!qNz%zC^M}eOQQwIHV3kgwqnt* zG+T)x-{kpPt(L6GNfMNK(J+kIha_>-f(u8z2-G<*TtDX_i$fSVe&i63i9G^~3`c2} zB5kJN`fayf*rJIN#@B(*i%B6)sbPp<+s+>js*T_X^0_s8972CFcg+wH*kR@EV zmlp(})D{Zu7>iK&nJv<9)84e)s9icGS$JzL1Ccq#fL5Yy+ zT%n3{kQqrz%1qZz$3vtRJ~VFw&VmT1Sz0xT6Le0}OQK<_iYcfMi-IW#P16EFjy<~2 zR2ECLz=C2*;sR4D83ZD5RbvEAn*=VP2|F$*W8U}5EYqgZ%#bPxXkdy?o%2W zMU>iT9t#}Wkf1u>Ym5p}kD@426tcx(OIJ9{p!ibINO8zkbPcJtWdkFYeM3oR&IxIa zM_Y}w1MhB)st(f-j|pJh6loU5YQTtXO*@P5aZQn1`)d_UonApD&FCSqqZ$ZsPnmLe zRTc6}f+yYx4(7r4K>+Akgo7~6+5vGH;QLhvf;d-x#6ztXZ&!zj2yA#6`VKR%f`u~>B51}JI96FZn*IB+O9nt_pz0U4adj2*h@3q?UToHpL}s@_1>AM z)uY1iseKb~oS9znadGS9pHEJ{`@qz9))UX1S^e8-{k<19t(ZMKC zxo);>gYM_XJH8Bd`|{At`$tx8{^NV))bzOr8|KqLkDu?`|N5uzkm9mk$y?bs&mMv2 zr!GFSe^u_Ax0fGP);;^}U$3$8{)t~6uU<+Y{H*6jbWcZ0K5?x7WXMmw`s3_fKiyl} iI{Cr#U*AuIEO$TR4*!~Y@$UG(&-eCcKiu}zo__$>y0{hq diff --git a/src/util/getRankColor.ts b/src/util/getRankColor.ts new file mode 100644 index 00000000..e2f988cd --- /dev/null +++ b/src/util/getRankColor.ts @@ -0,0 +1,22 @@ +export default (rank?: string) => { + let color = undefined; + + switch (rank) { + case "[ADMIN]": + case "[YOUTUBE]": + color = 0xff5555; + break; + case "[MVP++]": + color = 0xffaa00; + break; + case "[MVP+]": + case "[MVP]": + color = 0x55ffff; + break; + case "[VIP+]": + case "[VIP]": + color = 0x55ff55; + } + + return color; +};