From 7568bbaed07a75e3f68ba6cec8c013825c9ed046 Mon Sep 17 00:00:00 2001 From: V Date: Mon, 29 May 2023 16:00:02 +0200 Subject: [PATCH] VcNarrator: Improve username cleaning to support non ascii chars --- src/plugins/vcNarrator.tsx | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/plugins/vcNarrator.tsx b/src/plugins/vcNarrator.tsx index b8f0fdef9..caca70df5 100644 --- a/src/plugins/vcNarrator.tsx +++ b/src/plugins/vcNarrator.tsx @@ -59,17 +59,20 @@ function speak(text: string, settings: any = Settings.plugins.VcNarrator) { speechSynthesis.speak(speech); } -function clean(str: string, fallback: string) { +function clean(str: string) { + const replacer = Settings.plugins.VcNarrator.latinOnly + ? /[^\p{Script=Latin}\p{Number}\p{Punctuation}\s]/gu + : /[^\p{Letter}\p{Number}\p{Punctuation}\s]/gu; + return str.normalize("NFKC") - .replace(/[^\w ]/g, "") - .trim() - || fallback; + .replace(replacer, "") + .trim(); } function formatText(str: string, user: string, channel: string) { return str - .replaceAll("{{USER}}", clean(user, user ? "Someone" : "")) - .replaceAll("{{CHANNEL}}", clean(channel, "channel")); + .replaceAll("{{USER}}", clean(user) || user ? "Someone" : "") + .replaceAll("{{CHANNEL}}", clean(channel) || "channel"); } /* @@ -235,6 +238,11 @@ export default definePlugin({ type: OptionType.BOOLEAN, default: false }, + latinOnly: { + description: "Strip non latin characters from names before saying them", + type: OptionType.BOOLEAN, + default: false + }, joinMessage: { type: OptionType.STRING, description: "Join Message",