Bonjour,
Voila je rencontre un petit problème avec mon code, il fonctionne mais une partie non... :(
const Discord = require("discord.js");
module.exports.run = async (bot, message, args) => {
if(message.content.startsWith("!clear")) {
message.delete();
if(!message.member.hasPermission("MANAGE_MESSAGES")) return message.channel.send(`Tu n'as pas la permission...`);
if(!args[0]) return message.channel.send("Tu dois spécifier un nombre de messages à supprimer !");
message.channel.bulkDelete(args[0]).then(() => {
message.channel.send(`À ton service! (${args[0]}) `).then(msg => msg.delete(5000));
})
}}
module.exports.help = {
name: "clear"
}
Lorsque le message du bot apparait (pour me confirmer qu'il a bien supprimé les messages)
je voudrais que ce message disparaisse au bout d'un certain temps ! Comme 5sec
C'est pourquoi j'ai mis à droite du message
.then(msg => msg.delete(5000));
Pourtant, ça ne fonctionne pas et lorsque que je tape !clear et que je regarde la console, ça m'affiche ceci :
(node:4554) UnhandledPromiseRejectionWarning: TypeError [INVALID_TYPE]: Supplied options is not an object.
at Message.delete (/Users/william/Desktop/kirisakibot/node_modules/discord.js/src/structures/Message.js:501:44)
at /Users/william/Desktop/kirisakibot/Commandes/clear.js:9:96
at processTicksAndRejections (internal/process/task_queues.js:97:5)
warning.js:32
(node:4554) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict
(see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
warning.js:32
Voilà, j'espère avoir été claire ^^I,
Si quelqu'un pourrait m'aider se serait super, merci !
Attention tu ne peux pas supprimer des messages trop vieux, l'api te renvoie surement une erreur
TU as surtout une erreur dans ton code :
return message.channel.send(`Tu n'as pas la permission...`);
l'apostrophe du n'as ferme ton texte ...
l'apostrophe suivante transforme la suite de ton code en "texte" du coup.
Remplaces :
return message.channel.send(`Tu n'as pas la permission...`);
par :
return message.channel.send("Tu n'as pas la permission...");
Bergauen ce que tu dis ne change absolument rien tu peux le constater toi même juste avec la coloration syntaxique.
William, je te conseille plus d'utiliser await à la place des then c'est plus lisible et tu peux utiliser un simple try catch pour choper tes erreurs.
try {
await message.channel.bulkDelete(args[0]);
message.channel.send(`À ton service! (${args[0]}) `).then((msg) => msg.delete(5000));
} catch (error) {
message.channel.send("Je ne peux pas supprimer plus de 100 messages à la fois et de plus de 14 jours.");
}
Quand à ton timeout
pour suppr ton mess au bout de 5s c'est normal que tu aie un erreur lors de sa suppression si celui-ci à déjà été suppr par le bulkDelete()
Après n'hésite pas à faire des console.log
de tes erreurs pour mieux les comprendres.