From f2dc70569dff497b039d481d7d6797f8754a633b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beatrice=20Dellac=C3=A0?= Date: Sun, 20 Nov 2022 03:41:51 +0100 Subject: [PATCH] Implement basic clear-chat slash command --- .../listeners/SlashCommandListener.java | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/src/main/java/wtf/beatrice/hidekobot/listeners/SlashCommandListener.java b/src/main/java/wtf/beatrice/hidekobot/listeners/SlashCommandListener.java index c055133..beecaa9 100644 --- a/src/main/java/wtf/beatrice/hidekobot/listeners/SlashCommandListener.java +++ b/src/main/java/wtf/beatrice/hidekobot/listeners/SlashCommandListener.java @@ -1,10 +1,17 @@ package wtf.beatrice.hidekobot.listeners; +import net.dv8tion.jda.api.entities.Message; +import net.dv8tion.jda.api.entities.MessageChannel; +import net.dv8tion.jda.api.entities.MessageHistory; +import net.dv8tion.jda.api.entities.TextChannel; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; import org.jetbrains.annotations.NotNull; import wtf.beatrice.hidekobot.utils.RandomUtil; +import java.util.ArrayList; +import java.util.List; + public class SlashCommandListener extends ListenerAdapter { @@ -14,7 +21,9 @@ public class SlashCommandListener extends ListenerAdapter if (event.getName().equals("ping")) { event.reply("Pong!").queue(); - } else if (event.getName().equals("coinflip")) + } + + else if (event.getName().equals("coinflip")) { int rand = RandomUtil.getRandomNumber(0, 1); String msg; @@ -29,5 +38,34 @@ public class SlashCommandListener extends ListenerAdapter event.reply(msg).queue(); } + + else if (event.getName().equals("clear")) + { + MessageChannel channel = event.getChannel(); + + if(!(channel instanceof TextChannel)) + { + event.reply("Sorry! I can't delete messages here.").queue(); + return; + } + + int deleteCount = event.getOption("amount").getAsInt(); + if(deleteCount < 2 || deleteCount > 98) + { + event.reply("Sorry! I can't delete that amount of messages!").queue(); + return; + } + + event.reply("Clearing...").queue(); + + MessageHistory.MessageRetrieveAction action = channel.getHistoryBefore(event.getInteraction().getIdLong(), deleteCount); + List messagesUnmodifiable = action.complete().getRetrievedHistory(); + List messages = new ArrayList<>(messagesUnmodifiable); + + //more than 2 messages, less than 100 for this method + ((TextChannel) channel).deleteMessages(messages).queue(); + + } + } }