diff options
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.java | 56 |
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; + } + +} |