これは私の現在のコードです。クレジットは@アンドレ・ディオンの助けになります。Discord.js //メッセージをフィルタリングして起動し、bulkDeleteのDiscordAPIErrorを回避します
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);
});
}
ユーザーが「!clearMessages」と入力すると、このコードが実行され、ボットからのメッセージのみが削除されます。 !/./>で始まるユーザーからのメッセージも削除する機能を追加したいと思います(これらのメッセージはボットだけでなくユーザーからのものかもしれません)ので、const botMessagesでこの行を編集しようとしました:const botMessages = messages.filter(msg => msg.author.bot && msg.content.startsWith("!" || "." || ">"));
うまくいかなかった。私が間違っているところを指摘してください。どうすればこの問題を解決できますか?
もう1つのボットメッセージがある場合、ボットはメッセージを削除せず、削除するメッセージが少なくとも2-100個必要であるというDiscordAPIErrorが表示されます。これを回避する方法はありますか?
ありがとうございました。
エラーをバイパスする方法は、2つのメッセージを一緒に削除することです。したがって、ユーザーが「.kick @ユーザー」と入力すると、ボットは「キックされたユーザー」と言います。 "!clearMessages"と打ち込んだら、ボットbulkはで始まるメッセージを削除します。 ( ".kick @ User")、ボットから "キックされたユーザー"というメッセージも表示されます。これは、今では2つのメッセージを一括消去して1ではないので動作しますか? –