User Blacklist command

This commit is contained in:
Aleksei 2020-07-23 18:26:05 -04:00
parent 85c0063912
commit deb58f6a74
3 changed files with 70 additions and 2 deletions

View File

@ -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 <userId> <reason>"; }
@Override public String category() { return "Developer"; }
@Override public CommandPermission permission() { return new CommandPermission(PermissionType.STATIC, "owner"); }
@Override public Collection<String> 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);
});
});
});
}
}

View File

@ -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(),

View File

@ -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()