Tous les billets
17 min de lecture

Comment configurer un filtre de mots dans un groupe Telegram

Le bot supprime les messages contenant certains mots. Comment bâtir une telle règle à partir de plusieurs mots, y ajouter synonymes et exceptions, la tester.

Tôt ou tard, tout chat vivant se met à répéter la même chose : « écris-moi en privé », « je vends un compte », des annonces d’échange de crypto. Nettoyer cela à la main est épuisant, et garder un modérateur éveillé en permanence n’a aucun sens — un filtre de mots se charge de ce genre de publicité et de spam : le bot supprime lui-même les messages dans lesquels les mots attendus sont apparus.

Dans Scarabeus, ce filtre s’appelle la modération par phrases. Contrairement aux règles IA, il ne devine rien : soit la règle a trouvé les mots dans le message, soit non. Les phrases conviennent donc là où les formulations sont prévisibles et où une erreur coûte cher.

Le constructeur se présente comme un ensemble de fragments reliés entre eux. Vous trouverez ci-dessous ce que signifie chaque liaison, comment elles se combinent et pourquoi une même règle se comporte parfois autrement que prévu. Tous les verdicts « attrape » et « laisse passer » ont été mesurés sur le moteur qui tourne réellement dans le bot.

Où se règlent les mots interdits d’un groupe Telegram#

Section Modération → carte « Modération par phrases ». La carte elle-même porte l’interrupteur qui active et désactive tout le bloc, et le bouton « Configurer » ouvre les ensembles de règles.

La carte « Modération par phrases » dans la section Modération

Le récapitulatif de la carte montre tout de suite combien d’ensembles et de règles sont actifs, et dans combien d’ensembles les sanctions manquent encore.

Les règles vivent à l’intérieur d’ensembles. Un ensemble est un lot thématique : « Crypto », « Publicité de chaînes », « Grossièretés ». Ce découpage n’a rien de cosmétique : la chaîne de sanctions appartient à l’ensemble, la publicité et les insultes peuvent donc être punies différemment sans mélanger leurs compteurs d’infractions.

Comment construire sa première règle#

À l’intérieur d’un ensemble, appuyez sur « Ajouter une règle ». Une règle se compose de fragments de deux types :

  • phrase — les mots précis à rechercher dans le message ;
  • nombre — n’importe quelle suite de chiffres, affichée comme « n’importe quel nombre ».

Entre deux fragments voisins se trouve toujours une liaison — OU ou ET. Le bouton « Ajouter un fragment » ajoute le morceau suivant, et « Grouper » réunit des fragments voisins en un groupe.

L’éditeur de règle : un groupe « buy OU sell », une liaison ET avec une distance de 10 et la phrase « crypto »

Un aperçu reste affiché en haut de l’éditeur — il montre comment la règle sera réellement lue.

Prenons l’ensemble « Crypto » comme exemple : dans un chat consacré aux jeux de société, les annonces de change n’ont rien à faire. La règle fonctionnelle la plus simple tient en une seule phrase :

Elle attrape les annonces directes et laisse passer tout ce qui est formulé autrement. C’est à partir de là que le constructeur devient utile.

ET — les deux parties doivent être dans le message#

La liaison ET signifie que les deux fragments doivent apparaître dans le texte. À côté de la liaison apparaît le champ « Jusqu’à n caractères » — la distance maximale entre eux.

  • Attrape : “swap usdt at a good rate”.
  • Attrape : “usdt for swap” — sans ordre strict, peu importe quel mot vient en premier.
  • Laisse passer : “swap stickers happens every friday at our board game club, and questions about usdt belong in another chat” — il y a plus de 40 caractères entre les mots.

OU — n’importe laquelle des parties suffit#

La liaison OU se déclenche dès qu’au moins une des parties voisines est trouvée :

  • Attrape : “buying a couch” — OU n’exige rien d’autre qu’un des mots, une telle règle est donc très large.
  • Laisse passer : “trading cards”.

Une subtilité importante : OU lie plus fort que ET. Cette règle-ci :

se lit « swap ou p2p — et usdt à côté », et non « soit swap, soit p2p à côté de usdt ». Écrite explicitement, la même liaison donne :

  • Laisse passer : “swap stickers” — le mot “swap” seul n’attrape rien, il lui faut aussi un “usdt” à proximité.
  • Attrape : “p2p usdt” et “swap usdt”.

Si vous avez besoin d’un autre groupement, sélectionnez les parties avec le bouton « Grouper » : la correspondance est alors cherchée d’abord à l’intérieur du groupe, et c’est son résultat qui est relié aux autres fragments. Une règle peut contenir plusieurs groupes, mais un groupe à l’intérieur d’un groupe est interdit.

