Modérer les injures avec votre bot Discord

Modérer les injures

Discord étant un tchat vocal et écrit où tout le monde peux s’exprimer, il peut être utilise de filtrer les messages des mots indésirables.
Nous allons voir dans cet article comment modérer les injures (ou d’autres mots) des messages postés.

Je pars du principe que vous avez suivi mon premier tutoriel sur Créer votre propre bot. Ainsi, je vais partir de l’état final du bot présent à cette adresse.

Écoute des messages

Avant de modérer des injures avec votre bot, ce dernier devra d’abord écouter tous les messages qui seront postés.

J’ai donc repris le code que nous avions dans notre index.js:

const Discord = require('discord.js');
const client = new Discord.Client();

client.on('ready', () => {
  console.log(`Logged in as ${client.user.tag}!`);
});

client.on('message', msg => {
  if (msg.content === 'ping') {
    msg.reply('pong');
  }

  checkAbuse(msg);

});

function checkAbuse(msg){

}

client.login('token');

Et j’y ai ajouté deux choses:

  • Une fonction checkAbuse prenant comme paramètre un message et qui pour l’instant ne fait rien
  • L’appel de la fonction checkAbuse dans l’écoute de l’événement message.

Par conséquent, à chaque message posté sur votre Discord, le bot appellera la fonction checkAbuse avec en paramètre le message posté.

Nous allons donc dans un premier temps reconnaître les injures potentiellement présentent dans le message.
Puis si au moins une injure est présente, nous supprimerons le message.

Détection des injures

Tout d’abord, nous allons faire une liste d’injure que nous stockerons dans une variable.
Vous pouvez très bien stocker cette liste dans un fichier afin de pouvoir en rajouter à l’avenir plus facilement.
Vous pouvez aussi imaginer créer une commande avec votre bot pour ajouter des injures à la liste directement depuis Discord.

Créons donc une constante nommé « abuse » dans laquelle vous y renseignerais toutes vos injures en tableau:

function checkAbuse(msg){
     const abuse = ['injure1', 'injure2', 'injure3'];

}

Puis nous allons itérer sur ce tableau pour vérifier que notre message en contient ou non:

function checkAbuse(msg){
     const abuse = ['injure1', 'injure2', 'injure3'];
     
     // on récupère le contenu de l'objet message
     const messageContent = msg.content;
     const isAbusive = abuse.some( (element) => messageContent.indexOf(element) !== -1);
}

Analysons cette nouvelle ligne.

Tout d’abord, j’utilise la fonction some pour itérer sur mon tableau « abuse ».
Cette fonction va faire une boucle sur tous les éléments du tableau et appeler une fonction en paramètre. Cette fonction est un test et doit soit renvoyer true ou false.
Some renvoi finalement vrai uniquement si un seul élément du tableau rempli le test, sinon faux.

Ici, on teste donc si msg contient la chaine de caractère correspondante à l’injure placée dans la variable « element ».
La fonction indexOf renvoi la position de la chaîne de caractère si elle est présente, sinon -1.

Ainsi, je teste si son retour est !== -1, alors l’injure est contenu dans le message et on renvoi donc true.

Important: notre variable msg représente en réalité l’objet message de l’api discordjs. Voici sa documentation.

Modérer le message injurieux

Maintenant que nous savons si le message contient une injure ou non, nous pouvez désormais choisir de le supprimer ou non.

Il suffit d’appeler la méthode delete() sur l’objet message dans le cas où isAbusive est vrai:

function checkAbuse(msg){
     const abuse = ['injure1', 'injure2', 'injure3'];
     
     // on récupère le contenu de l'objet message
     const messageContent = msg.content;
     cont isAbusive = abuse.some( (element) => messageContent.indexOf(element) !== -1);

     if(isAbuseive){
          msg.delete();
     }
}

Nous pouvons aussi imaginer simplement remplacer l’injure ou bien tout le message par un avertissement:

function checkAbuse(msg){
     const abuse = ['injure1', 'injure2', 'injure3'];
     
     // on récupère le contenu de l'objet message
     const messageContent = msg.content;
     cont isAbusive = abuse.some( (element) => messageContent.indexOf(element) !== -1);

     if(isAbusive){
          msg.edit('Ce message a été supprimé car il contenait des injures !');
     }
}

Conclusion

Nous avons donc vu comment modérer des propos injurieux dans vos messages discord.

N’hésitez pas à améliorer ce tutoriel car ceci est seulement une base et pourrais être bien plus complète !


Articles précédents

Modérer les injures avec votre bot Discord

4 commentaires sur “Modérer les injures avec votre bot Discord

    1. Bonjour !
      Merci pour votre retour, effectivement il y a une erreur dans mon article.
      J’ai fait une faute de frappe et j’ai marqué isAbusieve dans la fonction checkAbuse au niveau de la dernière condition :/
      Je l’ai corrigé dans l’article, mais voici le bout de code que j’ai modifié:

      function checkAbuse(msg){
      const abuse = [‘injure1’, ‘injure2’, ‘injure3’];

      // on récupère le contenu de l’objet message
      const messageContent = msg.content;
      cont isAbusive = abuse.some( (element) => messageContent.indexOf(element) !== -1);

      if(isAbusive){
      msg.edit(‘Ce message a été supprimé car il contenait des injures !’);
      }
      }

      Prévenez moi si cela ne fonctionne toujours pas ! 🙂

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut