diff --git a/src/main/java/com/diamondfire/helpbot/bot/HelpBotInstance.java b/src/main/java/com/diamondfire/helpbot/bot/HelpBotInstance.java index 6a44cae5..e91da1ae 100644 --- a/src/main/java/com/diamondfire/helpbot/bot/HelpBotInstance.java +++ b/src/main/java/com/diamondfire/helpbot/bot/HelpBotInstance.java @@ -127,7 +127,8 @@ public static void initialize() throws LoginException { new EightBallCommand(), new OcrCommand(), new JoinsCommand(), - new TagCommand() + new TagCommand(), + new PurgeCommand() ); JDABuilder builder = JDABuilder.createDefault(config.getToken()) diff --git a/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/mod/PurgeCommand.java b/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/mod/PurgeCommand.java new file mode 100644 index 00000000..5519aecb --- /dev/null +++ b/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/mod/PurgeCommand.java @@ -0,0 +1,58 @@ +package com.diamondfire.helpbot.bot.command.impl.other.mod; + +import com.diamondfire.helpbot.bot.command.argument.ArgumentSet; +import com.diamondfire.helpbot.bot.command.argument.impl.types.*; +import com.diamondfire.helpbot.bot.command.help.*; +import com.diamondfire.helpbot.bot.command.impl.Command; +import com.diamondfire.helpbot.bot.command.permissions.Permission; +import com.diamondfire.helpbot.bot.command.reply.PresetBuilder; +import com.diamondfire.helpbot.bot.command.reply.feature.informative.*; +import com.diamondfire.helpbot.bot.events.CommandEvent; +import net.dv8tion.jda.api.entities.*; + +public class PurgeCommand extends Command { + + @Override public String getName() { return "purge"; } + + @Override + public HelpContext getHelpContext() { + return new HelpContext() + .description("Removes the most recent messages sent in a channel. Maximum 100 messages.") + .category(CommandCategory.OTHER) + .addArgument( + new HelpContextArgument() + .name("count") + ); + } + + @Override + protected ArgumentSet compileArguments() { + return new ArgumentSet() + .addArgument("count", + new IntegerArgument()); + } + + @Override + public Permission getPermission() { + return Permission.MODERATION; + } + + @Override + public void run(CommandEvent event) { + PresetBuilder builder = new PresetBuilder(); + + int messagesToRemove = event.getArgument("count"); + + if (messagesToRemove > 100 || messagesToRemove < 2) { + builder.withPreset( + new InformativeReply(InformativeReplyType.ERROR, "Message count not within 2 to 100.") + ); + event.reply(builder); + } else { + TextChannel channel = event.getChannel(); + channel.getHistory().retrievePast(messagesToRemove).queue((messages) -> { + channel.deleteMessages(messages).queue(); + }); + } + } +} diff --git a/src/main/java/com/diamondfire/helpbot/sys/message/acceptors/TagAcceptor.java b/src/main/java/com/diamondfire/helpbot/sys/message/acceptors/TagAcceptor.java index 09f886de..6733b7fc 100644 --- a/src/main/java/com/diamondfire/helpbot/sys/message/acceptors/TagAcceptor.java +++ b/src/main/java/com/diamondfire/helpbot/sys/message/acceptors/TagAcceptor.java @@ -17,7 +17,7 @@ public boolean accept(Message message) { try { // Get Tag and send response Tag tag = TagHandler.getTag(parsedText); - tag.sendResponse(message.getTextChannel()); + tag.sendResponse(message.getTextChannel(), message.getAuthor()); // Delete origin message message.delete().queue(); diff --git a/src/main/java/com/diamondfire/helpbot/sys/tag/Tag.java b/src/main/java/com/diamondfire/helpbot/sys/tag/Tag.java index 1bd17f95..7ad5ba67 100644 --- a/src/main/java/com/diamondfire/helpbot/sys/tag/Tag.java +++ b/src/main/java/com/diamondfire/helpbot/sys/tag/Tag.java @@ -71,14 +71,14 @@ public JsonObject asJson() { return json; } - public void sendResponse(TextChannel channel) { + public void sendResponse(TextChannel channel, User requester) { User user = channel.getJDA().retrieveUserById(getAuthorId()).complete(); EmbedBuilder embed = new EmbedBuilder() - .setTitle(getTitle()) + .setTitle(getTitle()+" (*"+user.getAsTag()+"*)") .setDescription(getResponse()+"\n\u200b") .setColor(0x969dba) - .setFooter("Written by "+user.getAsTag(), user.getAvatarUrl()); + .setFooter("Executed by "+requester.getAsTag(), user.getAvatarUrl()); if (!getImage().equals("")) embed.setImage(getImage()); channel.sendMessageEmbeds(embed.build()).queue();