Fixed bulk deleting messages
This commit is contained in:
1 parent
a24a95382f
commit
02ee971db2
1 file changed
+31
-22
@@ -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<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) {
|
||||
List<Message> 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<Message> messages = channel.getHistory().retrievePast(toDeleteFinal).complete();
|
||||
deleteFromList(messages, channel);
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
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();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user