Fixed bulk deleting messages

This commit is contained in:
Anthony committed 2018-02-11 20:38:45 -05:00
1 parent a24a95382f
commit 02ee971db2
1 file changed
+31 -22
@@ -1,9 +1,11 @@
package netneutrality.utils; package netneutrality.utils;
import java.time.OffsetDateTime;
import java.util.List; import java.util.List;
import net.dv8tion.jda.core.entities.Message; import net.dv8tion.jda.core.entities.Message;
import net.dv8tion.jda.core.entities.TextChannel; import net.dv8tion.jda.core.entities.TextChannel;
import netneutrality.handler.LogHandler;
public class ChannelFunction { public class ChannelFunction {
@@ -11,32 +13,39 @@ public class ChannelFunction {
if (toDelete >= 2500) return; if (toDelete >= 2500) return;
Thread deleteMessage = new Thread(new Runnable() { Thread deleteMessage = new Thread(() -> {
int toDeleteFinal = toDelete + 1;
int iteration = toDeleteFinal / 100;
for (int i = 0; i < iteration; i++) {
List<Message> messages = channel.getHistory().retrievePast(100).complete();
deleteFromList(messages, channel);
toDeleteFinal -= 100;
@Override }
public void run() {
int toDeleteFinal = toDelete + 1;
int iteration = toDeleteFinal / 100;
for (int i = 0; i < iteration; i++) {
List<Message> messages = channel.getHistory().retrievePast(100).complete();
channel.deleteMessages(messages).complete();
toDeleteFinal -= 100;
System.out.println("Deleted 100 message");
}
if (toDeleteFinal > 0) { if (toDeleteFinal > 0) {
List<Message> messages = channel.getHistory().retrievePast(toDeleteFinal).complete(); List<Message> messages = channel.getHistory().retrievePast(toDeleteFinal).complete();
channel.deleteMessages(messages).complete(); deleteFromList(messages, channel);
System.out.println("Deleted " + toDeleteFinal + " messages");
} else {
System.out.println("No more message");
}
} }
}); });
deleteMessage.start(); deleteMessage.start();
} }
}
private static void deleteFromList(List<Message> messages, TextChannel channel) {
try {
channel.deleteMessages(messages).complete();
System.out.println("Deleted " + messages.size() + " messages");
} catch (IllegalArgumentException e) {
messages.forEach(m -> {
if (!m.getCreationTime().isBefore(OffsetDateTime.now().minusWeeks(Long.parseLong("2")))) {
m.delete().queue();
}
});
}
}
}