From fa42c698a4d79fc34ef60df08041cadc5b85f44f Mon Sep 17 00:00:00 2001 From: Alex Gryczewski Date: Mon, 27 Feb 2023 14:18:43 -0500 Subject: [PATCH 1/4] Fix help usage. Upgrade to enhanced switch --- .../commands/developer/PermissionCommand.java | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/src/main/java/dev/salmonllama/fsbot/commands/developer/PermissionCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/developer/PermissionCommand.java index 5562901..27e1b31 100644 --- a/src/main/java/dev/salmonllama/fsbot/commands/developer/PermissionCommand.java +++ b/src/main/java/dev/salmonllama/fsbot/commands/developer/PermissionCommand.java @@ -18,7 +18,7 @@ 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 "; } + @Override public String usage() { return "permission <@usermention> "; } @Override public CommandCategory category() { return CommandCategory.DEVELOPER; } @Override public CommandPermission permission() { return new CommandPermission(PermissionType.OWNER); } @Override public List aliases() { return Arrays.asList("permission", "permissions", "perm", "perms"); } @@ -27,21 +27,19 @@ public class PermissionCommand extends Command { public void onCommand(CommandContext ctx) { String[] args = ctx.getArgs(); - switch(args[0]) { - case "list": + switch (args[0]) { + case "list" -> // List all the static permissions - list(ctx); - break; - case "add": + list(ctx); + case "add" -> // Add a static permission to the mentioned user, if any - add(ctx); - break; - case "remove": + add(ctx); + case "remove" -> // Remove a static permission from the mentioned user, if any - remove(ctx); - break; - default: - // You don't know how to use this command LUL + remove(ctx); + default -> { + } + // You don't know how to use this command LUL } } From aca61214c9324667318987d6edba640d7b107249 Mon Sep 17 00:00:00 2001 From: Alex Gryczewski Date: Mon, 27 Feb 2023 14:21:19 -0500 Subject: [PATCH 2/4] Added helpful default case --- .../fsbot/commands/developer/PermissionCommand.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/dev/salmonllama/fsbot/commands/developer/PermissionCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/developer/PermissionCommand.java index 27e1b31..919e047 100644 --- a/src/main/java/dev/salmonllama/fsbot/commands/developer/PermissionCommand.java +++ b/src/main/java/dev/salmonllama/fsbot/commands/developer/PermissionCommand.java @@ -37,9 +37,7 @@ public class PermissionCommand extends Command { case "remove" -> // Remove a static permission from the mentioned user, if any remove(ctx); - default -> { - } - // You don't know how to use this command LUL + default -> ctx.reply("Incorrect usage, check ~help permission"); } } From bffce622fe46a9224c6dbfdf1d2b5682796c73bd Mon Sep 17 00:00:00 2001 From: Alex Gryczewski Date: Mon, 27 Feb 2023 17:50:00 -0500 Subject: [PATCH 3/4] Add reply methods for remainder args --- .../java/dev/salmonllama/fsbot/guthix/CommandContext.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/dev/salmonllama/fsbot/guthix/CommandContext.java b/src/main/java/dev/salmonllama/fsbot/guthix/CommandContext.java index e3d57d4..cf7f712 100644 --- a/src/main/java/dev/salmonllama/fsbot/guthix/CommandContext.java +++ b/src/main/java/dev/salmonllama/fsbot/guthix/CommandContext.java @@ -107,6 +107,14 @@ public class CommandContext { return channel.sendMessage(embed); } + public CompletableFuture reply(EmbedBuilder... embeds) { + return channel.sendMessage(embeds); + } + + public CompletableFuture reply(String content, EmbedBuilder... embeds) { + return channel.sendMessage(content, embeds); + } + public static class CommandContextBuilder { private MessageCreateEvent event; private DiscordApi api; From f721f7875ed0c22da63c21a26e94cf5ec49c094e Mon Sep 17 00:00:00 2001 From: Alex Gryczewski Date: Mon, 27 Feb 2023 17:50:36 -0500 Subject: [PATCH 4/4] Refactored perms list by keyword --- .../commands/developer/PermissionCommand.java | 102 +++++++++++------- 1 file changed, 63 insertions(+), 39 deletions(-) diff --git a/src/main/java/dev/salmonllama/fsbot/commands/developer/PermissionCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/developer/PermissionCommand.java index 919e047..121c24d 100644 --- a/src/main/java/dev/salmonllama/fsbot/commands/developer/PermissionCommand.java +++ b/src/main/java/dev/salmonllama/fsbot/commands/developer/PermissionCommand.java @@ -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 <@usermention> "; } + @Override public String usage() { return "permission <@user-mention> "; } @Override public CommandCategory category() { return CommandCategory.DEVELOPER; } @Override public CommandPermission permission() { return new CommandPermission(PermissionType.OWNER); } @Override public List 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 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 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()); } }