Mon bot discord bug ?

Résolu/Fermé
Bilou94 Messages postés 46 Date d'inscription mercredi 21 février 2018 Statut Membre Dernière intervention 14 mars 2020 - Modifié le 10 mars 2020 à 00:46
 Lolo - 23 juil. 2022 à 01:02
Hey !

Donc voilà j'ai un petit soucis, j'ai récemment développer un bot discord via glitch, et tout à l'air de marcher correctement.
En fait, je sais pas si ça vient de mon bot ou de discord, mais quand je fais co mon bot et que je tape une commande, le bot me répond pas à une seule reprise mais à plusieurs, et sans arrêt. C'est très étrange, c'est la première fois que ça m'arrive et je sais pas du tout d'où cela cause problème. ??

Petit aperçu du soucis :


Je vous balance le code du bot également ^^ :

const Discord = require("discord.js");
const client = new Discord.Client();
var prefix = "-";
client.login("privé");

client.on("message", message => {
if (message.content.startsWith(prefix + "reload")) {
message.channel
.send("***Chargement en cours...***")
.then(msg => {
setTimeout(function() {}, 2000);
})
.then(msg => client.destroy())
.then(() => client.login);
}

client.on("gulientmberAdd", user => {
let joinEmbed = new Discord.RichEmbed()
.setColor("RANDOM")
.setAuthor(user.user.username, user.user.displayAvatarURL)
.setDescription(
":grin: Bienvenue " + user + " sur le serveur " + user.guild.name + " !"
)
.setFooter("Join")
.setTimestamp();
user.guild.channels.get("680517062145212422").send(joinEmbed);
});

client.on("guildMemberRemove", user => {
let leaveEmbed = new Discord.RichEmbed()
.setColor("RANDOM")
.setAuthor(user.user.username, user.user.displayAvatarURL)
.setDescription(
":cry: Sniff... " +
user +
" a quitté le serveur " +
user.guild.name +
" !"
)
.setFooter("Leave")
.setTimestamp();
user.guild.channels.get("680517062145212422").send(leaveEmbed);
});

client.on("message", message => {
if (message.content.startsWith(prefix + 'slt'));
if (!message.guild) return
message.channel.send("Bonjour " + message.author + " :slight_smile: !");

if (message.content.startsWith(prefix + "userinfo")) {
let member = message.mentions.users.first()
? message.mentions.users.first()
: message.author;
if (!member) return console.log("Veuillez revoir votre variable 'member'.");
let embed = new Discord.RichEmbed()
.setColor("RANDOM")
.setAuthor(message.author.username, message.author.displayAvatarURL)
.setThumbnail(message.author.displayAvatarURL)
.addField("Username", message.author.username)
.addField("Tag", `**#${message.author.discriminator}**`)
.addField("ID", message.author.id)
.addField("Compte crée le", message.author.createdAt)
.setFooter("UserInfo")
.setTimestamp();
message.channel.send(embed);
}

if (message.content.startsWith(prefix + "botinfo")) {
let embed = new Discord.RichEmbed()
.setColor("RANDOM")
.setAuthor(client.user.username, client.user.displayAvatarURL)
.setThumbnail(client.user.displayAvatarURL)
.addField("Username", client.user.username)
.addField("Tag", `**#${client.user.discriminator}**`)
.addField("ID", client.user.id)
.addField("Bot crée le", client.user.createdAt)
.addField("Nombre de serveurs", client.guilds.size)
.setFooter("BotInfo")
.setTimestamp();
message.channel.send(embed);
}

if (message.content.startsWith(prefix + "serverinfo")) {
let embed = new Discord.RichEmbed()
.setColor("RANDOM")
.setAuthor(message.guild.name, message.guild.displayAvatarURL)
.setThumbnail(message.guild.displayAvatarURL)
.addField("Nom", message.guild.name)
.addField("ID", message.guild.id)
.addField("Serveur crée le", message.guild.createdAt)
.addField("Nombre d'utilisateurs", message.guild.memberCount)
.addField("Owner", message.guild.owner)
.setFooter("ServerInfo")
.setTimestamp();
message.channel.send(embed);
}

if (message.content.startsWith(prefix + "say")) {
var text = message.content
.split(" ")
.slice(1)
.join(" ");
if (!text) return message.reply("Usage: Bonjour");
message.channel.send(text);
message.delete();
}

if (message.content.startsWith(prefix + "ping")) {
message.channel.send("**Pong !**");
}

if (message.content.startsWith(prefix + "help")) {
let embed = new Discord.RichEmbed()
.setColor("RANDOM")
.setTitle("***__Voici toutes les commandes du serveur. __***")
.addField("**-say**", "Répète le message envoyé")
.addField("**-userinfo**", "Affiche les détails d'un utilisateur")
.addField("**-botinfo**", "Affiche les détails du bot")
.addField("**-serverinfo**", "Affiche les détails du serveur")
.addField("**-slt**", "Vous renvoie Bonjour")
.addField("**-ping**", "Vous renvoie Pong")
.addField("**-clear/purge**", "Supprime des messages")
.setDescription("*D'autres commandes seront ajoutées prochainement.*")
.setFooter("Help")
.setTimestamp();
message.channel.send(embed);
}
})});


