Sauberer Chat: Schimpfwort- und Linkfilter
Lobby-Chat und Chat im Spiel blockieren jetzt Schimpfwörter aus einer Liste mit 40.000 Begriffen und weisen Links ab, bevor eine Nachricht überhaupt gespeichert wird.

Kurz gesagt
Chat soll einladend und sicher sein, in jeder Sprache. Jede Nachricht, die du sendest — in der Lobby und im Spiel —, wird jetzt geprüft, bevor sie veröffentlicht wird. Schimpfwörter werden blockiert und Links sind nicht erlaubt, damit es im Chat um das Spiel geht.
Die Prüfungen sind sorgfältig, nicht grob: Sie treffen ganze Wörter und Wendungen, ein harmloses Wort, das lediglich eine gesperrte Zeichenfolge enthält, kommt also weiterhin durch. Sticker sind ein fester, sicherer Satz und daher nie betroffen.
Für technisch Neugierige
Ein neues Paket @opolyx/moderation (nach dem Vorbild des Logger-Pakets) trifft exakt ganze Wörter und Wendungen, gemäß den Nutzungshinweisen der Sperrliste selbst: „pain in the ass“ blockiert, „assassin“ und „horde“ kommen durch — es gibt keinen Teilstring-Scan, und die Liste zählt Verschleierungen wie h0rny bereits vorab auf, eine unscharfe Normalisierung ist also nicht nötig. Sie wandelt in Kleinbuchstaben, zerlegt an Leerzeichen, probiert rohe und randbereinigte Varianten gegen ein Set und prüft dann Wendungen aus 2 bis 11 Wörtern.
Die 40.917 Begriffe liegen in einem generierten Modul aus Zeichenkettenliteralen (~420 KB), das ausschließlich serverseitig läuft — die Client-Bündel wurden als sauber überprüft. Beide Chat-Schreibpfade weisen eine schlechte Nachricht vor dem Einfügen ab, denn Realtime verteilt gespeicherte Zeilen unverändert weiter, die Prüfung muss also dem Schreiben vorausgehen.
// link filter: schemed URLs (https?|ftp|wss?://, hxxp), www., and bare
// label.tld against a curated ~65-TLD set — so Node.js / e.g. / "gg wp" pass,
// but discord.gg / t.me/x / mysite.com / emails are blocked. Light dot-de-obfuscation
// folds example[.]com and "site dot net" first.Eine bewusst hingenommene Lücke (Entscheidung des Betreibers): Ein direktes Einfügen in die Datenbank umgeht diese Filter auf Aktionsebene — der Härtungskandidat ist eine Tabelle gesperrter Begriffe plus ein Trigger vor dem Einfügen. Das Filtern von Spitznamen und eine vollständig lokalisierte Fehlermeldung sind zurückgestellt.
