Purge Command

About

This command allows you to permanently erase up to 100 messages at a time.

Source Code

package bot.commands.moderation;

import bot.commands.CommandContext;
import bot.commands.CommandInterface;
import bot.driver.Monitor;
import bot.handlers.event.ModerationUtility;

import java.util.List;

import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.api.entities.Message;

public class Purge implements CommandInterface {

    @Override
    public void handle(CommandContext c) {
        if(c.getMember().hasPermission(Permission.MESSAGE_MANAGE)) {

            if(c.getCommandParameters().size() < 1) {
                EmbedBuilder usage = new EmbedBuilder();
                usage.setColor(0x05055e);
                usage.setTitle("Message Deletion Usage");
                usage.setDescription("Usage: " + Monitor.prefix + "purge [# of messages]");
                usage.setFooter("The Monitor ™ | Powered by Java", Monitor.myBot.getSelfUser().getEffectiveAvatarUrl());
                c.getChannel().sendTyping().queue();
                c.getChannel().sendMessage(usage.build()).queue();
                usage.clear();
            }
            else {
                
                try {
                    int messageCount = Integer.parseInt(c.getCommandParameters().get(0));
                    List<Message> messages = c.getChannel().getHistory().retrievePast(messageCount).complete();
                    c.getChannel().purgeMessages(messages);
                    /*
                     * Notifies user if messages have been successfully deleted.
                     */
                    EmbedBuilder purgeSuccess = new EmbedBuilder();
                    purgeSuccess.setColor(0x05055e);
                    purgeSuccess.setTitle("✅ Success! ✅");
                    purgeSuccess.setDescription("You have successfully deleted " + messageCount + " messages.");
                    purgeSuccess.setFooter("The Monitor ™ | Powered by Java", Monitor.myBot.getSelfUser().getEffectiveAvatarUrl());
                    c.getChannel().sendTyping().queue();
                    c.getChannel().sendMessage(purgeSuccess.build()).queue();
                    purgeSuccess.clear();
                }
                catch(NumberFormatException n) {
                    EmbedBuilder purgeError = new EmbedBuilder();
                    purgeError.setColor(0x05055e);
                    purgeError.setTitle("❌ Invalid Argument ❌");
                    purgeError.setDescription("Enter a number.");
                    purgeError.setFooter("The Monitor ™ | Powered by Java", Monitor.myBot.getSelfUser().getEffectiveAvatarUrl());
                    c.getChannel().sendTyping().queue();
                    c.getChannel().sendMessage(purgeError.build()).queue();
                    purgeError.clear();
                }
                catch (IllegalArgumentException e) {

                    if (e.toString().startsWith("java.lang.IllegalArgumentException: Message retrieval")) {
                        /*
                         * Messages >100 API limit error.
                         */
                        EmbedBuilder purgeError = new EmbedBuilder();
                        purgeError.setColor(0x05055e);
                        purgeError.setTitle("❌ Selected Messages Are Out of Range ❌");
                        purgeError.setDescription("Only 1-100 messages can be deleted at a time.");
                        purgeError.setFooter("The Monitor ™ | Powered by Java", Monitor.myBot.getSelfUser().getEffectiveAvatarUrl());
                        c.getChannel().sendTyping().queue();
                        c.getChannel().sendMessage(purgeError.build()).queue();
                        purgeError.clear();
                    }
                    else {
                        /*
                         * Messages are too old error.
                         */
                        EmbedBuilder purgeError = new EmbedBuilder();
                        purgeError.setColor(0x05055e);
                        purgeError.setTitle("❌ Selected Messages Are Older Than 2 Weeks ❌");
                        purgeError.setDescription("Messages older than 2 weeks cannot be deleted.");
                        purgeError.setFooter("The Monitor ™ | Powered by Java", Monitor.myBot.getSelfUser().getEffectiveAvatarUrl());
                        c.getChannel().sendTyping().queue();
                        c.getChannel().sendMessage(purgeError.build()).queue();
                        purgeError.clear();
                    }
                }
            }
        }
        else {
            ModerationUtility.accessDenied(c.getEvent());
        }
    }

    @Override
    public String getName() {
        return "purge";
    }
}

More From This Site