Refactored perms list by keyword

This commit is contained in:
Alex Gryczewski 2023-02-27 17:50:36 -05:00
parent bffce622fe
commit f721f7875e

View File

@ -12,13 +12,13 @@ import org.javacord.api.entity.user.User;
import org.javacord.api.util.logging.ExceptionLogger; import org.javacord.api.util.logging.ExceptionLogger;
import java.awt.*; import java.awt.*;
import java.util.Arrays; import java.util.*;
import java.util.List; import java.util.List;
public class PermissionCommand extends Command { public class PermissionCommand extends Command {
@Override public String name() { return "Permission"; } @Override public String name() { return "Permission"; }
@Override public String description() { return "Manages a user's static permissions"; } @Override public String description() { return "Manages a user's static permissions"; }
@Override public String usage() { return "permission <list|add|remove> <@usermention> <keyword>"; } @Override public String usage() { return "permission <list|add|remove> <@user-mention> <keyword>"; }
@Override public CommandCategory category() { return CommandCategory.DEVELOPER; } @Override public CommandCategory category() { return CommandCategory.DEVELOPER; }
@Override public CommandPermission permission() { return new CommandPermission(PermissionType.OWNER); } @Override public CommandPermission permission() { return new CommandPermission(PermissionType.OWNER); }
@Override public List<String> aliases() { return Arrays.asList("permission", "permissions", "perm", "perms"); } @Override public List<String> aliases() { return Arrays.asList("permission", "permissions", "perm", "perms"); }
@ -45,47 +45,73 @@ public class PermissionCommand extends Command {
if (!ctx.getMessage().getMentionedUsers().isEmpty()) { if (!ctx.getMessage().getMentionedUsers().isEmpty()) {
User mentionedUser = ctx.getMessage().getMentionedUsers().get(0); User mentionedUser = ctx.getMessage().getMentionedUsers().get(0);
StaticPermissionController.getByUser(mentionedUser.getIdAsString()).thenAcceptAsync(possiblePerms -> { StaticPermissionController
possiblePerms.ifPresentOrElse(perms -> { .getByUser(mentionedUser.getIdAsString())
EmbedBuilder embed = new EmbedBuilder() .thenAcceptAsync(possiblePerms -> possiblePerms.ifPresentOrElse(perms -> {
.setTitle(String.format("Permissions for %s", mentionedUser.getName())) EmbedBuilder embed = new EmbedBuilder()
.setFooter(String.format("User has %s total static permissions", perms.size())) .setTitle(String.format("Permissions for %s", mentionedUser.getName()))
.setColor(Color.GREEN); .setFooter(String.format("User has %s total static permissions", perms.size()))
.setColor(Color.GREEN);
perms.forEach(perm -> { perms.forEach(perm -> embed.addField(perm.getUserId(), perm.getPermission()));
embed.addField(perm.getUserId(), perm.getPermission());
});
ctx.reply(embed); ctx.reply(embed);
}, () -> { }, () -> {
EmbedBuilder embed = new EmbedBuilder() EmbedBuilder embed = new EmbedBuilder()
.setTitle("No Permissions Found") .setTitle("No Permissions Found")
.setDescription(String.format("User %s has no static permissions", mentionedUser.getName())); .setDescription(String.format("User %s has no static permissions", mentionedUser.getName()));
ctx.reply(embed); ctx.reply(embed);
}));
} else { // Fetch and display all user permissions
StaticPermissionController
.getAll()
.thenAcceptAsync(possiblePerms -> possiblePerms.ifPresentOrElse(perms -> {
List<EmbedBuilder> embeds = new ArrayList<>();
EmbedBuilder embed = new EmbedBuilder()
.setTitle("All static permissions")
.setFooter(String.format("Found %s total static permissions", perms.size()))
.setColor(Color.green);
embeds.add(embed);
List<String> permKeywords = new ArrayList<>();
perms.forEach(perm -> {
if (!permKeywords.contains(perm.getPermission())) {
permKeywords.add(perm.getPermission());
}
}); });
});
} else {
StaticPermissionController.getAll().thenAcceptAsync(possiblePerms -> {
possiblePerms.ifPresentOrElse(perms -> {
EmbedBuilder embed = new EmbedBuilder()
.setTitle("All static permissions")
.setFooter(String.format("Found %s total static permissions", perms.size()))
.setColor(Color.green);
perms.forEach(perm -> { permKeywords.forEach(keyword -> {
embed.addField(perm.getUserId(), perm.getPermission()); EmbedBuilder e = new EmbedBuilder().setTitle(keyword);
}); StringBuilder text = new StringBuilder().append("```md").append(System.lineSeparator());
ctx.reply(embed); StaticPermissionController.getByPermission(keyword).thenAcceptAsync(
}, () -> { (optSp) -> optSp.ifPresent(
EmbedBuilder embed = new EmbedBuilder() keywordPerms -> keywordPerms.forEach(
.setTitle("No Permissions Found") perm -> ctx.getApi().getUserById(perm.getUserId()).thenAcceptAsync(
.setDescription("No permissions have been added."); (discordUser) -> text.append(perm.getUserId())
.append(" - ")
ctx.reply(embed); .append(discordUser.getDiscriminatedName())
.append(System.lineSeparator())
).join()
)
)
).join();
text.append("```");
e.setDescription(text.toString());
embeds.add(e);
}); });
}); EmbedBuilder[] embedArray = embeds.toArray(new EmbedBuilder[0]);
ctx.reply(embedArray);
}, () -> {
EmbedBuilder embed = new EmbedBuilder()
.setTitle("No Permissions Found")
.setDescription("No permissions have been added.");
ctx.reply(embed);
}));
} }
} }
@ -118,8 +144,6 @@ public class PermissionCommand extends Command {
String userId = ctx.getMessage().getMentionedUsers().get(0).getIdAsString(); String userId = ctx.getMessage().getMentionedUsers().get(0).getIdAsString();
StaticPermissionController.delete(userId, ctx.getArgs()[2]).thenAcceptAsync((Void) -> { StaticPermissionController.delete(userId, ctx.getArgs()[2]).thenAcceptAsync((Void) -> System.out.println("Permission removed")).exceptionally(ExceptionLogger.get());
System.out.println("Permission removed");
}).exceptionally(ExceptionLogger.get());
} }
} }