User Blacklist command
This commit is contained in:
parent
85c0063912
commit
deb58f6a74
@ -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);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
@ -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(),
|
||||
|
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user