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 java.awt.*;
import java.util.Arrays;
import java.util.*;
import java.util.List;
public class PermissionCommand extends Command {
@Override public String name() { return "Permission"; }
@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 CommandPermission permission() { return new CommandPermission(PermissionType.OWNER); }
@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()) {
User mentionedUser = ctx.getMessage().getMentionedUsers().get(0);
StaticPermissionController.getByUser(mentionedUser.getIdAsString()).thenAcceptAsync(possiblePerms -> {
possiblePerms.ifPresentOrElse(perms -> {
EmbedBuilder embed = new EmbedBuilder()
.setTitle(String.format("Permissions for %s", mentionedUser.getName()))
.setFooter(String.format("User has %s total static permissions", perms.size()))
.setColor(Color.GREEN);
StaticPermissionController
.getByUser(mentionedUser.getIdAsString())
.thenAcceptAsync(possiblePerms -> possiblePerms.ifPresentOrElse(perms -> {
EmbedBuilder embed = new EmbedBuilder()
.setTitle(String.format("Permissions for %s", mentionedUser.getName()))
.setFooter(String.format("User has %s total static permissions", perms.size()))
.setColor(Color.GREEN);
perms.forEach(perm -> {
embed.addField(perm.getUserId(), perm.getPermission());
});
perms.forEach(perm -> embed.addField(perm.getUserId(), perm.getPermission()));
ctx.reply(embed);
}, () -> {
EmbedBuilder embed = new EmbedBuilder()
.setTitle("No Permissions Found")
.setDescription(String.format("User %s has no static permissions", mentionedUser.getName()));
ctx.reply(embed);
}, () -> {
EmbedBuilder embed = new EmbedBuilder()
.setTitle("No Permissions Found")
.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 -> {
embed.addField(perm.getUserId(), perm.getPermission());
});
permKeywords.forEach(keyword -> {
EmbedBuilder e = new EmbedBuilder().setTitle(keyword);
StringBuilder text = new StringBuilder().append("```md").append(System.lineSeparator());
ctx.reply(embed);
}, () -> {
EmbedBuilder embed = new EmbedBuilder()
.setTitle("No Permissions Found")
.setDescription("No permissions have been added.");
ctx.reply(embed);
StaticPermissionController.getByPermission(keyword).thenAcceptAsync(
(optSp) -> optSp.ifPresent(
keywordPerms -> keywordPerms.forEach(
perm -> ctx.getApi().getUserById(perm.getUserId()).thenAcceptAsync(
(discordUser) -> text.append(perm.getUserId())
.append(" - ")
.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();
StaticPermissionController.delete(userId, ctx.getArgs()[2]).thenAcceptAsync((Void) -> {
System.out.println("Permission removed");
}).exceptionally(ExceptionLogger.get());
StaticPermissionController.delete(userId, ctx.getArgs()[2]).thenAcceptAsync((Void) -> System.out.println("Permission removed")).exceptionally(ExceptionLogger.get());
}
}