diff --git a/src/main/java/dev/salmonllama/fsbot/commands/developer/BlacklistUserCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/developer/BlacklistUserCommand.java new file mode 100644 index 0000000..5a8cfe4 --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/commands/developer/BlacklistUserCommand.java @@ -0,0 +1,61 @@ +package dev.salmonllama.fsbot.commands.developer; + +import dev.salmonllama.fsbot.database.controllers.UserBlacklistController; +import dev.salmonllama.fsbot.database.models.UserBlacklist; +import dev.salmonllama.fsbot.guthix.Command; +import dev.salmonllama.fsbot.guthix.CommandContext; +import dev.salmonllama.fsbot.guthix.CommandPermission; +import dev.salmonllama.fsbot.guthix.PermissionType; +import org.javacord.api.entity.message.embed.EmbedBuilder; + +import java.util.Arrays; +import java.util.Collection; + +public class BlacklistUserCommand extends Command { + @Override public String name() { return "Blacklist User"; } + @Override public String description() { return "Adds the user to the bot's blacklist, preventing them from using any commands or features"; } + @Override public String usage() { return "blacklistuser "; } + @Override public String category() { return "Developer"; } + @Override public CommandPermission permission() { return new CommandPermission(PermissionType.STATIC, "owner"); } + @Override public Collection aliases() { return Arrays.asList("blacklistuser", "bluser", "sabusr"); } + + @Override + public void onCommand(CommandContext ctx) { + String[] args = ctx.getArgs(); + + if (args.length < 1) { + // Did it wrong + return; + } + + // If the user is on the blacklist, remove them, otherwise, add them with the reason. + UserBlacklistController.get(args[0]).thenAcceptAsync(possibleBlacklist -> { + possibleBlacklist.ifPresentOrElse(blacklist -> { + // Remove user from the blacklist + UserBlacklistController.delete(blacklist).thenAcceptAsync((Void) -> { + EmbedBuilder response = new EmbedBuilder() + .setTitle("Removed User from Blacklist") + .addField("User ID:", blacklist.getId()) + .addField("Reason for Add", blacklist.getReason()) + .addField("Added:", blacklist.getAdded().toString()); + + ctx.reply(response); + }); + }, () -> { + // Add user to the blacklist, check args + UserBlacklist.UserBlacklistBuilder blBuilder = new UserBlacklist.UserBlacklistBuilder(args[0]); + EmbedBuilder response = new EmbedBuilder().setTitle("Added User to Blacklist").addField("User ID:", args[0]); + + if (args.length > 1) { + String reason = String.join(" ", Arrays.copyOfRange(args, 1, args.length)); + blBuilder.setReason(reason); + response.addField("With reason:", reason); + } + + UserBlacklistController.insert(blBuilder.build()).thenAcceptAsync((Void) -> { + ctx.reply(response); + }); + }); + }); + } +} diff --git a/src/main/java/dev/salmonllama/fsbot/database/controllers/UserBlacklistController.java b/src/main/java/dev/salmonllama/fsbot/database/controllers/UserBlacklistController.java index 50761ee..fbbb0e2 100644 --- a/src/main/java/dev/salmonllama/fsbot/database/controllers/UserBlacklistController.java +++ b/src/main/java/dev/salmonllama/fsbot/database/controllers/UserBlacklistController.java @@ -82,7 +82,10 @@ public class UserBlacklistController { } private static void insertExec(UserBlacklist bl) throws SQLException { - // TODO: Check for null timestamp and init + if (bl.getAdded() == null) { + bl.setAdded(new Timestamp(System.currentTimeMillis())); + } + FSDB.get().insert("INSERT INTO blacklist_users ('id', 'reason', 'added') VALUES (?, ?, ?)", bl.getId(), bl.getReason(), diff --git a/src/main/java/dev/salmonllama/fsbot/database/models/UserBlacklist.java b/src/main/java/dev/salmonllama/fsbot/database/models/UserBlacklist.java index fe17629..1b138d9 100644 --- a/src/main/java/dev/salmonllama/fsbot/database/models/UserBlacklist.java +++ b/src/main/java/dev/salmonllama/fsbot/database/models/UserBlacklist.java @@ -32,6 +32,10 @@ public class UserBlacklist extends DatabaseModel { return added; } + public void setAdded(Timestamp added) { + this.added = added; + } + public static String schema() { return "CREATE TABLE IF NOT EXISTS blacklist_users (" + "id TEXT PRIMARY KEY," + @@ -41,7 +45,7 @@ public class UserBlacklist extends DatabaseModel { @Override public String toString() { - return String.format("User Blacklist: [id: %s, reason: %s, added: %s", + return String.format("User Blacklist: [id: %s, reason: %s, added: %s]", this.getId(), this.getReason(), this.getAdded()