diff --git a/src/main/java/net/pingex/dcf/commands/InternalCommands.java b/src/main/java/net/pingex/dcf/commands/InternalCommands.java index 9e5f363..944bd06 100644 --- a/src/main/java/net/pingex/dcf/commands/InternalCommands.java +++ b/src/main/java/net/pingex/dcf/commands/InternalCommands.java @@ -2,11 +2,12 @@ package net.pingex.dcf.commands; import net.pingex.dcf.commands.options.ICommandOption; import net.pingex.dcf.commands.options.ScopeOption; +import net.pingex.dcf.commands.permissions.DefaultPermissionOption; import net.pingex.dcf.core.Configuration; import net.pingex.dcf.util.ArgumentParser; import net.pingex.dcf.util.DiscordInteractionsUtil; import org.apache.commons.lang3.StringUtils; -import sx.blah.discord.handle.impl.events.MessageReceivedEvent; +import sx.blah.discord.handle.obj.IRole; import java.util.*; /** @@ -17,7 +18,7 @@ public class InternalCommands implements IWithCommands @Override public Set getCommands() { - return new HashSet<>(Arrays.asList(ListCommand.INSTANCE, UsageCommand.INSTANCE)); + return new HashSet<>(Arrays.asList(ListCommand.INSTANCE, UsageCommand.INSTANCE, dumpRoles)); } /** @@ -154,4 +155,31 @@ public class InternalCommands implements IWithCommands DiscordInteractionsUtil.sendMessage(context.getChannel(), output.toString()); } } + + private static final Command dumpRoles = Command.builder("internal:dumpRoles") + .aliases("dumpRoles") + .description("Dump all Roles ID for the current Guild.") + .options(new HashSet<>(Arrays.asList( + new DefaultPermissionOption(DefaultPermissionOption.Value.ANY_OWNER), + new ScopeOption(ScopeOption.CommandScope.GUILD_CHAT)))) + .build(InternalCommands::dumpRolesImpl); + + private static void dumpRolesImpl(Context context) + { + if(context.getGuild().getRoles().size() == 0) + { + DiscordInteractionsUtil.sendMessage(context.getChannel(), "This guild has no role defined."); + return; + } + + StringBuilder sb = new StringBuilder("**Roles ID** for ").append(context.getGuild().getName()).append("\n") + .append("```\n"); + + int longestName = context.getGuild().getRoles().stream().max(Comparator.comparingInt(i -> i.getName().length())).get().getName().length(); + for(IRole i : context.getGuild().getRoles()) + sb.append("* ").append(StringUtils.rightPad(i.getName(), longestName)).append(" - ").append(i.getID()).append("\n"); + + sb.append("```"); + DiscordInteractionsUtil.sendMessage(context.getChannel(), sb.toString()); + } }