From 02ee971db2730639931666327f9c0cf08c38482c Mon Sep 17 00:00:00 2001 From: Anthony Date: Sun, 11 Feb 2018 20:38:45 -0500 Subject: [PATCH] Fixed bulk deleting messages --- .../netneutrality/utils/ChannelFunction.java | 53 +++++++++++-------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/src/main/java/netneutrality/utils/ChannelFunction.java b/src/main/java/netneutrality/utils/ChannelFunction.java index 3491596..316ac60 100644 --- a/src/main/java/netneutrality/utils/ChannelFunction.java +++ b/src/main/java/netneutrality/utils/ChannelFunction.java @@ -1,9 +1,11 @@ package netneutrality.utils; +import java.time.OffsetDateTime; import java.util.List; import net.dv8tion.jda.core.entities.Message; import net.dv8tion.jda.core.entities.TextChannel; +import netneutrality.handler.LogHandler; public class ChannelFunction { @@ -11,32 +13,39 @@ public class ChannelFunction { 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 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 messages = channel.getHistory().retrievePast(100).complete(); - channel.deleteMessages(messages).complete(); - toDeleteFinal -= 100; - - System.out.println("Deleted 100 message"); - } + } - if (toDeleteFinal > 0) { - List messages = channel.getHistory().retrievePast(toDeleteFinal).complete(); - channel.deleteMessages(messages).complete(); - System.out.println("Deleted " + toDeleteFinal + " messages"); - } else { - System.out.println("No more message"); - } + if (toDeleteFinal > 0) { + List messages = channel.getHistory().retrievePast(toDeleteFinal).complete(); + deleteFromList(messages, channel); - } - }); + } + }); deleteMessage.start(); } -} + + private static void deleteFromList(List 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(); + } + }); + + } + } +} \ No newline at end of file