Nombre — n’importe quels chiffres#

Le fragment « n’importe quel nombre » remplace toute suite de chiffres : montants, quantités, numéros. Il sert là où les mots sont prévisibles mais pas les chiffres :

  • Attrape : “selling for 500”, “giving away 2 pieces”.
  • Laisse passer : “selling advice” — il n’y a aucun chiffre dedans.

« Jusqu’à n caractères » : deux pièges#

Le premier : 0 signifie « sans limite », et non « collés l’un à l’autre ». C’est l’erreur la plus fréquente. Avec 0, les fragments doivent simplement se rencontrer quelque part dans le message — même à la première et à la dernière ligne.

Le second : la distance se compte sur un texte dont les espaces ont déjà été retirés.

  • Attrape : “notcrypto”, “not crypto” et “not crypto” — les espaces disparaissent avant la vérification, la distance vaut donc zéro dans les trois cas.

La limite couvre donc bien plus que ce qu’on imagine à l’œil : 40 caractères sans espaces, cela représente environ six ou sept mots.

Ordre strict#

Par défaut, la liaison ET ne regarde pas l’ordre — comme dans l’exemple “usdt for swap” plus haut. La case « Ordre strict » exige que les parties se suivent de gauche à droite dans le texte — exactement comme elles sont disposées dans le formulaire. Dans le schéma, l’ordre strict est signalé par un point d’exclamation :

  • Attrape : “buying usdt”.
  • Laisse passer : “usdt buying”.

L’ordre strict peut être activé pour la règle entière ou pour un seul groupe.

Les exceptions#

La case « Exception » transforme un fragment en condition qui annule le déclenchement. L’exception reste une partie ordinaire de la chaîne — avec sa propre liaison, comme toutes les autres — et ne se distingue que par la couleur. Ce qu’elle annule exactement dépend du niveau.

Une exception au niveau supérieur annule toute la règle. La partie principale est vérifiée d’abord, et si elle correspond mais que l’exception se trouve quelque part dans le message, la règle ne se déclenche pas. Exemple : l’ensemble « Publicité de chaînes », où vos propres annonces ne doivent pas être emportées :

  • Attrape : “subscribe to the channel”.
  • Annulé par l’exception : “subscribe to our channel”.
  • Annulé par l’exception : “our channel: subscribe to the channel” — peu importe où se trouve l’exception dans le message.

Si les variantes « maison » sont plusieurs, l’exception se pose sur tout le groupe — n’importe laquelle d’entre elles annule alors le déclenchement :

  • Annulé par l’exception : “subscribe to the official channel”.
  • Attrape : “subscribe to the channel”.

Une exception à l’intérieur d’un groupe n’éteint que ce groupe, tandis que les autres branches du OU continuent de fonctionner en dehors. Vous verrez ce que cela donne dans la section sur les combinaisons, plus bas.

Une seule exception est autorisée par niveau, et les exceptions imbriquées sont interdites.

Combinaisons : comment les parties travaillent ensemble#

Les liaisons prises isolément sont claires ; les surprises commencent quand on les combine. Or ce sont justement les combinaisons qui permettent d’éliminer la publicité et le spam sans toucher aux conversations ordinaires. Voici les principales combinaisons et la façon dont la règle y réagit.

Un groupe avec ET à l’intérieur d’un OU#

Un groupe peut lui-même être une liaison ET — il devient alors entièrement l’une des branches du OU :

  • Attrape : “buying usdt” — le groupe s’est déclenché.
  • Attrape : “any p2p here?” — la deuxième branche s’est déclenchée, le groupe n’a pas servi.
  • Laisse passer : “buying a couch” — il manque “usdt” dans le groupe, et “p2p” est absent.

Une chaîne de trois parties#

Les liaisons ET peuvent se suivre, chacune avec sa propre distance. La règle ne se déclenche que si toutes les parties sont trouvées :

  • Attrape : “selling telegram account”.
  • Laisse passer : “selling an account” — il manque une partie.

Deux groupes reliés par ET#

Les groupes peuvent être plusieurs — par exemple des synonymes des deux côtés :

  • Attrape : “p2p btc”, “swap usdt” — n’importe quel mot du premier groupe à côté de n’importe lequel du second.
  • Laisse passer : “swap stamps”.

Ordre strict sans limite de distance#

L’ordre strict et la distance sont indépendants. Avec un zéro, l’ordre compte mais l’écart non :

  • Attrape : “swap stickers, and at the very end about usdt”.
  • Laisse passer : “usdt first, swap later”.

Ordre strict à l’intérieur d’un seul groupe#