Voilà si vous pouviez m'aider ça m'aiderait beaucoup, merci ! :D
A voir également:

2 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
10 mars 2020 à 10:36
Bonjour,

Dans ton code, là :
if (message.content.startsWith(prefix + 'slt'));
if (!message.guild) return
message.channel.send("Bonjour " + message.author + " :slight_smile: !");

C'est un peu fait à l'envers...
Le « ; » après le if doit être enlevé ; De plus, comme il n'y a pas d'accolades, le message.channel.send est exécuté indépendamment du if. Donc à chaque message il répond, et du coup ensuite, se répond à lui-même.
if (!message.guild)
    return;
if (message.content.startsWith(prefix + 'slt'))
    message.channel.send("Bonjour " + message.author + " :slight_smile: !");

Déjà ça, ça ira mieux.
Tu peux aussi empêcher dès le début qu'il se réponde à lui-même :
if (!message.guild)
    return;
if (client.user.username == message.author)
    return;
if (message.content.startsWith(prefix + 'slt'))
    message.channel.send("Bonjour " + message.author + " :slight_smile: !");

(Je crois que ça peut se faire comme ça. J'ai jamais développé pour Discord, mais j'ai eu l'impression en lisant ton code que client.user.username était le nom de ton bot)

Xavier
5
Bilou94 Messages postés 46 Date d'inscription mercredi 21 février 2018 Statut Membre Dernière intervention 14 mars 2020
12 mars 2020 à 07:36
Merci beaucoup !!!

Le problème est résolu ^^
0

Couxou j'ai la même chose et je ne comprend pas comment faire sertaine photo de mais bot ne s'affiche plus? 

0
WebReveuse Messages postés 15 Date d'inscription vendredi 31 mai 2019 Statut Membre Dernière intervention 1 juin 2020
24 mai 2020 à 04:38
Déjà y a un problème tu as deux fois
client.on("message", message => {})
dans ton code.
Commence par tout rassembler ensemble.

Et puis pour ce soucis c'est normal qu'il te réponde à l'infini, car ton bot exécute les commandes relatives aux messages DÈS qu'il détecte un message dans le serveur.

Autrement dit quand il va répondre à ta commande il va détecter son propre message et donc se répondre, et ainsi de suite jusqu'à ce que ton processeur fume...

Donc ajoute une condition au tout début (juste après le
client.on("message", message => {
) pour empêcher que ton bot ou un autre bot fasse ce genre de boucle.

La condition que j'utilise est celle-ci :
if(!msg.content.toLowerCase().startsWith(client.config.prefix) || msg.author.bot) return;


La partie
!msg.content.toLowerCase().startsWith(client.config.prefix)
permet de vérifier que le message ne contient pas le préfixe de ta commande et
msg.author.bot
permet de vérifier si l'auteur du message est bien un bot.

Quand l'une de ces 2 conditions est validée on quitte la fonction et le message n'est pas pris en compte par le bot.

Le problème devrait être résolu.
0