From 4589bc9a085d73f469d538300cb7d26b310ec020 Mon Sep 17 00:00:00 2001 From: GramingFoxTeam Date: Mon, 4 Sep 2023 15:49:52 +0300 Subject: [PATCH] feat(bot-discord): cure names (#23) --- apps/bot-discord/src/events/guildMemberAdd.js | 26 +- .../src/events/guildMemberUpdate.js | 10 + apps/bot-discord/src/package-lock.json | 355 ++++++++++++++++-- apps/bot-discord/src/package.json | 1 + apps/bot-discord/src/utils/cureUsername.js | 17 + 5 files changed, 365 insertions(+), 44 deletions(-) create mode 100644 apps/bot-discord/src/events/guildMemberUpdate.js create mode 100644 apps/bot-discord/src/utils/cureUsername.js diff --git a/apps/bot-discord/src/events/guildMemberAdd.js b/apps/bot-discord/src/events/guildMemberAdd.js index 7d7bde3..d3294cb 100644 --- a/apps/bot-discord/src/events/guildMemberAdd.js +++ b/apps/bot-discord/src/events/guildMemberAdd.js @@ -1,20 +1,22 @@ import { Events } from 'discord.js'; +import cureUsername from '../utils/cureUsername.js'; export default { - name: Events.GuildMemberAdd, - once: false, - async execute(_, config, member) { - const mute = await client.db.collection('muted').findOne({ - guild_id: member.guild.id, - user_id: member.id - }); + name: Events.GuildMemberAdd, + once: false, + async execute(_, config, member) { + cureUsername(member); + const mute = await client.db.collection('muted').findOne({ + guild_id: member.guild.id, + user_id: member.id + }); - if (mute) { - // Add the roles given. - member.roles.add(mute.support_mute ? + if (mute) { + // Add the roles given. + member.roles.add(mute.support_mute ? config.mute.supportGiveRoles : config.mute.giveRoles ); - } - } + } + } }; diff --git a/apps/bot-discord/src/events/guildMemberUpdate.js b/apps/bot-discord/src/events/guildMemberUpdate.js new file mode 100644 index 0000000..d0c4bb8 --- /dev/null +++ b/apps/bot-discord/src/events/guildMemberUpdate.js @@ -0,0 +1,10 @@ +import { Events } from 'discord.js'; +import cureUsername from '../utils/cureUsername.js'; + +export default { + name: Events.GuildMemberUpdate, + once: false, + async execute(_, _, _, newMember) { + cureUsername(newMember); + } +}; diff --git a/apps/bot-discord/src/package-lock.json b/apps/bot-discord/src/package-lock.json index ae5a4c4..962ad4f 100644 --- a/apps/bot-discord/src/package-lock.json +++ b/apps/bot-discord/src/package-lock.json @@ -10,6 +10,7 @@ "license": "GPL-3.0-or-later", "dependencies": { "@revanced-helper/helper-client": "file:../../../packages/client", + "decancer": "^1.6.5", "discord.js": "^14.11.0", "mongodb": "^5.7.0", "parse-duration": "^1.1.0" @@ -104,6 +105,15 @@ "node": ">=16.9.0" } }, + "node_modules/@mongodb-js/saslprep": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.0.tgz", + "integrity": "sha512-Xfijy7HvfzzqiOAhAepF4SGN5e9leLkMvg/OPOF97XemjfVCYN/oWa75wnkc6mltMSTwY+XlbhWgUOJmkFspSw==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + } + }, "node_modules/@revanced-helper/helper-client": { "resolved": "../../../packages/client", "link": true @@ -171,6 +181,186 @@ "@types/node": "*" } }, + "node_modules/@vierofernando/decancer-android-arm-eabi": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-android-arm-eabi/-/decancer-android-arm-eabi-1.6.5.tgz", + "integrity": "sha512-/xPMebqSFb6fePZdwD9Pz8pIc9GkCGlMOQA4ucFtKeepQrMhoil4qN+ri5DUSeW9PFvnj/cEWuPEeNDbFc4WyA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@vierofernando/decancer-android-arm64": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-android-arm64/-/decancer-android-arm64-1.6.5.tgz", + "integrity": "sha512-FraWlT6lfjFuV5L383+XzzFD5I2pzZ5TRDfix4BVXvDxjnO8ZKt4AB7DbWteDVu18zZbuVpBh3Tp1Eu1adidUg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@vierofernando/decancer-darwin-arm64": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-darwin-arm64/-/decancer-darwin-arm64-1.6.5.tgz", + "integrity": "sha512-pOarySDUPdxf/YQ673HxH+tJubapiiPt7SOuK8lRw3NoiQZ3cOf/LofU8rEUgK/yKfDyWbmQLnvMi1Hl1JTmhg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@vierofernando/decancer-darwin-x64": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-darwin-x64/-/decancer-darwin-x64-1.6.5.tgz", + "integrity": "sha512-B7JzUC5EHQtA7yJOrdRrKjHWBbzvBaPNAKHBKJ+brAwqa3yStpBodJZTgsfGHidCY8Gje0pGxSZVbPnGs+5Xbg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@vierofernando/decancer-linux-arm-gnueabihf": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-linux-arm-gnueabihf/-/decancer-linux-arm-gnueabihf-1.6.5.tgz", + "integrity": "sha512-1ALPTMzUo750lIuHn/paZ2wq+GkDXv15dP9w4bmP3ytrYVj8b0uJmb57FexNEIMPf4M0gkGmyNLjq+Y1AJoQvw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@vierofernando/decancer-linux-arm64-gnu": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-linux-arm64-gnu/-/decancer-linux-arm64-gnu-1.6.5.tgz", + "integrity": "sha512-RDNTJ9812zlQkWRxZS513xZoSUeRbONzcFX6VDnl/Lx20NVRZOryF8o4EtKDwzEd3kQrIr2tQlZyLLLsTGL48g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@vierofernando/decancer-linux-arm64-musl": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-linux-arm64-musl/-/decancer-linux-arm64-musl-1.6.5.tgz", + "integrity": "sha512-Qnm6yQxvUF8uojyIIUiZepTZIyJN2jdqvm2QptxfB1LGABkWCpTlv+xml8KTPFTUcPT1Epwye1FaVEwd90W7VQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@vierofernando/decancer-linux-x64-gnu": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-linux-x64-gnu/-/decancer-linux-x64-gnu-1.6.5.tgz", + "integrity": "sha512-eKdF0jsdVpm+lcDHALqtH79Z8vPX5qsoJHM2YHrQ5pJ3khP2+OcEYdAyis2rl438OK6NJyQZfECSUSj9dtfAeQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@vierofernando/decancer-linux-x64-musl": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-linux-x64-musl/-/decancer-linux-x64-musl-1.6.5.tgz", + "integrity": "sha512-RaJoJSIkLSu0l4tODVFWoeE+4BSVjHUn+Gb3yQKn5DHmsl1/EOuj6rlwX6uddleV9aQIDEAljSL3SExNZbmm2A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@vierofernando/decancer-win32-arm64-msvc": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-win32-arm64-msvc/-/decancer-win32-arm64-msvc-1.6.5.tgz", + "integrity": "sha512-SXI6r8m+J4vYCvjKQeafukSpBORU9wzM38SkBhjdp8wfcHVYfjVtoHVr4JxkpNfMJoIhv9j2MJYIaYVExvw8pg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@vierofernando/decancer-win32-ia32-msvc": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-win32-ia32-msvc/-/decancer-win32-ia32-msvc-1.6.5.tgz", + "integrity": "sha512-Ml6Gx6iwOzLopcH8BEd3Kn2MQ1bg5S4mKHQrxNn2MK3SqCLNzZKZhoWe18aCzaKLnwTTkcZvXNcZk1OLPLxmUw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@vierofernando/decancer-win32-x64-msvc": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-win32-x64-msvc/-/decancer-win32-x64-msvc-1.6.5.tgz", + "integrity": "sha512-fnMKkLkYJ/K/e1jo6WfwpoI4eNEkcWsA/rJMMF6XGLD6YhHnZZdlugqsbSK8j4GiBBTfgj6yCeCMEfLe2QP15w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@vladfrangu/async_event_emitter": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.2.2.tgz", @@ -199,6 +389,28 @@ "node": ">=10.16.0" } }, + "node_modules/decancer": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/decancer/-/decancer-1.6.5.tgz", + "integrity": "sha512-7p9ShXWXwKwTIwa5VoFtvUpIWMI4MEgCYLJqOwczBDyEHR65GhTxW/l0V/fazxV3w9KvlmoHI0HtTTI3nSNy1A==", + "engines": { + "node": ">= 16" + }, + "optionalDependencies": { + "@vierofernando/decancer-android-arm-eabi": "1.6.5", + "@vierofernando/decancer-android-arm64": "1.6.5", + "@vierofernando/decancer-darwin-arm64": "1.6.5", + "@vierofernando/decancer-darwin-x64": "1.6.5", + "@vierofernando/decancer-linux-arm-gnueabihf": "1.6.5", + "@vierofernando/decancer-linux-arm64-gnu": "1.6.5", + "@vierofernando/decancer-linux-arm64-musl": "1.6.5", + "@vierofernando/decancer-linux-x64-gnu": "1.6.5", + "@vierofernando/decancer-linux-x64-musl": "1.6.5", + "@vierofernando/decancer-win32-arm64-msvc": "1.6.5", + "@vierofernando/decancer-win32-ia32-msvc": "1.6.5", + "@vierofernando/decancer-win32-x64-msvc": "1.6.5" + } + }, "node_modules/discord-api-types": { "version": "0.37.43", "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.43.tgz", @@ -295,9 +507,9 @@ "optional": true }, "node_modules/mongodb": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.7.0.tgz", - "integrity": "sha512-zm82Bq33QbqtxDf58fLWBwTjARK3NSvKYjyz997KSy6hpat0prjeX/kxjbPVyZY60XYPDNETaHkHJI2UCzSLuw==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.8.1.tgz", + "integrity": "sha512-wKyh4kZvm6NrCPH8AxyzXm3JBoEf4Xulo0aUWh3hCgwgYJxyQ1KLST86ZZaSWdj6/kxYUA3+YZuyADCE61CMSg==", "dependencies": { "bson": "^5.4.0", "mongodb-connection-string-url": "^2.6.0", @@ -307,12 +519,12 @@ "node": ">=14.20.1" }, "optionalDependencies": { - "saslprep": "^1.0.3" + "@mongodb-js/saslprep": "^1.1.0" }, "peerDependencies": { - "@aws-sdk/credential-providers": "^3.201.0", - "@mongodb-js/zstd": "^1.1.0", - "kerberos": "^2.0.1", + "@aws-sdk/credential-providers": "^3.188.0", + "@mongodb-js/zstd": "^1.0.0", + "kerberos": "^1.0.0 || ^2.0.0", "mongodb-client-encryption": ">=2.3.0 <3", "snappy": "^7.2.2" }, @@ -415,18 +627,6 @@ } ] }, - "node_modules/saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "dependencies": { - "sparse-bitfield": "^3.0.3" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -648,6 +848,15 @@ "ws": "^8.13.0" } }, + "@mongodb-js/saslprep": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.0.tgz", + "integrity": "sha512-Xfijy7HvfzzqiOAhAepF4SGN5e9leLkMvg/OPOF97XemjfVCYN/oWa75wnkc6mltMSTwY+XlbhWgUOJmkFspSw==", + "optional": true, + "requires": { + "sparse-bitfield": "^3.0.3" + } + }, "@revanced-helper/helper-client": { "version": "file:../../../packages/client", "requires": { @@ -705,6 +914,78 @@ "@types/node": "*" } }, + "@vierofernando/decancer-android-arm-eabi": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-android-arm-eabi/-/decancer-android-arm-eabi-1.6.5.tgz", + "integrity": "sha512-/xPMebqSFb6fePZdwD9Pz8pIc9GkCGlMOQA4ucFtKeepQrMhoil4qN+ri5DUSeW9PFvnj/cEWuPEeNDbFc4WyA==", + "optional": true + }, + "@vierofernando/decancer-android-arm64": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-android-arm64/-/decancer-android-arm64-1.6.5.tgz", + "integrity": "sha512-FraWlT6lfjFuV5L383+XzzFD5I2pzZ5TRDfix4BVXvDxjnO8ZKt4AB7DbWteDVu18zZbuVpBh3Tp1Eu1adidUg==", + "optional": true + }, + "@vierofernando/decancer-darwin-arm64": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-darwin-arm64/-/decancer-darwin-arm64-1.6.5.tgz", + "integrity": "sha512-pOarySDUPdxf/YQ673HxH+tJubapiiPt7SOuK8lRw3NoiQZ3cOf/LofU8rEUgK/yKfDyWbmQLnvMi1Hl1JTmhg==", + "optional": true + }, + "@vierofernando/decancer-darwin-x64": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-darwin-x64/-/decancer-darwin-x64-1.6.5.tgz", + "integrity": "sha512-B7JzUC5EHQtA7yJOrdRrKjHWBbzvBaPNAKHBKJ+brAwqa3yStpBodJZTgsfGHidCY8Gje0pGxSZVbPnGs+5Xbg==", + "optional": true + }, + "@vierofernando/decancer-linux-arm-gnueabihf": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-linux-arm-gnueabihf/-/decancer-linux-arm-gnueabihf-1.6.5.tgz", + "integrity": "sha512-1ALPTMzUo750lIuHn/paZ2wq+GkDXv15dP9w4bmP3ytrYVj8b0uJmb57FexNEIMPf4M0gkGmyNLjq+Y1AJoQvw==", + "optional": true + }, + "@vierofernando/decancer-linux-arm64-gnu": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-linux-arm64-gnu/-/decancer-linux-arm64-gnu-1.6.5.tgz", + "integrity": "sha512-RDNTJ9812zlQkWRxZS513xZoSUeRbONzcFX6VDnl/Lx20NVRZOryF8o4EtKDwzEd3kQrIr2tQlZyLLLsTGL48g==", + "optional": true + }, + "@vierofernando/decancer-linux-arm64-musl": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-linux-arm64-musl/-/decancer-linux-arm64-musl-1.6.5.tgz", + "integrity": "sha512-Qnm6yQxvUF8uojyIIUiZepTZIyJN2jdqvm2QptxfB1LGABkWCpTlv+xml8KTPFTUcPT1Epwye1FaVEwd90W7VQ==", + "optional": true + }, + "@vierofernando/decancer-linux-x64-gnu": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-linux-x64-gnu/-/decancer-linux-x64-gnu-1.6.5.tgz", + "integrity": "sha512-eKdF0jsdVpm+lcDHALqtH79Z8vPX5qsoJHM2YHrQ5pJ3khP2+OcEYdAyis2rl438OK6NJyQZfECSUSj9dtfAeQ==", + "optional": true + }, + "@vierofernando/decancer-linux-x64-musl": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-linux-x64-musl/-/decancer-linux-x64-musl-1.6.5.tgz", + "integrity": "sha512-RaJoJSIkLSu0l4tODVFWoeE+4BSVjHUn+Gb3yQKn5DHmsl1/EOuj6rlwX6uddleV9aQIDEAljSL3SExNZbmm2A==", + "optional": true + }, + "@vierofernando/decancer-win32-arm64-msvc": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-win32-arm64-msvc/-/decancer-win32-arm64-msvc-1.6.5.tgz", + "integrity": "sha512-SXI6r8m+J4vYCvjKQeafukSpBORU9wzM38SkBhjdp8wfcHVYfjVtoHVr4JxkpNfMJoIhv9j2MJYIaYVExvw8pg==", + "optional": true + }, + "@vierofernando/decancer-win32-ia32-msvc": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-win32-ia32-msvc/-/decancer-win32-ia32-msvc-1.6.5.tgz", + "integrity": "sha512-Ml6Gx6iwOzLopcH8BEd3Kn2MQ1bg5S4mKHQrxNn2MK3SqCLNzZKZhoWe18aCzaKLnwTTkcZvXNcZk1OLPLxmUw==", + "optional": true + }, + "@vierofernando/decancer-win32-x64-msvc": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@vierofernando/decancer-win32-x64-msvc/-/decancer-win32-x64-msvc-1.6.5.tgz", + "integrity": "sha512-fnMKkLkYJ/K/e1jo6WfwpoI4eNEkcWsA/rJMMF6XGLD6YhHnZZdlugqsbSK8j4GiBBTfgj6yCeCMEfLe2QP15w==", + "optional": true + }, "@vladfrangu/async_event_emitter": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.2.2.tgz", @@ -723,6 +1004,25 @@ "streamsearch": "^1.1.0" } }, + "decancer": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/decancer/-/decancer-1.6.5.tgz", + "integrity": "sha512-7p9ShXWXwKwTIwa5VoFtvUpIWMI4MEgCYLJqOwczBDyEHR65GhTxW/l0V/fazxV3w9KvlmoHI0HtTTI3nSNy1A==", + "requires": { + "@vierofernando/decancer-android-arm-eabi": "1.6.5", + "@vierofernando/decancer-android-arm64": "1.6.5", + "@vierofernando/decancer-darwin-arm64": "1.6.5", + "@vierofernando/decancer-darwin-x64": "1.6.5", + "@vierofernando/decancer-linux-arm-gnueabihf": "1.6.5", + "@vierofernando/decancer-linux-arm64-gnu": "1.6.5", + "@vierofernando/decancer-linux-arm64-musl": "1.6.5", + "@vierofernando/decancer-linux-x64-gnu": "1.6.5", + "@vierofernando/decancer-linux-x64-musl": "1.6.5", + "@vierofernando/decancer-win32-arm64-msvc": "1.6.5", + "@vierofernando/decancer-win32-ia32-msvc": "1.6.5", + "@vierofernando/decancer-win32-x64-msvc": "1.6.5" + } + }, "discord-api-types": { "version": "0.37.43", "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.43.tgz", @@ -796,13 +1096,13 @@ "optional": true }, "mongodb": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.7.0.tgz", - "integrity": "sha512-zm82Bq33QbqtxDf58fLWBwTjARK3NSvKYjyz997KSy6hpat0prjeX/kxjbPVyZY60XYPDNETaHkHJI2UCzSLuw==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.8.1.tgz", + "integrity": "sha512-wKyh4kZvm6NrCPH8AxyzXm3JBoEf4Xulo0aUWh3hCgwgYJxyQ1KLST86ZZaSWdj6/kxYUA3+YZuyADCE61CMSg==", "requires": { + "@mongodb-js/saslprep": "^1.1.0", "bson": "^5.4.0", "mongodb-connection-string-url": "^2.6.0", - "saslprep": "^1.0.3", "socks": "^2.7.1" } }, @@ -853,15 +1153,6 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, - "saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "requires": { - "sparse-bitfield": "^3.0.3" - } - }, "smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", diff --git a/apps/bot-discord/src/package.json b/apps/bot-discord/src/package.json index 7bb1501..d7b0df5 100644 --- a/apps/bot-discord/src/package.json +++ b/apps/bot-discord/src/package.json @@ -9,6 +9,7 @@ "license": "GPL-3.0-or-later", "dependencies": { "@revanced-helper/helper-client": "file:../../../packages/client", + "decancer": "^1.6.5", "discord.js": "^14.11.0", "mongodb": "^5.7.0", "parse-duration": "^1.1.0" diff --git a/apps/bot-discord/src/utils/cureUsername.js b/apps/bot-discord/src/utils/cureUsername.js new file mode 100644 index 0000000..924caad --- /dev/null +++ b/apps/bot-discord/src/utils/cureUsername.js @@ -0,0 +1,17 @@ +import decancer from 'decancer'; + +export default async function cureUsername(member) { + let toCure = member.user.username; + if (member.nickname) toCure = member.nickname; + + if (!/^[\x20-\x7D]+$/.test(toCure)) { + // Cure username/nickname if there's non-ascii characters. + + let curedName = decancer(toCure).toString(); + + // If the output is empty, rename them to "ReVanced member". + if (/^\s*$/.test(curedName)) curedName = 'ReVanced member'; + + member.setNickname(curedName); + } +} \ No newline at end of file