L’ordre peut être exigé d’un groupe sans contraindre le reste de la règle :

  • Attrape : “buying usdt”.
  • Laisse passer : “usdt buying” — l’ordre est rompu à l’intérieur du groupe.
  • Attrape : “usdt buying via p2p” — le groupe ne s’est pas déclenché, mais la branche “p2p” si.

Le nombre en premier#

Le nombre peut occuper n’importe quelle place dans la chaîne. Associé à l’ordre strict, cela permet d’attraper « montant, puis devise » sans toucher à l’ordre inverse :

  • Attrape : “500 usdt”.
  • Laisse passer : “usdt 500”.

Une exception à l’intérieur d’un groupe#

Le cas le plus subtil : l’exception n’éteint que son propre groupe, et la branche voisine du OU vit sa propre vie :

  • Attrape : “swap usdt” — le groupe s’est déclenché, aucune exception.
  • Annulé par l’exception : “swap stickers” — le groupe est éteint, et il n’y a pas d’autre branche dans le message.
  • Attrape : “swap stickers and p2p” — le groupe est éteint, mais la branche “p2p” s’est déclenchée toute seule.

Ordre strict et exception#

L’exception ne participe pas à l’ordre : l’ordre strict vérifie les parties principales, tandis que l’exception est cherchée dans tout le message :

  • Attrape : “buying usdt”.
  • Annulé par l’exception : “buying from you usdt”.

Pourquoi la règle ne réagit pas comme prévu : ce qui arrive au texte avant la vérification#

C’est la section clé : la moitié des surprises s’explique ici. La règle comme le message sont ramenés à une même forme, et ce n’est qu’ensuite qu’ils sont comparés :

  1. le texte passe en minuscules — la casse n’a jamais d’importance ;
  2. les émojis sont supprimés ;
  3. la ponctuation et les symboles sont remplacés par une espace ;
  4. la substitution de lettres est reconnue : dans les mots où les alphabets se mélangent, ou les lettres et les chiffres, les caractères étrangers sont remis en place — “go0ds” se lit “goods”, et “cаnal” avec un « а » cyrillique se lit “canal”. Une suite de chiffres n’est pas touchée, “100” reste donc “100” — et “g00ds” avec deux zéros d’affilée n’est pas transformé non plus ;
  5. toutes les espaces sont supprimées.

Trois conséquences à retenir :

  • La recherche porte sur des sous-chaînes, il n’y a pas de frontière de mot. La phrase ban se trouve dans “banana” et “urban”. Les phrases courtes doivent presque toujours être précisées par une liaison ET ou remplacées par des plus longues.
  • Les espaces et les signes à l’intérieur d’une phrase ne gênent pas. La règle spam se déclenche sur “s p a m” et “s.p.a.m”.
  • Une phrase faite uniquement d’émojis ou de ponctuation ne se déclenchera jamais — après la normalisation, il n’en reste rien.

Testez la règle avant qu’elle ne travaille#

En bas de l’éditeur se trouve la carte « Vérifier la règle ». Collez un vrai message dans le champ « Texte à vérifier » et appuyez sur « Vérifier ».

C’est le brouillon actuellement ouvert dans le formulaire qui est vérifié — nul besoin d’enregistrer la règle. Cela ne provoque aucune sanction et n’apparaît pas dans le journal. La réponse prend trois formes :

  • « Le texte ne passe pas la modération » — la règle se serait déclenchée ;
  • « Le texte passe la modération » — elle ne s’est pas déclenchée ; ce qui a manqué est listé en dessous : « Introuvable dans le texte : … » ;
  • « Le texte passe la modération » avec l’exception mise en évidence — la règle s’est déclenchée, mais l’exception l’a annulée.

La mise en évidence montre le texte déjà normalisé : sans espaces, sans émojis et sans ponctuation. Cela surprend au premier regard, mais on voit aussitôt ce que le bot compare réellement.

La carte « Vérifier la règle » : le texte “sell crypto” ne passe pas la modération

La vérification n’enregistre rien et ne punit personne — elle montre seulement si la règle se serait déclenchée sur ce texte.

Pourquoi la règle ne supprime rien : les sanctions se définissent dans l’ensemble#

La chaîne de punitions se définit uniquement dans l’ensemble : « après N infractions, un avertissement ; après la suivante, un mute », et ainsi de suite. Ni une règle isolée ni le bloc entier n’ont de chaîne propre — l’ensemble est précisément l’unité à laquelle la sévérité est attribuée. C’est pourquoi il vaut la peine de répartir les règles entre les ensembles : « Crypto », « Publicité de chaînes » et « Grossièretés » se punissent différemment.

