chatbot qui se répète qui se répète qui se répète...

a marqué ce sujet comme résolu.

Bonjour à tous !

J’ai commencé le codage de mon tout premier bot pour discord, son but sera d’interagir dans une discussion.

le Code :

const Discord = require("discord.js");

const fs = require(’fs’);

const bot = new Discord.Client();

bot.on(’ready’, () => {

bot.user.setActivity("harceler les joueurs");      

console.log("Je suis connecté !"); 

}) bot.on(’message’, message =>{

if (message.author.bot) return;
user = message.author;

let member = message.guild.member(message.author); 

let Agree = message.guild.roles.cache.find(role => role.name === 'TEST');

if(message.content == "Salut"){

    message.channel.send(`Salut ${user}, tu vas bien?`); 

        if (message.author.bot) return;

        if (message.content == "Comme un lundi"){

            message.channel.send(`MDR, toujours aussi décalé le ${user}`);

        }    
    })
}

});

Mon soucis est que : si l’user répète "Comme un lundi", le bot redonne la réponse, alors que j’attend à ce que le bot passe à autre chose après la première réponse "Toujours aussi décallé) si l’user recommence à "Salut", le bot repondra à "comme un lundi" deux fois "toujours aussi décalé", et le nombre augmente ainsi de suite

Une idée pour dépatouiller tout ca ?

+0 -0

Quelque chose attire mon attention. Si quelqu’un dit « Salut », tu attaches un nouvelle fonction sur l’événement (bot.on) pour répondre. Mais si on dit « salut » à nouveau, ce même handler est attaché par dessus celui qui est déjà existant. Du coup tu as deux fois le message. Ça ne serait pas là la source de tes ennuis ?

Il faut attacher le handler à l’événement une seule fois pour toutes.

Message aux admin, ce message n’est pas un spam, merci de ne pas le retirer sous ce prétexte !

Euh, pourquoi tant de méfiance ? :euh:

+1 -0

bonjour sgble, et merci de ta réponse rapide.

Alors pour le "Message aux admin, ce message n’est pas un spam, merci de ne pas le retirer sous ce prétexte !", simple erreur de copier coller d’un autre forum qui rejetai mon post car estimé comme spam… J’ai abandonné chez eux, et j’ai oublié de corriger ici, c’est chose faite, avec mes excuses.

Pour ce qui est de ta réponse à proprement parler, je ne suis pas sûr de comprendre (je suis un gros noob qui se soigne).

mon premier bot.on(’message' (handler ?) pour que le bot puisse entendre un premier message, attendu "salut" (condition 1). j’ai ensuite mis un deuxième bot.on(’message' pour que le bot ecoute le second message, attendu "comme un lundi", si la condition 1 à été rempli uniquement.

le premier bot.on(’message' suffirait il à ce que le bot écoute le premier, second, troisème, etc messages ?

J’ai fais quelques tests avec le code actuel : -je peux répéter autant de fois que je veux "Salut", le bot répond comme il faut une seul fois par "Salut user". Mais si après cela je répond une seule fois "Comme un lundi", le bot me colle plusieurs fois la bonne réponse. -Je dis salut une fois, le bot répond, je repond autant de fois que je veux "Commme un lundi", le bot répond une fois à chaque fois, alors que j’attend qu’il ne réponde que au premier "comme un lundi", puisque les suivant n’ont pas eu l’étape du "Salut"

Voici ce que j’attend si cela peut aider :

1 User : Salut / Bot : Salut user, tu vas bien ? / User: Comme un Lundi / Bot : toujours aussi décalé

2 User : Salut / Bot : Salut user, tu vas bien ? / User: tagadoz / (pas de réaction bot, le bot doit revenir à l’attente de "Salut")

3 User : Comme un lundi / (pas de réaction bot, il reste en attente de "Salut")

+0 -0

Pourquoi ne pas utiliser une seule fois bon.on('message') et ensuite y ajouter les conditions à l’intérieur ?

Sinon, pourrais-tu éditer le bloc de code pour faciliter la lecture dans ton premier message ?

Helmasaur

message édité pour faciliter la lecture, mais pas évident, le site ici à tendance à supprimer les retour chariot et à tasser le texte du coup.

pour ce qui est de l’utilisation des bot.on(message, j’ai expliquer ceci : "mon premier bot.on(’message' (handler ?) pour que le bot puisse entendre un premier message, attendu "salut" (condition 1). j’ai ensuite mis un deuxième bot.on(’message' pour que le bot ecoute le second message, attendu "comme un lundi", si la condition 1 à été rempli uniquement.

le premier bot.on(’message' suffirait il à ce que le bot écoute le premier, second, troisième, etc messages ?"

j’ai toutefois essayé avec un seul bot.on(’message’,et le problème est resté pls ou moins le même : Le bot repond bien à "salut" mais devient incapable de répondre "toujours aussi décalé" au message suivant "comme un lundi". Pour rappelle, je ne souhaite pas que le bot réponde à la deuxième reponse si la première étape "Salut" n’a pas été effectué juste avant

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte