Chatfilter (Veritédoux)

Veritédoux ist Verités Chatfilter. Er liest jede Nachricht, die ein Spieler sendet, und entscheidet, ob diese Nachricht den Rest des Servers erreichen sollte. Wenn eine Nachricht gegen eine Regel verstößt, stoppt Verité sie, bevor sie jemand anderes sieht, und teilt dem Absender mit, dass seine Nachricht nicht zugestellt wurde.

Der Filter läuft automatisch, sobald Verité installiert ist. Beim Standard-Minecraft-Chat gibt es nichts einzurichten. Wenn dein Server ein Plugin verwendet, das den Chat selbst abfängt oder umgestaltet, siehe Integration benutzerdefinierter Chat-Systeme, damit Nachrichten weiterhin durch den Filter laufen.

Diese Seite erklärt, was der Filter abfängt und wie seine Hauptteile funktionieren. Für die genauen Konfigurationsschlüssel und ihre Standardwerte siehe die Konfigurationsreferenz.

Was der Filter abfängt

Jede Nachricht wird in eines dieser Ergebnisse einsortiert:

Ergebnis Bedeutung
Clean Die Nachricht ist erlaubt und wird normal zugestellt.
Blocked Gewöhnliche regelverletzende Inhalte. Die Nachricht wird verworfen und der Absender sieht den Blockhinweis.
Profanity Fluchen, beurteilt nach Sprache und Dialekt. Standardmäßig deaktiviert, damit Server, die gelegentliches Fluchen erlauben, nicht betroffen sind.
Abuse Inhalte, die darauf abzielen, eine andere Person zu schädigen oder anzugreifen.
Self-harm Inhalte, die mit Suizid oder Selbstverletzung zusammenhängen könnten. Wird mit Fürsorge behandelt, nicht als strafbarer Verstoß. Siehe Selbstverletzungsinhalte.

Wenn eine Nachricht gestoppt wird, wird nur der Absender benachrichtigt. Die Nachricht wird schlicht niemandem sonst zugestellt. Verité schaltet einen Spieler wegen einer gefilterten Nachricht niemals von sich aus stumm, kickt oder bannt ihn. Zu entscheiden, was mit einem markierten Spieler geschehen soll, bleibt deinen Mitarbeitern und deinen Moderationsregeln überlassen.

Der Blockhinweis und der Wiederholungshinweis sind konfigurierbar. Siehe chat.filter.block.message und chat.filter.repeat.message in der Konfigurationsreferenz.

Unterstützte Sprachen

Verité prüft Inhalte in sechs Sprachen:

  • Englisch
  • Spanisch
  • Französisch
  • Portugiesisch
  • Deutsch
  • Italienisch

Jede Sprache kann unabhängig ein- oder ausgeschaltet werden, und innerhalb jeder Sprache wählst du, welche Kategorien laufen: Selbstverletzungserkennung, Missbrauchserkennung, Beleidigungserkennung und Vulgärsprache. Vulgärsprache ist für jede Sprache standardmäßig aus.

Spanisch, Französisch und Portugiesisch unterstützen außerdem regionale Dialekte, sodass Vulgärsprache gegen die richtige regionale Wortliste statt gegen eine einzige generische Liste beurteilt wird. Spanisch deckt Varietäten wie Spanien, Mexikanisch, Argentinisch, Chilenisch, Kolumbianisch und mehr ab; Französisch deckt Frankreich und Kanadisch ab; Portugiesisch deckt Europäisch und Brasilianisch ab. Diese regionalen Schalter befinden sich unter jeder Sprache in der Konfiguration.

Verité ermittelt, in welcher Sprache jeder Teil einer Nachricht geschrieben ist, sodass eine Beleidigung nach der Sprache der Wörter um sie herum beurteilt wird. Das ist wichtig auf sprachgemischten Servern, wo eine einzelne Nachricht mitten in der Sprache wechseln kann.

Sprachabdeckung heute

Die Erkennung ist im Englischen am stärksten. Die anderen Sprachen werden unterstützt und können aktiviert werden, aber Englisch erhält die vollständigste Abdeckung.

