summaryrefslogtreecommitdiff
path: root/src/main/java/net/tylermurphy/ken/command/selfrole/DeleteRole.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/tylermurphy/ken/command/selfrole/DeleteRole.java')
-rw-r--r--src/main/java/net/tylermurphy/ken/command/selfrole/DeleteRole.java56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/main/java/net/tylermurphy/ken/command/selfrole/DeleteRole.java b/src/main/java/net/tylermurphy/ken/command/selfrole/DeleteRole.java
new file mode 100644
index 0000000..9d8b25f
--- /dev/null
+++ b/src/main/java/net/tylermurphy/ken/command/selfrole/DeleteRole.java
@@ -0,0 +1,56 @@
+package net.tylermurphy.ken.command.selfrole;
+
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.entities.Role;
+import net.dv8tion.jda.api.interactions.commands.OptionType;
+import net.tylermurphy.ken.Ken;
+import net.tylermurphy.ken.command.Response;
+import net.tylermurphy.ken.command.annotation.Command;
+import net.tylermurphy.ken.command.annotation.Option;
+import net.tylermurphy.ken.command.annotation.Requirement;
+import org.json.JSONArray;
+import org.json.JSONObject;
+
+import java.util.List;
+
+public class DeleteRole {
+
+ @Command(name="deleterole", description="Delete a role from the /rolls command on a certain page")
+ @Option(name="role", description="Role to delete", type= OptionType.ROLE, required=true)
+ @Option(name="page", description="Page to remove it from", type=OptionType.INTEGER, required=true)
+ @Requirement(Permission.MANAGE_SERVER)
+ public Response execute(Guild guild, List<Object> args) {
+ int page = (int)args.get(1);
+ Role role = (Role)args.get(0);
+ String data = Ken.getInstance().getDatabase().getSelfRoleData().getData(guild.getIdLong(), page);
+ if(data == null){
+ return Response.error("Page "+page+" does not exist.");
+ }
+ JSONObject object = new JSONObject(data);
+ JSONArray array = object.getJSONArray("roles");
+ int index = getIndex(array, role);
+ if(index == -1){
+ return Response.error("Role is not on that page");
+ }
+ array.remove(index);
+ object.put("roles", array);
+ data = object.toString();
+ boolean result = Ken.getInstance().getDatabase().getSelfRoleData().setData(guild.getIdLong(), page, data);
+ if(result){
+ return Response.success("Removed "+ role.getAsMention() +" from page "+page+" successfully");
+ } else {
+ return Response.error("Failed to remove role from page");
+ }
+ }
+
+ private int getIndex(JSONArray array, Role role){
+ int i = 0;
+ for(Object o : array){
+ if((long) o == role.getIdLong()) return i;
+ i++;
+ }
+ return -1;
+ }
+
+}