From 380219fb5118ff45274fd0c7382e65b7fd1379f9 Mon Sep 17 00:00:00 2001 From: argraur Date: Wed, 6 May 2020 17:46:12 +0300 Subject: [PATCH] railgun: purge: Make it possible to delete all messages after specific message --- .../argraur/railgun/commands/admin/Purge.java | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/main/java/me/argraur/railgun/commands/admin/Purge.java b/src/main/java/me/argraur/railgun/commands/admin/Purge.java index ae218a8..8fa107f 100644 --- a/src/main/java/me/argraur/railgun/commands/admin/Purge.java +++ b/src/main/java/me/argraur/railgun/commands/admin/Purge.java @@ -16,15 +16,19 @@ package me.argraur.railgun.commands.admin; +import me.argraur.railgun.level.Level; + +import java.util.List; + import me.argraur.railgun.interfaces.Command; -import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.Message; public class Purge implements Command { private final String command = "purge"; private final String usage = command + " "; private final String description = "Removes n last messages."; + private final int level = Level.MESSAGE; @Override public String getCommand() { @@ -41,11 +45,26 @@ public String getDescription() { return description; } + /** + * Returns command's access level + * + * @return level + */ + @Override + public int getLevel() { + return level; + } + @Override public void call(Message message) { - if (message.getMember().hasPermission(Permission.MESSAGE_MANAGE)) { + try { int amount = Integer.parseInt(message.getContentRaw().split(" ")[1]); message.getChannel().purgeMessages(message.getChannel().getHistory().retrievePast(amount + 1).complete()); + } catch (NumberFormatException e) { + final String id = message.getContentRaw().split(" ")[1].split("/")[6]; + List history = message.getChannel().getHistoryAfter(id, 100).complete().getRetrievedHistory(); + message.getChannel().deleteMessageById(id).queue(); + message.getChannel().purgeMessages(history); } } } \ No newline at end of file