Blockierte Nachrichten

  • Hey und guten Abend,


    ich habe ein Plugin programmiert was bestimmte Wörter blockiert. Mein Problem ist nur, dass das Plugin auch Buchstaben die im Schimpfwort vorkommen ebenfalls blockiert.


    Beispiel: Der Spieler schreibt Versuchs und das Wort was blockiert wird heißt hs da hs im Wort Versuchs vorkommt, blockiert das Plugin Versuchs ebenfalls.


    Kann man das irgendwie umgehen?






    Mit freundlichen Grüßen

  • Wie wäre es mit message.startsWith(word) oder message.equalsIgnoreCase(word).


    Contains sagt es ja eigentlich schon. Wenn die Nachricht das Wort beinhaltet.

    Das hat aber den Nachteil, dass sowas wie Du hs oder so nicht gefiltert wird. Daher ist contains aus meiner Sicht schon vernünftig. Vielleicht fügt man vor dem zu überprüfenden Wort und danach noch ein Leerzeichen ein, dass man damit auf alleinstehende hs (oder anderes) untersucht. Aber da dann aufpassen: Besteht die Nachricht wirklich nur aus hs, enthält diese nicht  hs . Das könnte man umgehen, indem man einfach vor und nach der eingegebenen Nachricht auch noch ein Leerzeichen einfügt.


    Jetzt hat man den Part geschafft.

    Dann sollte man aber noch Fälle mit Sonderzeichen überlegen. Sowas wie ,hs, #hs oder Ähnliches würde dann wieder nicht erkannt werden.


    Da fällt mir aber gerade auf Anhieb nicht großartig eine Möglichkeit zu ein, das effektiv zu beheben, ohne jede Kombination einzuspeichern und abzugleichen.

  • Contains sagt es ja eigentlich schon. Wenn die Nachricht das Wort beinhaltet.

    Da soll es ja. Wenn ich Du bist ein hs schreibe, kommt das Wort hs vor. Ich habe statt contains mal startsWith genommen. Jetzt wird das Wort nicht blockiert wenn der Spieler Du bist ein hs schreibt.


    Trotz allem wird das Wort Versuchs immer noch blockiert. Da am Ende ein hs steht

    Einmal editiert, zuletzt von Akame () aus folgendem Grund: Ein Beitrag von Akame mit diesem Beitrag zusammengefügt.

  • Da soll es ja. Wenn ich Du bist ein hs schreibe, kommt das Wort hs vor. Ich habe statt contains mal startsWith genommen. Jetzt wird das Wort nicht blockiert wenn der Spieler Du bist ein hs schreibt.


    Trotz allem wird das Wort Versuchs immer noch blockiert. Da am Ende ein hs steht

    Willkommen in der Welt der Filterlisten. RegEx ist hier definitiv dein Freund. Compile die Expressions aber vorher (evtl. onEnable) und nicht bei jeder Chatnachricht.


    Dann kommts nur noch darauf an wie gut du in RegEx bist.


    Die Frage, die dann noch bleibt ist wie erkennst du ob mit hs nun "Hurensohn" gemeint ist oder ob das hs zu einem anderen Wort gehört. Leerzeichen allein bringts nicht (du .hs würde das umgehen). Du musst also nen guten mittelwert finden. Idealerweise würde ich lieber ne Beleidigung (durch den Filter) durchgehen lassen als den Chat unbrauchbar zu machen.