2017-12-23 71 views
0

私は、ボットを作成して、そのボットの以前のボットメッセージをフェッチしてから削除します。私は!clearMessagesが入力されると、チャネル内のすべてのメッセージを削除し、現在、このコードを持っている:ボットのメッセージをボットから取得するDiscord.js

if (message.channel.type == 'text') { 
    message.channel.fetchMessages().then(messages => { 
     message.channel.bulkDelete(messages); 
     messagesDeleted = messages.array().length; // number of messages deleted 

     // Logging the number of messages deleted on both the channel and console. 
     message.channel.send("Deletion of messages successful. Total messages deleted: "+messagesDeleted); 
     console.log('Deletion of messages successful. Total messages deleted: '+messagesDeleted) 
    }).catch(err => { 
     console.log('Error while doing Bulk Delete'); 
     console.log(err); 
    }); 
} 

私はそのチャンネル内のすべてのボットメッセージからメッセージを取得した後、それらのメッセージを削除するボットをしたいと思います。

どうすればよいですか?

答えて

1

Messageは、を表すauthor propertyを有する。各Userには、ユーザーがボットかどうかを示すbot propertyがあります。その情報を使用して

、我々はmessages.filter(msg => msg.author.bot)を持つボットメッセージではないメッセージフィルタで除外することができます

if (message.channel.type == 'text') { 
    message.channel.fetchMessages().then(messages => { 
     const botMessages = messages.filter(msg => msg.author.bot); 
     message.channel.bulkDelete(botMessages); 
     messagesDeleted = botMessages.array().length; // number of messages deleted 

     // Logging the number of messages deleted on both the channel and console. 
     message.channel.send("Deletion of messages successful. Total messages deleted: " + messagesDeleted); 
     console.log('Deletion of messages successful. Total messages deleted: ' + messagesDeleted) 
    }).catch(err => { 
     console.log('Error while doing Bulk Delete'); 
     console.log(err); 
    }); 
} 
+0

を非常にアンドレをありがとうございます!また、簡単な質問です。 !/./>で始まるメッセージも削除したいと思います(これらのメッセージはボットだけでなくユーザからのものかもしれません)ので、const botMessagesを使って行を編集しようとしました: 'const botMessages = messages.filter(msg => msg.author.bot && msg.content.startsWith( "!" || "。" || ">")); 'しかしそれはうまくいかなかった。私が間違っているところを指摘してください。どうすればこの問題を解決できますか?どうもありがとう。 –

+0

私が気付いたもう一つの問題は、ボットメッセージが1つしかない場合、ボットはメッセージを削除せず、少なくとも2-100のメッセージを削除する必要があることを示すDiscordAPIErrorが発生するということです。これを回避する方法はありますか? –

+0

私はこれについて新しい質問を開きます。 –