L’ensemble « Profanity » : deux règles et la chaîne « aucune sanction → avertissement → mute »

Les règles de l’ensemble apparaissent en liste, et sa chaîne de punitions est en bas de la carte.

Si aucune sanction n’est configurée dans l’ensemble, ses règles ne se déclenchent pas du tout — et aucune ligne n’apparaît dans le journal. L’ensemble a l’air opérationnel, mais il n’agit pas. Quand une règle « n’attrape rien », c’est la première chose à vérifier.

La case « Compteur de violations propre » dans l’éditeur de règle sert quand une règle ne doit pas entraîner les autres : ses déclenchements sont comptés à part et ne font pas avancer le compteur commun de l’ensemble. Revers de la médaille : en décochant la case, le compteur accumulé de cette règle est supprimé et l’escalade repart de zéro.

Ce qui est vérifié, et quand#

  • Sont vérifiés le texte du message et la légende des médias. Les messages sans texte ne touchent pas aux couches textuelles.
  • Les messages modifiés sont vérifiés de nouveau — les corriger ne sauve rien.
  • Les administrateurs du chat et les membres de la liste blanche sont ignorés, avant toutes les vérifications : ni déclenchements, ni compteurs.
  • Les couches passent l’une après l’autre : longueur → doublons → phrases → expressions régulières → liens. La première couche qui se déclenche met fin à la vérification, un message attrapé par la longueur ou les doublons n’atteint donc jamais les phrases.
  • Si plusieurs règles de phrases se déclenchent, c’est la première dans l’ordre qui compte — c’est d’elle que viennent l’ensemble et donc la chaîne de punitions.

Dans le journal de modération, le déclenchement apparaît comme « Phrases : nom de l’ensemble » ; on y voit aussi quelle règle a correspondu et à quel palier d’escalade le participant se trouve.

Limites des forfaits#

Sur le forfait Limité, dix règles de phrases au maximum fonctionnent en même temps : l’interrupteur de la carte de l’ensemble choisit lesquelles sont actives. Le nombre d’ensembles, lui, n’est pas limité. Sur Base, les phrases n’ont aucune limite, et l’on y trouve aussi les expressions régulières et des réglages distincts pour les sujets de forum. Le contenu de chaque forfait est sur la page des tarifs.

Questions fréquentes#

En quoi les règles de phrases diffèrent-elles des mots interdits classiques ?

Un mot interdit l’est en lui-même. Une règle de phrases sait exiger plusieurs mots côte à côte, accepter des synonymes via OU, tenir compte de l’ordre et se taire si une exception apparaît dans le message. Elle touche donc bien plus rarement les conversations ordinaires.

Comment bloquer les grossièretés dans un chat Telegram ?

Créez un ensemble à part — « Langage grossier », par exemple —, rassemblez-y des règles avec les variantes d’orthographe reliées par OU et attribuez une chaîne de punitions à l’ensemble. Tant qu’aucune sanction n’y figure, ses règles ne se déclenchent pas.

Pourquoi ma règle ne supprime-t-elle rien ?

Le plus souvent, aucune chaîne de punitions n’est configurée dans l’ensemble. Autres causes : le bloc « Modération par phrases » est désactivé ; le message a été attrapé par une couche antérieure — longueur ou doublons ; l’auteur est administrateur du chat ou membre de la liste blanche ; sur le forfait Limité, la règle ne fait pas partie des dix actives.

Les mots écrits avec des espaces ou des lettres substituées sont-ils attrapés ?

Oui. Avant la vérification, les espaces, les émojis et la ponctuation sont retirés du texte, et les chiffres ou lettres d’un autre alphabet glissés dans un mot sont remis en place. Pour la règle, “s p a m”, “s.p.a.m” et “spam” sont donc une seule et même chose.

Les légendes de photos et les messages modifiés sont-ils vérifiés ?

Oui. Les règles examinent le texte du message et la légende des médias, et un message modifié est vérifié de nouveau — le corriger ne le sauve pas.

Petite liste de contrôle#

  • Une chaîne de punitions est attribuée à l’ensemble — sinon les règles se taisent.
  • La valeur « Jusqu’à n caractères » n’est pas 0 si vous vouliez dire « côte à côte ».
  • Si l’ordre des mots compte, « Ordre strict » est activé.
  • Les phrases courtes comme ban sont précisées par une liaison ET, pour ne pas attraper “banana”.
  • La règle a été testée sur un vrai message dans la carte « Vérifier la règle ».
  • Vos propres annonces sont placées dans une exception.

D’autres guides sur la modération des groupes Telegram vous attendent dans le journal Scarabeus.

À lire ensuite