Nachrichten in anderen Sprachen

Zwei besondere Einstellungen entscheiden, was mit Text außerhalb des unterstützten Satzes geschieht:

  • unknown.lang: eine Nachricht, die in einer Sprache geschrieben ist, die Verité als nicht unterstützt erkennt.
  • undeterminable: eine Nachricht, deren Sprache nicht ermittelt werden kann (zum Beispiel sehr kurze Nachrichten oder reine Symbole).

Beide sind standardmäßig erlaubt. Wenn du lieber alles blockieren möchtest, was der Filter nicht inhaltlich prüfen kann, kannst du block.unsupported.languages im erweiterten Abschnitt aktivieren. Damit eingeschaltet werden Nachrichten in einer Sprache, die Verité noch nicht unterstützt, blockiert.

An Umgehung vorbeikommen

Spieler, die verbotene Inhalte an einem Filter vorbeischleusen wollen, verkleiden sie oft. Veritédoux normalisiert eine Nachricht vor dem Matching, sodass gängige Tricks nicht funktionieren. Jeder dieser Durchläufe kann in der Konfiguration umgeschaltet werden, und alle sind standardmäßig an.

Trick Wie er aussieht Wie Verité damit umgeht
Homoglyphen Kyrillische, Fullwidth- oder mathematisch-fette Buchstaben, die wie normale aussehen Vor dem Matching zurück auf schlichte Buchstaben gefaltet
Entities HTML-artige Zeichencodes, die für Buchstaben einstehen In die Buchstaben dekodiert, die sie darstellen
Verschleierung e!v!i!l oder ausgedehnte Buchstaben Zurück in das echte Wort repariert
Segmentierung Wörter ohne Leerzeichen zusammengeklebt Zurück in echte Wörter aufgeteilt
Fingerprinting Vertauschte Buchstaben, etwa das Tauschen zweier Buchstaben in einer Beleidigung Per Buchstaben-Fingerprint getroffen

Der Buchstaben-Fingerprint-Durchlauf gilt nur für Wörter von mindestens sechs Buchstaben, und er tritt für Wörter zurück, die eine Sprache legitim erlaubt, sodass gewöhnliche Wörter, die sich zufällig zu etwas anderem umordnen, nicht abgefangen werden.

Dekorative Unicode-Schriftarten werden separat behandelt. Das Einschalten von keep.chat.readable blockiert Nachrichten, die überwiegend in ausgefallenen Schriftarten geschrieben sind, die zwar rendern, aber den Chat schwer lesbar machen. Emoji sind von dieser Einstellung nicht betroffen.

Symbole und Emoji

Manche Inhalte sind überhaupt keine Wörter: verbotene Symbole oder Emoji, die so angeordnet sind, dass sie etwas buchstabieren. Verité führt einen zweiten Durchlauf über die Symbole und Emoji in einer Nachricht durch und prüft einzelne Symbole, wiederholte Symbole und geordnete oder gespiegelte Emoji-Kombinationen. Das fängt Symbolinhalte ab, die eine wortbasierte Prüfung überspringen würde. Reiner Text bleibt den Sprachprüfungen überlassen.

Wiederholungs- und Spamerkennung

Wiederholte Nachrichten

Die Wiederholungserkennung hält einen Spieler davon ab, den Chat mit derselben oder nahezu derselben Nachricht zu fluten. Sie ist standardmäßig aus und wird mit block.repeat.messages aktiviert.

Wenn aktiviert, merkt sich Verité die jüngsten Nachrichten eines Spielers und vergleicht jede neue Nachricht mit ihnen:

  • Exakte Wiederholungen werden auch verkleidet abgefangen. Der Vergleich ignoriert Groß- und Kleinschreibung, Akzente und wiederholte Buchstaben, sodass HELLO, hello und helllo alle als dieselbe Nachricht gelten.
  • Beinahe-Wiederholungen werden abgefangen, wenn eine neue Nachricht einer kürzlichen ähnlich genug ist, auch wenn nicht identisch. Wie nahe als Treffer zählt, wird durch block.repeat.similarity.threshold festgelegt (ein Wert von 0 bis 1, wobei 1 identisch bedeutet).

