Mon bot discord bug ?
Résolu
Bilou94
Messages postés
52
Statut
Membre
-
Lolo -
Lolo -
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 ^^ :
Voilà si vous pouviez m'aider ça m'aiderait beaucoup, merci ! :D
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:
- Pourquoi mon discord bug
- Connexion sctr discord - Forum Discord
- Iptv bug - Forum Box et Streaming vidéo
- Discord ne se lance pas ✓ - Forum Discord
- Compte discord - Guide
- Bug chromecast - Guide
2 réponses
Bonjour,
Dans ton code, là :
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.
Déjà ça, ça ira mieux.
Tu peux aussi empêcher dès le début qu'il se réponde à lui-même :
(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
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
Déjà y a un problème tu as deux fois
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
La condition que j'utilise est celle-ci :
La partie
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.
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.botpermet 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.
Le problème est résolu ^^
Couxou j'ai la même chose et je ne comprend pas comment faire sertaine photo de mais bot ne s'affiche plus?