2017-01-10 1 views
1

J'ai essayé d'utiliser bulkDelete pour faire mon bot supprimer son message mais je reçois cette erreur:Comment fonctionne bulkDelete? Discord.js

(node:5724) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Bad Request 
(node:5724) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. 

Et voici mon code:

const Discord = require('discord.js'); 
const bot = new Discord.Client(); 
const config = require("./config.json"); 

bot.on('ready',() =>{ 
    console.log('I am ready!'); 
}); 

//var cleanarr=[]; 

bot.on("message", message =>{ 
    if (message.author.bot) return; 
var cleanarr=[]; 
     let command = message.content.split(" ")[0]; 
command = command.slice(config.prefix.length); 

     let args = message.content.split(" ").slice(1); 
if (message.content == 'lol'){ 
    message.channel.sendMessage('LUL'); 
    cleanarr.unshift(`${message.channel.lastMessageID}`); 
    } 
if (command == "clean") { 
    message.channel.sendMessage('Cleaning...'); 
    message.channel.bulkDelete(cleanarr); 
    var cleanarr = []; 

Qu'est-ce que le bulkDelete besoin? Est-ce l'identifiant du message ou autre chose?

Je ne sais pas si je faisais ce droit (évidemment, je ne suis pas) depuis que je commencé à coder avec zéro connaissance de javascript ou quoi que ce soit lié.

Répondre

1

La majeure partie de la discorde supprimer le point final nécessite tableau de messages que vous souhaiteriez supprimés. Petite note ici à partir d'hier le point de terminaison de suppression en bloc ne supprimera pas les messages de plus de 2 semaines.

0

Voilà comment je suis arrivé le code bulkDelete pour travailler dans une commande test ~ destruct. Il crée 10 messages, comme un compte à rebours, puis supprime les messages par la suite. Remarque: Il supprime tous les messages envoyés par quiconque dans cette période de temps, mais vous pouvez toujours les supprimer manuellement s'il en reste.

client.on("message", (message) => { 
    if(message.content === "~destruct" && message.author.id === "200659103318540288") { 
    message.channel.send("This message will self destruct in 10s!"); 
    setTimeout(function(){ message.delete(1000); }, 10000); 
    setTimeout(function(){ message.channel.send("10"); }, 100); 
    setTimeout(function(){ message.channel.send("9"); }, 1000); 
    setTimeout(function(){ message.channel.send("8"); }, 2000); 
    setTimeout(function(){ message.channel.send("7"); }, 3000); 
    setTimeout(function(){ message.channel.send("6"); }, 4000); 
    setTimeout(function(){ message.channel.send("5"); }, 5000); 
    setTimeout(function(){ message.channel.send("4"); }, 6000); 
    setTimeout(function(){ message.channel.send("3"); }, 7000); 
    setTimeout(function(){ message.channel.send("2"); }, 8000); 
    setTimeout(function(){ message.channel.send("1"); }, 9000); 
    setTimeout(function(){ message.channel.send("0"); }, 10000); 
    setTimeout(function(){ message.channel.bulkDelete(11); }, 10000); 
    } 
    if(message.content === "This message will self destruct in 10s!") { 
    setTimeout(function(){ message.delete(1000); }, 10000); 
    } 
}); 

La deuxième partie trouve tout message non supprimé avec la chaîne exacte et la supprime. Mais notez également que cela supprimera le message de n'importe qui. Si vous voulez éviter cela, utilisez à la place:

if(message.content === "This message will self destruct in 10s!" && message.author.id === "bot-id-here") { 
    setTimeout(function(){ message.delete(1000); }, 10000); 
} 
0

La meilleure façon de supprimer x messages d'un canal est de fournir un nombre entier de 2 - 100 en tant que paramètres à la méthode <TextChannel>.bulkDelete.

Exemple:

message.channel.bulkDelete(100).then(() => { 
    message.channel.send("Deleted 100 messages.").then(msg => msg.delete(3000)); 
});