Intégration d’un chat personnalisé¶
Verité filtre normalement les messages automatiquement. Cependant, certains plugins de chat interceptent l’événement de chat standard de Minecraft et gèrent eux-mêmes la transmission des messages.
Si votre plugin fonctionne ainsi, Verité peut ne jamais recevoir le message d’origine à filtrer. Dans ce cas, vous devez faire passer le message par Verité avant que votre plugin ne l’envoie.
Vous n’avez besoin de ce guide que si votre plugin gère ou remplace le chat standard de Minecraft. Les serveurs utilisant le chat standard ne nécessitent aucune configuration supplémentaire.
Intégration Java¶
Verité fournit une petite API publique spécialement conçue pour les intégrations telles que les systèmes de chat personnalisés.
1. Ajouter Verité en tant que dépendance facultative¶
Ajoutez Verité à votre plugin.yml :
L’utilisation d’une dépendance facultative garantit que Verité est chargé avant votre intégration lorsqu’il est installé, sans pour autant le rendre obligatoire pour le démarrage de votre plugin.
2. Vérifier si l’API est disponible¶
Si Verité est facultatif, vérifiez la disponibilité de l’API avant de l’utiliser :
private static final boolean VERITE_AVAILABLE;
static {
boolean available;
try {
Class.forName("teacommontea.api.VeriteFilter");
available = true;
} catch (ClassNotFoundException ignored) {
available = false;
}
VERITE_AVAILABLE = available;
}
Votre intégration peut alors simplement ne rien faire lorsque Verité n’est pas installé.
3. Filtrer le message¶
Avant que votre système de chat personnalisé n’envoie un message, faites-le passer par VeriteFilter :
if (VERITE_AVAILABLE) {
FilterResult result = VeriteFilter.check(
player.getUniqueId(),
message
);
if (result.blocks()) {
player.sendMessage(VeriteFilter.blockMessage());
return;
}
}
C’est tout ce qui est nécessaire pour une intégration de base.
check() fait passer le message par le filtre de Verité et enregistre le signalement associé au joueur. Si .blocks() renvoie true, votre système de chat doit empêcher l’envoi du message.
Utiliser la catégorie du filtre¶
Vous souhaiterez parfois savoir pourquoi Verité a détecté un message :
FilterResult result = VeriteFilter.check(
player.getUniqueId(),
message
);
switch (result) {
case CLEAN -> {
// Envoyer normalement
}
case SELF_HARM, ABUSE -> {
// Traiter de manière appropriée
}
default -> {
// Contenu bloqué ordinaire
}
}
Les résultats possibles sont :
CLEANBLOCKPROFANITYSELF_HARMABUSE
Tout résultat autre que CLEAN fait renvoyer true à .blocks().
Important :
SELF_HARMetABUSEpermettent de traiter ces messages différemment des infractions ordinaires aux règles. Nous déconseillons de les considérer automatiquement comme des infractions de chat devant être sanctionnées.
Détecter les messages répétés¶
Si votre système de chat doit distinguer le contenu filtré de la détection des messages répétés, utilisez la surcharge prenant en compte les répétitions :
FilterOutcome outcome = VeriteFilter.check(
player.getUniqueId(),
message,
true
);
if (outcome.blocks()) {
if (outcome.repeat()) {
player.sendMessage(VeriteFilter.repeatMessage());
} else {
player.sendMessage(VeriteFilter.blockMessage());
}
return;
}
outcome.category() fournit la catégorie de filtre habituelle, tandis que outcome.repeat() indique si le message a été bloqué parce qu’il était répété.
Filtrer d’autres contenus utilisateur¶
L’API ne se limite pas au chat.
Si votre plugin accepte du contenu rédigé par les utilisateurs, comme des surnoms, des préfixes, des tags d’équipe ou des champs similaires, vous pouvez les faire passer par le même filtre :
Pour du texte qui n’appartient pas à un joueur en particulier, utilisez VeriteFilter.ANONYMOUS :
Les vérifications anonymes renvoient toujours la catégorie de filtre appropriée, mais n’ajoutent aucun signalement au dossier d’un joueur.
Utiliser Verité avec Skript¶
Si votre système de chat personnalisé est écrit en Skript, vous n’avez pas besoin d’interagir avec l’API Java.
Avec Verité et Skript installés, la syntaxe de filtrage de Verité est automatiquement disponible.
Filtrer un chat personnalisé¶
Si votre script gère déjà lui-même l’envoi des messages de chat, vérifiez le message avant de l’envoyer :
L’ajout de for player indique à Verité qui a envoyé le message et enregistre le signalement associé à ce joueur.
Sans joueur :
Verité effectue une vérification pure du filtre sans enregistrer de signalement. Cela est utile pour les noms, tags, panneaux ou autres textes qui ne doivent pas être comptabilisés à l’encontre d’un joueur spécifique.
Vérifier pourquoi un message a été bloqué¶
Pour davantage de contrôle, récupérez le résultat du filtre :
set {_result} to filter result of {_msg} for player
if {_result} is "self_harm":
# Traiter séparément
stop
if {_result} is "abuse":
# Traiter séparément
stop
if {_result} is not "clean":
send block message to player
stop
Le résultat sera l’une des valeurs suivantes :
clean, block, profanity, self_harm ou abuse
Important : Envisagez de traiter
self_harmetabuseséparément des infractions de modération ordinaires plutôt que de sanctionner automatiquement le joueur.
Vérifier le nombre de signalements d’un joueur¶
Vous pouvez également récupérer le nombre de messages que Verité a signalés pour un joueur :
Votre propre système de modération peut utiliser cette valeur si vous souhaitez appliquer un comportement différent en cas d’infractions répétées.
Référence de la syntaxe Skript¶
%string% is blocked [for %-player%]
%string% is not blocked [for %-player%]
filter result of %string% [for %-player%]
block message
message flags of %player%
Le joueur facultatif a son importance :
Avec un joueur : le résultat du filtre est enregistré pour ce joueur.
Sans joueur : Verité vérifie uniquement le texte et n’enregistre aucun signalement.
Référence de l’API¶
L’API publique se trouve sous :
La classe principale pour les intégrations de chat est :
Les méthodes utiles comprennent :
VeriteFilter.check(UUID player, String message)
VeriteFilter.check(UUID player, String message, boolean repeatAware)
VeriteFilter.count(UUID player)
VeriteFilter.blockMessage()
VeriteFilter.repeatMessage()
VeriteFilter.selfHarmMessage()
VeriteFilter.blockNotice(FilterResult result, String message)
VeriteFilter.ANONYMOUS peut être utilisé pour filtrer du texte qui n’est associé à aucun joueur.
Verité expose également ses utilitaires de normalisation pour les intégrations qui en ont besoin, notamment la normalisation des accents, la suppression des entités, la réduction des caractères répétés, le fingerprinting et le nettoyage des extrémités. Ces fonctions sont thread-safe et n’ont généralement pas besoin d’être appelées manuellement avant d’utiliser check().
Pour la plupart des intégrations de chat personnalisé, il vous suffit de faire ceci :
Verité s’occupe du reste.