Du steuerst, wie viele jüngste Nachrichten gemerkt werden (block.repeat.history.size) und wie weit zurück in der Zeit eine Nachricht noch als Wiederholung zählt (block.repeat.window.ms). Eine blockierte Wiederholung zeigt den Wiederholungshinweis statt des gewöhnlichen Blockhinweises. Siehe die Konfigurationsreferenz für jeden Wiederholungsschlüssel.

Verlauf und ausgelastete Server

Sowohl die Verlaufsgröße als auch das Zeitfenster auf unbegrenzt zu setzen, bedeutet, dass der gemerkte Verlauf eines Spielers immer weiter wächst. Halte auf einem ausgelasteten Server mindestens eines der beiden begrenzt.

Spam und Werbung

Die Spamerkennung nutzt Verités Tokenizer, um Nachrichten zu erkennen, die wie Betrug oder Werbung klingen, und sie zu blockieren, bevor Spieler sie sehen. Sie ist standardmäßig aus und wird mit block.possible.spam aktiviert.

Diese Prüfung ist opt-in, weil kein Spamdetektor perfekt ist. Er kann einen brandneuen Betrug verpassen, und er kann gelegentlich eine legitime Nachricht kennzeichnen, die zufällig stark werbend klingt. Wenn aktiviert, verwendet er ein dediziertes Betrugsmodell, wo verfügbar, und greift andernfalls auf eine leichtere Prüfung zurück.

Selbstverletzungsinhalte

Die Selbstverletzungserkennung existiert, um Menschen zu schützen, nicht um sie zu bestrafen. Wenn eine Nachricht als Selbstverletzungsinhalt abgefangen wird, tut Verité zwei Dinge:

  1. Die Nachricht wird nicht an den Rest des Servers zugestellt.
  2. Der Absender erhält einen festen Unterstützungshinweis auf Englisch.

Der Unterstützungshinweis teilt dem Absender mit, dass seine Nachricht nicht gesendet wurde, weist darauf hin, dass er sie umformulieren und erneut versuchen kann, falls es ein Versehen war, bietet nicht wertende Ermutigung, sich an jemanden zu wenden, dem er vertraut, oder an einen lokalen Krisendienst, rät, bei unmittelbarer Gefahr die Notdienste zu kontaktieren, und verlinkt ein internationales Verzeichnis von Krisenressourcen unter findahelpline.com.

Dies ist eine Sicherheitsfunktion, kein Moderationsverstoß

Selbstverletzung und Missbrauch werden getrennt von gewöhnlichem Regelverstoß gemeldet, gerade damit sie anders behandelt werden können. Wir raten dringend davon ab, einen Spieler für eine Selbstverletzungsnachricht automatisch zu bestrafen. Behandle es als Wohlergehenssignal, nicht als Chat-Verstoß.

Der Selbstverletzungshinweis kann nicht geändert werden

Anders als der gewöhnliche Blockhinweis ist die Selbstverletzungs-Unterstützungsnachricht fest und nicht konfigurierbar. Das hält die Krisenanleitung genau und vollständig. Der Hinweis wird immer auf Englisch zugestellt, damit der Wortlaut für alle zuverlässig bleibt.

Die Selbstverletzungserkennung wird pro Sprache über self.harm.detection aktiviert, das für jede unterstützte Sprache standardmäßig an ist.

Den Filter konfigurieren

Jede hier beschriebene Einstellung befindet sich im Abschnitt chat.filter der config.yml. Jeder Wahr-oder-Falsch-Schlüssel und jeder numerische Schlüssel hier kann mit /verite config aus dem Spiel heraus gelesen und geändert werden. Für die vollständige Liste der Schlüssel und Standardwerte siehe die Konfigurationsreferenz.

Für Entwickler

Wenn du eine Integration, ein benutzerdefiniertes Chat-System oder ein Skript baust, das Text durch den Filter laufen lassen muss, siehe: