VcNarrator: Improve username cleaning to support non ascii chars

This commit is contained in:
V 2023-05-29 16:00:02 +02:00
parent 9023d45d9e
commit 7568bbaed0
No known key found for this signature in database
GPG key ID: A1DC0CFB5615D905

View file

@ -59,17 +59,20 @@ function speak(text: string, settings: any = Settings.plugins.VcNarrator) {
speechSynthesis.speak(speech); 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") return str.normalize("NFKC")
.replace(/[^\w ]/g, "") .replace(replacer, "")
.trim() .trim();
|| fallback;
} }
function formatText(str: string, user: string, channel: string) { function formatText(str: string, user: string, channel: string) {
return str return str
.replaceAll("{{USER}}", clean(user, user ? "Someone" : "")) .replaceAll("{{USER}}", clean(user) || user ? "Someone" : "")
.replaceAll("{{CHANNEL}}", clean(channel, "channel")); .replaceAll("{{CHANNEL}}", clean(channel) || "channel");
} }
/* /*
@ -235,6 +238,11 @@ export default definePlugin({
type: OptionType.BOOLEAN, type: OptionType.BOOLEAN,
default: false default: false
}, },
latinOnly: {
description: "Strip non latin characters from names before saying them",
type: OptionType.BOOLEAN,
default: false
},
joinMessage: { joinMessage: {
type: OptionType.STRING, type: OptionType.STRING,
description: "Join Message", description: "Join Message",