v11
This commit is contained in:
parent
2bb0dcd0e2
commit
207b8857e8
15 changed files with 214 additions and 230 deletions
|
@ -198,6 +198,7 @@ public class Responder extends ListenerAdapter {
|
||||||
.setTitle(":x: **Error**")
|
.setTitle(":x: **Error**")
|
||||||
.setDescription(e.getCause().getMessage());
|
.setDescription(e.getCause().getMessage());
|
||||||
event.getHook().editOriginalEmbeds(builder.build()).queue();
|
event.getHook().editOriginalEmbeds(builder.build()).queue();
|
||||||
|
event.getHook().editOriginalComponents(new ArrayList<>()).queue();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -246,6 +247,7 @@ public class Responder extends ListenerAdapter {
|
||||||
.setTitle(":x: **Error**")
|
.setTitle(":x: **Error**")
|
||||||
.setDescription(e.getCause().getMessage());
|
.setDescription(e.getCause().getMessage());
|
||||||
event.getHook().sendMessageEmbeds(builder.build()).queue();
|
event.getHook().sendMessageEmbeds(builder.build()).queue();
|
||||||
|
event.getHook().editOriginalComponents(new ArrayList<>()).queue();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -276,6 +278,7 @@ public class Responder extends ListenerAdapter {
|
||||||
.setColor(Color.RED)
|
.setColor(Color.RED)
|
||||||
.setDescription(response.getMessage());
|
.setDescription(response.getMessage());
|
||||||
hook.sendMessageEmbeds(builder.build()).queue();
|
hook.sendMessageEmbeds(builder.build()).queue();
|
||||||
|
hook.editOriginalComponents(new ArrayList<>()).queue();
|
||||||
} else if(response.isDelete()) {
|
} else if(response.isDelete()) {
|
||||||
hook.deleteOriginal().queue();
|
hook.deleteOriginal().queue();
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -3,11 +3,11 @@ package net.tylermurphy.ken.command.main;
|
||||||
import net.dv8tion.jda.api.EmbedBuilder;
|
import net.dv8tion.jda.api.EmbedBuilder;
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import net.dv8tion.jda.api.entities.Message;
|
import net.dv8tion.jda.api.entities.Message;
|
||||||
import net.dv8tion.jda.api.entities.MessageEmbed;
|
|
||||||
import net.tylermurphy.ken.Ken;
|
import net.tylermurphy.ken.Ken;
|
||||||
import net.tylermurphy.ken.command.annotation.ButtonCallback;
|
import net.tylermurphy.ken.command.annotation.ButtonCallback;
|
||||||
import net.tylermurphy.ken.command.annotation.Command;
|
import net.tylermurphy.ken.command.annotation.Command;
|
||||||
import net.tylermurphy.ken.command.Response;
|
import net.tylermurphy.ken.command.Response;
|
||||||
|
import net.tylermurphy.ken.util.Checks;
|
||||||
|
|
||||||
public class Help {
|
public class Help {
|
||||||
|
|
||||||
|
@ -18,13 +18,12 @@ public class Help {
|
||||||
|
|
||||||
@ButtonCallback(name="help")
|
@ButtonCallback(name="help")
|
||||||
public Response onButton(String id, Message message, Member sender){
|
public Response onButton(String id, Message message, Member sender){
|
||||||
int page;
|
|
||||||
|
try { Checks.hasPagedEmbed(message); }
|
||||||
|
catch (RuntimeException e) { return Response.error(e.getMessage()); }
|
||||||
|
|
||||||
|
int page = Integer.parseInt(message.getEmbeds().get(0).getFooter().getText().split("/")[0].substring(5));
|
||||||
int pages = pageEmbeds.length;
|
int pages = pageEmbeds.length;
|
||||||
if (message != null && message.getEmbeds().size() > 0 && message.getEmbeds().get(0) != null) {
|
|
||||||
page = Integer.parseInt(message.getEmbeds().get(0).getFooter().getText().split("/")[0].substring(5));
|
|
||||||
} else {
|
|
||||||
page = 0;
|
|
||||||
}
|
|
||||||
if(id.equals("previous"))
|
if(id.equals("previous"))
|
||||||
page = page - 1 < 1 ? pages : page - 1;
|
page = page - 1 < 1 ? pages : page - 1;
|
||||||
else
|
else
|
||||||
|
|
|
@ -14,6 +14,7 @@ import net.tylermurphy.ken.command.annotation.Command;
|
||||||
import net.tylermurphy.ken.command.annotation.Option;
|
import net.tylermurphy.ken.command.annotation.Option;
|
||||||
import net.tylermurphy.ken.command.annotation.Requirement;
|
import net.tylermurphy.ken.command.annotation.Requirement;
|
||||||
import net.tylermurphy.ken.database.ModerationTable;
|
import net.tylermurphy.ken.database.ModerationTable;
|
||||||
|
import net.tylermurphy.ken.database.UserTable;
|
||||||
import net.tylermurphy.ken.util.Checks;
|
import net.tylermurphy.ken.util.Checks;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
@ -33,31 +34,15 @@ public class Ban {
|
||||||
Member target = (Member) args.get(0);
|
Member target = (Member) args.get(0);
|
||||||
String reason = (String) args.get(1);
|
String reason = (String) args.get(1);
|
||||||
boolean purge = (boolean) args.get(2);
|
boolean purge = (boolean) args.get(2);
|
||||||
if(target == sender){
|
|
||||||
return Response.error("You are not allowed to do this to yourself");
|
try { Checks.hasPermission(sender, target); }
|
||||||
}
|
catch (RuntimeException e) { return Response.error(e.getMessage()); }
|
||||||
Role low = Checks.getHighestRole(target);
|
|
||||||
Role high = Checks.getHighestRole(sender);
|
|
||||||
if(!Checks.getRolePermission(high, low)){
|
|
||||||
return Response.error("You need a higher role than the target");
|
|
||||||
}
|
|
||||||
Role self = Checks.getHighestRole(guild.getSelfMember());
|
|
||||||
if(!Checks.getRolePermission(self, low)){
|
|
||||||
return Response.error("I need a higher role than the target");
|
|
||||||
}
|
|
||||||
if(guild.getOwner() == target){
|
|
||||||
return Response.error("You cannot to this to the server owner");
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
guild.retrieveBan(target).complete();
|
guild.retrieveBan(target).complete();
|
||||||
return Response.error("User is already banned from this server");
|
return Response.error("User is already banned from this server");
|
||||||
} catch (ErrorResponseException ignored) {}
|
} catch (ErrorResponseException ignored) {}
|
||||||
|
|
||||||
ModerationTable table = Ken.getInstance().getDatabase().getModerationTable();
|
|
||||||
String data = table.getData(guild.getIdLong(), target.getUser().getIdLong());
|
|
||||||
JSONObject json = table.updateData(data);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
guild.removeTimeout(target).queue();
|
guild.removeTimeout(target).queue();
|
||||||
} catch (Exception ignored){}
|
} catch (Exception ignored){}
|
||||||
|
@ -68,19 +53,19 @@ public class Ban {
|
||||||
return Response.error("Failed to ban user");
|
return Response.error("Failed to ban user");
|
||||||
}
|
}
|
||||||
|
|
||||||
JSONObject status = json.getJSONObject("status");
|
ModerationTable table = Ken.getInstance().getDatabase().getModerationTable();
|
||||||
status.put("type", "ban");
|
UserTable userTable = Ken.getInstance().getDatabase().getUserTable();
|
||||||
status.put("reason", reason);
|
JSONObject json = table.getData(guild.getIdLong(), target.getUser().getIdLong());
|
||||||
status.put("until", 0L);
|
|
||||||
json.put("status", status);
|
|
||||||
|
|
||||||
JSONArray history = json.getJSONArray("history");
|
JSONArray history = json.getJSONArray("history");
|
||||||
history.put(new JSONObject().put("type", "ban").put("reason", reason).put("date",new Date().getTime()).put("by", sender.getIdLong()));
|
history.put(new JSONObject()
|
||||||
json.put("history", history);
|
.put("type", "ban")
|
||||||
|
.put("reason", reason)
|
||||||
|
.put("date",new Date().getTime())
|
||||||
|
.put("by", sender.getIdLong())
|
||||||
|
);
|
||||||
|
|
||||||
table.setData(guild.getIdLong(), target.getUser().getIdLong(), json.toString());
|
table.setData(guild.getIdLong(), target.getUser().getIdLong(), history, "ban", 0L);
|
||||||
|
userTable.setData(target.getIdLong(), target.getUser().getName(), Integer.parseInt(target.getUser().getDiscriminator()));
|
||||||
Ken.getInstance().getDatabase().getUserTable().setData(target.getIdLong(), target.getUser().getName(), Integer.parseInt(target.getUser().getDiscriminator()));
|
|
||||||
|
|
||||||
PrivateChannel channel = target.getUser().openPrivateChannel().complete();
|
PrivateChannel channel = target.getUser().openPrivateChannel().complete();
|
||||||
if(channel != null){
|
if(channel != null){
|
||||||
|
|
|
@ -11,12 +11,16 @@ import net.tylermurphy.ken.command.annotation.Command;
|
||||||
import net.tylermurphy.ken.command.annotation.Option;
|
import net.tylermurphy.ken.command.annotation.Option;
|
||||||
import net.tylermurphy.ken.command.annotation.Requirement;
|
import net.tylermurphy.ken.command.annotation.Requirement;
|
||||||
import net.tylermurphy.ken.database.ModerationTable;
|
import net.tylermurphy.ken.database.ModerationTable;
|
||||||
|
import net.tylermurphy.ken.util.Checks;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
public class History {
|
public class History {
|
||||||
|
|
||||||
|
@ -39,25 +43,25 @@ public class History {
|
||||||
}
|
}
|
||||||
|
|
||||||
ModerationTable table = Ken.getInstance().getDatabase().getModerationTable();
|
ModerationTable table = Ken.getInstance().getDatabase().getModerationTable();
|
||||||
String data = table.getData(guild.getIdLong(), target);
|
JSONObject json = table.getData(guild.getIdLong(), target);
|
||||||
JSONObject json = table.updateData(data);
|
|
||||||
JSONArray history = json.getJSONArray("history");
|
JSONArray history = json.getJSONArray("history");
|
||||||
|
|
||||||
int page = 1;
|
return Response.success(generateEmbed(history, 1, username, discriminator)).addSecondaryButton("history", "previous", "Previous").addSecondaryButton("history", "next", "Next");
|
||||||
int pages = (history.length()-1)/4+1;
|
|
||||||
|
|
||||||
return Response.success(generateEmbed(history, page, username, discriminator)).addSecondaryButton("history", "previous", "Previous").addSecondaryButton("history", "next", "Next");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ButtonCallback(name="history")
|
@ButtonCallback(name="history")
|
||||||
public Response onButton(String id, Message message, Guild guild){
|
public Response onButton(String id, Message message, Guild guild){
|
||||||
if(message == null || message.getEmbeds().size() < 1){
|
|
||||||
return Response.error("Message missing");
|
try { Checks.hasPagedEmbed(message); }
|
||||||
}
|
catch (RuntimeException e) { return Response.error(e.getMessage()); }
|
||||||
|
|
||||||
MessageEmbed temp = message.getEmbeds().get(0);
|
MessageEmbed temp = message.getEmbeds().get(0);
|
||||||
String username = temp.getDescription().substring(6).split("#")[0];
|
String description = temp.getDescription();
|
||||||
String discriminator = temp.getDescription().substring(6).split("#")[1];
|
assert description != null;
|
||||||
|
int stop = description.indexOf('\n');
|
||||||
|
if(stop == -1) stop = description.length();
|
||||||
|
String username = description.substring(6, stop).split("#")[0];
|
||||||
|
String discriminator = description.substring(6, stop).split("#")[1];
|
||||||
|
|
||||||
long target = Ken.getInstance().getDatabase().getUserTable().getData(username, Integer.parseInt(discriminator));
|
long target = Ken.getInstance().getDatabase().getUserTable().getData(username, Integer.parseInt(discriminator));
|
||||||
if(target == 0L || temp.getFooter() == null) {
|
if(target == 0L || temp.getFooter() == null) {
|
||||||
|
@ -65,8 +69,7 @@ public class History {
|
||||||
}
|
}
|
||||||
|
|
||||||
ModerationTable table = Ken.getInstance().getDatabase().getModerationTable();
|
ModerationTable table = Ken.getInstance().getDatabase().getModerationTable();
|
||||||
String data = table.getData(guild.getIdLong(), target);
|
JSONObject json = table.getData(guild.getIdLong(), target);
|
||||||
JSONObject json = table.updateData(data);
|
|
||||||
JSONArray history = json.getJSONArray("history");
|
JSONArray history = json.getJSONArray("history");
|
||||||
|
|
||||||
int page = Integer.parseInt(temp.getFooter().getText().split("/")[0].substring(5));
|
int page = Integer.parseInt(temp.getFooter().getText().split("/")[0].substring(5));
|
||||||
|
@ -86,7 +89,7 @@ public class History {
|
||||||
.setDescription("User: "+username+"#"+discriminator)
|
.setDescription("User: "+username+"#"+discriminator)
|
||||||
.setFooter("Page "+page+"/"+pages);
|
.setFooter("Page "+page+"/"+pages);
|
||||||
if(history.length() < 1){
|
if(history.length() < 1){
|
||||||
builder.appendDescription("User has no moderation history");
|
builder.appendDescription("\nUser has no moderation history");
|
||||||
} else {
|
} else {
|
||||||
for(int i =(page-1)*4; i<Math.min((page-1)*4+4, history.length()); i++){
|
for(int i =(page-1)*4; i<Math.min((page-1)*4+4, history.length()); i++){
|
||||||
builder.addField(parseStatus(history.getJSONObject(history.length()-i-1)));
|
builder.addField(parseStatus(history.getJSONObject(history.length()-i-1)));
|
||||||
|
@ -96,23 +99,42 @@ public class History {
|
||||||
}
|
}
|
||||||
|
|
||||||
private MessageEmbed.Field parseStatus(JSONObject status){
|
private MessageEmbed.Field parseStatus(JSONObject status){
|
||||||
|
SimpleDateFormat format = new SimpleDateFormat("MMM d, y h:ma zz");
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
String type = status.getString("type");
|
String type = status.getString("type");
|
||||||
String reason = "Reason: " + status.getString("reason");
|
|
||||||
String name = switch (type){
|
String name = switch (type){
|
||||||
case "ban" -> "Banned";
|
case "ban" -> "Banned";
|
||||||
case "temp-ban" -> "Temp banned";
|
case "tempban" -> "Temp banned";
|
||||||
case "unban" -> "Unbanned";
|
case "unban" -> "Unbanned";
|
||||||
case "kick" -> "Kicked";
|
case "kick" -> "Kicked";
|
||||||
case "mute" -> "Muted";
|
case "mute" -> "Muted";
|
||||||
case "unmute" -> "Unmuted";
|
case "unmute" -> "Unmuted";
|
||||||
default -> throw new RuntimeException("Unknown value: " + type);
|
default -> throw new RuntimeException("Unknown value: " + type);
|
||||||
};
|
};
|
||||||
SimpleDateFormat format = new SimpleDateFormat("MMM d, y h:ma zz");
|
builder.append("Reason: ")
|
||||||
String date = status.has("until") ?
|
.append(status.getString("reason"))
|
||||||
"Until: " + format.format(new Date(status.getLong("until"))) :
|
.append("\n")
|
||||||
"Date: " + format.format(new Date(status.getLong("date")));
|
.append("Date: ")
|
||||||
String by = "By: <@"+status.getLong("by")+">";
|
.append(format.format(new Date(status.getLong("date"))))
|
||||||
return new MessageEmbed.Field(name, reason+"\n"+date+"\n"+by, false);
|
.append("\n")
|
||||||
|
.append("By: <@")
|
||||||
|
.append(status.getLong("by"))
|
||||||
|
.append(">\n");
|
||||||
|
|
||||||
|
if(status.has("duration")){
|
||||||
|
Date end = new Date(status.getLong("duration"));
|
||||||
|
Date start = new Date(status.getLong("date"));
|
||||||
|
long diff = Math.abs(end.getTime() - start.getTime())+60000;
|
||||||
|
long days = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
|
||||||
|
long buffer = TimeUnit.MILLISECONDS.convert(days, TimeUnit.DAYS);
|
||||||
|
long hours = TimeUnit.HOURS.convert(diff-buffer, TimeUnit.MILLISECONDS);
|
||||||
|
builder.append("Duration: ");
|
||||||
|
if(days/30 > 0) builder.append(days/30).append("m");
|
||||||
|
if(days%30 > 0) builder.append(days%30).append("d");
|
||||||
|
if(hours > 0) builder.append(hours).append("h");
|
||||||
|
}
|
||||||
|
|
||||||
|
return new MessageEmbed.Field(name, builder.toString(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@ import net.tylermurphy.ken.command.annotation.Command;
|
||||||
import net.tylermurphy.ken.command.annotation.Option;
|
import net.tylermurphy.ken.command.annotation.Option;
|
||||||
import net.tylermurphy.ken.command.annotation.Requirement;
|
import net.tylermurphy.ken.command.annotation.Requirement;
|
||||||
import net.tylermurphy.ken.database.ModerationTable;
|
import net.tylermurphy.ken.database.ModerationTable;
|
||||||
|
import net.tylermurphy.ken.database.UserTable;
|
||||||
import net.tylermurphy.ken.util.Checks;
|
import net.tylermurphy.ken.util.Checks;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
@ -31,31 +32,15 @@ public class Kick {
|
||||||
public Response execute(Member sender, List<Object> args, Guild guild){
|
public Response execute(Member sender, List<Object> args, Guild guild){
|
||||||
Member target = (Member) args.get(0);
|
Member target = (Member) args.get(0);
|
||||||
String reason = (String) args.get(1);
|
String reason = (String) args.get(1);
|
||||||
if(target == sender){
|
|
||||||
return Response.error("You are not allowed to do this to yourself");
|
try { Checks.hasPermission(sender, target); }
|
||||||
}
|
catch (RuntimeException e) { return Response.error(e.getMessage()); }
|
||||||
Role low = Checks.getHighestRole(target);
|
|
||||||
Role high = Checks.getHighestRole(sender);
|
|
||||||
if(!Checks.getRolePermission(high, low)){
|
|
||||||
return Response.error("You need a higher role than the target");
|
|
||||||
}
|
|
||||||
Role self = Checks.getHighestRole(guild.getSelfMember());
|
|
||||||
if(!Checks.getRolePermission(self, low)){
|
|
||||||
return Response.error("I need a higher role than the target");
|
|
||||||
}
|
|
||||||
if(guild.getOwner() == target){
|
|
||||||
return Response.error("You cannot to this to the server owner");
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
guild.retrieveBan(target).complete();
|
guild.retrieveBan(target).complete();
|
||||||
return Response.error("User is currently banned and cannot be kicked");
|
return Response.error("User is currently banned and cannot be kicked");
|
||||||
} catch (ErrorResponseException ignored) {}
|
} catch (ErrorResponseException ignored) {}
|
||||||
|
|
||||||
ModerationTable table = Ken.getInstance().getDatabase().getModerationTable();
|
|
||||||
String data = table.getData(guild.getIdLong(), target.getUser().getIdLong());
|
|
||||||
JSONObject json = table.updateData(data);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
guild.removeTimeout(target).queue();
|
guild.removeTimeout(target).queue();
|
||||||
} catch (Exception ignored){}
|
} catch (Exception ignored){}
|
||||||
|
@ -66,19 +51,19 @@ public class Kick {
|
||||||
return Response.error("Failed to kick user");
|
return Response.error("Failed to kick user");
|
||||||
}
|
}
|
||||||
|
|
||||||
JSONObject status = json.getJSONObject("status");
|
ModerationTable table = Ken.getInstance().getDatabase().getModerationTable();
|
||||||
status.put("type", "None");
|
UserTable userTable = Ken.getInstance().getDatabase().getUserTable();
|
||||||
status.put("reason", "");
|
JSONObject json = table.getData(guild.getIdLong(), target.getUser().getIdLong());
|
||||||
status.put("until", 0L);
|
|
||||||
json.put("status", status);
|
|
||||||
|
|
||||||
JSONArray history = json.getJSONArray("history");
|
JSONArray history = json.getJSONArray("history");
|
||||||
history.put(new JSONObject().put("type", "kick").put("reason", reason).put("date",new Date().getTime()).put("by", sender.getIdLong()));
|
history.put(new JSONObject()
|
||||||
json.put("history", history);
|
.put("type", "kick")
|
||||||
|
.put("reason", reason)
|
||||||
|
.put("date",new Date().getTime())
|
||||||
|
.put("by", sender.getIdLong())
|
||||||
|
);
|
||||||
|
|
||||||
table.setData(guild.getIdLong(), target.getUser().getIdLong(), json.toString());
|
table.setData(guild.getIdLong(), target.getUser().getIdLong(), history, "None", 0L);
|
||||||
|
userTable.setData(target.getIdLong(), target.getUser().getName(), Integer.parseInt(target.getUser().getDiscriminator()));
|
||||||
Ken.getInstance().getDatabase().getUserTable().setData(target.getIdLong(), target.getUser().getName(), Integer.parseInt(target.getUser().getDiscriminator()));
|
|
||||||
|
|
||||||
PrivateChannel channel = target.getUser().openPrivateChannel().complete();
|
PrivateChannel channel = target.getUser().openPrivateChannel().complete();
|
||||||
if(channel != null){
|
if(channel != null){
|
||||||
|
|
|
@ -14,6 +14,7 @@ import net.tylermurphy.ken.command.annotation.Command;
|
||||||
import net.tylermurphy.ken.command.annotation.Option;
|
import net.tylermurphy.ken.command.annotation.Option;
|
||||||
import net.tylermurphy.ken.command.annotation.Requirement;
|
import net.tylermurphy.ken.command.annotation.Requirement;
|
||||||
import net.tylermurphy.ken.database.ModerationTable;
|
import net.tylermurphy.ken.database.ModerationTable;
|
||||||
|
import net.tylermurphy.ken.database.UserTable;
|
||||||
import net.tylermurphy.ken.util.Checks;
|
import net.tylermurphy.ken.util.Checks;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
@ -36,24 +37,14 @@ public class Mute {
|
||||||
Member target = (Member) args.get(0);
|
Member target = (Member) args.get(0);
|
||||||
String timeString = (String) args.get(1);
|
String timeString = (String) args.get(1);
|
||||||
String reason = (String) args.get(2);
|
String reason = (String) args.get(2);
|
||||||
if(target == sender){
|
|
||||||
return Response.error("You are not allowed to do this to yourself");
|
try { Checks.hasPermission(sender, target); }
|
||||||
}
|
catch (RuntimeException e) { return Response.error(e.getMessage()); }
|
||||||
Role low = Checks.getHighestRole(target);
|
|
||||||
Role high = Checks.getHighestRole(sender);
|
|
||||||
if(!Checks.getRolePermission(high, low)){
|
|
||||||
return Response.error("You need a higher role than the target");
|
|
||||||
}
|
|
||||||
Role self = Checks.getHighestRole(guild.getSelfMember());
|
|
||||||
if(!Checks.getRolePermission(self, low)){
|
|
||||||
return Response.error("I need a higher role than the target");
|
|
||||||
}
|
|
||||||
if(guild.getOwner() == target){
|
|
||||||
return Response.error("You cannot to this to the server owner");
|
|
||||||
}
|
|
||||||
if(target.isTimedOut()){
|
if(target.isTimedOut()){
|
||||||
return Response.error("User is already muted");
|
return Response.error("User is already muted");
|
||||||
}
|
}
|
||||||
|
|
||||||
long time = Checks.convertTime(timeString);
|
long time = Checks.convertTime(timeString);
|
||||||
if(time == 0L){
|
if(time == 0L){
|
||||||
return Response.error("Time to ban cannot be 0");
|
return Response.error("Time to ban cannot be 0");
|
||||||
|
@ -65,29 +56,26 @@ public class Mute {
|
||||||
SimpleDateFormat format = new SimpleDateFormat("MMM d, y h:ma zz");
|
SimpleDateFormat format = new SimpleDateFormat("MMM d, y h:ma zz");
|
||||||
String date = format.format(time);
|
String date = format.format(time);
|
||||||
|
|
||||||
ModerationTable table = Ken.getInstance().getDatabase().getModerationTable();
|
|
||||||
String data = table.getData(guild.getIdLong(), target.getUser().getIdLong());
|
|
||||||
JSONObject json = table.updateData(data);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
guild.timeoutUntil(target, new Date(time).toInstant()).queue();
|
guild.timeoutUntil(target, new Date(time).toInstant()).queue();
|
||||||
} catch (Exception e){
|
} catch (Exception e){
|
||||||
return Response.error("Failed to mute user");
|
return Response.error("Failed to mute user");
|
||||||
}
|
}
|
||||||
|
|
||||||
JSONObject status = json.getJSONObject("status");
|
ModerationTable table = Ken.getInstance().getDatabase().getModerationTable();
|
||||||
status.put("type", "mute");
|
UserTable userTable = Ken.getInstance().getDatabase().getUserTable();
|
||||||
status.put("reason", reason);
|
JSONObject json = table.getData(guild.getIdLong(), target.getUser().getIdLong());
|
||||||
status.put("until", time);
|
|
||||||
json.put("status", status);
|
|
||||||
|
|
||||||
JSONArray history = json.getJSONArray("history");
|
JSONArray history = json.getJSONArray("history");
|
||||||
history.put(new JSONObject().put("type", "mute").put("reason", reason).put("date",new Date().getTime()).put("by", sender.getIdLong()));
|
history.put(new JSONObject()
|
||||||
json.put("history", history);
|
.put("type", "mute")
|
||||||
|
.put("reason", reason)
|
||||||
|
.put("date",new Date().getTime())
|
||||||
|
.put("by", sender.getIdLong())
|
||||||
|
.put("duration", time)
|
||||||
|
);
|
||||||
|
|
||||||
table.setData(guild.getIdLong(), target.getUser().getIdLong(), json.toString());
|
table.setData(guild.getIdLong(), target.getUser().getIdLong(), history, "mute", time);
|
||||||
|
userTable.setData(target.getIdLong(), target.getUser().getName(), Integer.parseInt(target.getUser().getDiscriminator()));
|
||||||
Ken.getInstance().getDatabase().getUserTable().setData(target.getIdLong(), target.getUser().getName(), Integer.parseInt(target.getUser().getDiscriminator()));
|
|
||||||
|
|
||||||
PrivateChannel channel = target.getUser().openPrivateChannel().complete();
|
PrivateChannel channel = target.getUser().openPrivateChannel().complete();
|
||||||
if(channel != null){
|
if(channel != null){
|
||||||
|
|
|
@ -14,6 +14,7 @@ import net.tylermurphy.ken.command.annotation.Command;
|
||||||
import net.tylermurphy.ken.command.annotation.Option;
|
import net.tylermurphy.ken.command.annotation.Option;
|
||||||
import net.tylermurphy.ken.command.annotation.Requirement;
|
import net.tylermurphy.ken.command.annotation.Requirement;
|
||||||
import net.tylermurphy.ken.database.ModerationTable;
|
import net.tylermurphy.ken.database.ModerationTable;
|
||||||
|
import net.tylermurphy.ken.database.UserTable;
|
||||||
import net.tylermurphy.ken.util.Checks;
|
import net.tylermurphy.ken.util.Checks;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
@ -36,21 +37,10 @@ public class TempBan {
|
||||||
String timeString = (String) args.get(1);
|
String timeString = (String) args.get(1);
|
||||||
String reason = (String) args.get(2);
|
String reason = (String) args.get(2);
|
||||||
boolean purge = (boolean) args.get(3);
|
boolean purge = (boolean) args.get(3);
|
||||||
if(target == sender){
|
|
||||||
return Response.error("You are not allowed to do this to yourself");
|
try { Checks.hasPermission(sender, target); }
|
||||||
}
|
catch (RuntimeException e) { return Response.error(e.getMessage()); }
|
||||||
Role low = Checks.getHighestRole(target);
|
|
||||||
Role high = Checks.getHighestRole(sender);
|
|
||||||
if(!Checks.getRolePermission(high, low)){
|
|
||||||
return Response.error("You need a higher role than the target");
|
|
||||||
}
|
|
||||||
Role self = Checks.getHighestRole(guild.getSelfMember());
|
|
||||||
if(!Checks.getRolePermission(self, low)){
|
|
||||||
return Response.error("I need a higher role than the target");
|
|
||||||
}
|
|
||||||
if(guild.getOwner() == target){
|
|
||||||
return Response.error("You cannot to this to the server owner");
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
guild.retrieveBan(target).complete();
|
guild.retrieveBan(target).complete();
|
||||||
return Response.error("User is already banned from this server");
|
return Response.error("User is already banned from this server");
|
||||||
|
@ -62,10 +52,6 @@ public class TempBan {
|
||||||
SimpleDateFormat format = new SimpleDateFormat("MMM d, y h:ma zz");
|
SimpleDateFormat format = new SimpleDateFormat("MMM d, y h:ma zz");
|
||||||
String date = format.format(time);
|
String date = format.format(time);
|
||||||
|
|
||||||
ModerationTable table = Ken.getInstance().getDatabase().getModerationTable();
|
|
||||||
String data = table.getData(guild.getIdLong(), target.getUser().getIdLong());
|
|
||||||
JSONObject json = table.updateData(data);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
guild.removeTimeout(target).queue();
|
guild.removeTimeout(target).queue();
|
||||||
} catch (Exception ignored){}
|
} catch (Exception ignored){}
|
||||||
|
@ -76,19 +62,20 @@ public class TempBan {
|
||||||
return Response.error("Failed to temp ban user");
|
return Response.error("Failed to temp ban user");
|
||||||
}
|
}
|
||||||
|
|
||||||
JSONObject status = json.getJSONObject("status");
|
ModerationTable table = Ken.getInstance().getDatabase().getModerationTable();
|
||||||
status.put("type", "temp-ban");
|
UserTable userTable = Ken.getInstance().getDatabase().getUserTable();
|
||||||
status.put("reason", reason);
|
JSONObject json = table.getData(guild.getIdLong(), target.getUser().getIdLong());
|
||||||
status.put("until", time);
|
|
||||||
json.put("status", status);
|
|
||||||
|
|
||||||
JSONArray history = json.getJSONArray("history");
|
JSONArray history = json.getJSONArray("history");
|
||||||
history.put(new JSONObject().put("type", "temp-ban").put("reason", reason).put("date",new Date().getTime()).put("by", sender.getIdLong()));
|
history.put(new JSONObject()
|
||||||
json.put("history", history);
|
.put("type", "tempban")
|
||||||
|
.put("reason", reason)
|
||||||
|
.put("date",new Date().getTime())
|
||||||
|
.put("by", sender.getIdLong())
|
||||||
|
.put("duration", time)
|
||||||
|
);
|
||||||
|
|
||||||
table.setData(guild.getIdLong(), target.getUser().getIdLong(), json.toString());
|
table.setData(guild.getIdLong(), target.getUser().getIdLong(), history, "tempban", time);
|
||||||
|
userTable.setData(target.getIdLong(), target.getUser().getName(), Integer.parseInt(target.getUser().getDiscriminator()));
|
||||||
Ken.getInstance().getDatabase().getUserTable().setData(target.getIdLong(), target.getUser().getName(), Integer.parseInt(target.getUser().getDiscriminator()));
|
|
||||||
|
|
||||||
PrivateChannel channel = target.getUser().openPrivateChannel().complete();
|
PrivateChannel channel = target.getUser().openPrivateChannel().complete();
|
||||||
if(channel != null){
|
if(channel != null){
|
||||||
|
|
|
@ -11,6 +11,7 @@ import net.tylermurphy.ken.command.annotation.Command;
|
||||||
import net.tylermurphy.ken.command.annotation.Option;
|
import net.tylermurphy.ken.command.annotation.Option;
|
||||||
import net.tylermurphy.ken.command.annotation.Requirement;
|
import net.tylermurphy.ken.command.annotation.Requirement;
|
||||||
import net.tylermurphy.ken.database.ModerationTable;
|
import net.tylermurphy.ken.database.ModerationTable;
|
||||||
|
import net.tylermurphy.ken.database.UserTable;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
@ -28,13 +29,12 @@ public class UnBan {
|
||||||
public Response execute(Member sender, Guild guild, List<Object> args){
|
public Response execute(Member sender, Guild guild, List<Object> args){
|
||||||
String username = (String) args.get(0);
|
String username = (String) args.get(0);
|
||||||
String discriminator = String.valueOf(args.get(1));
|
String discriminator = String.valueOf(args.get(1));
|
||||||
|
String reason = (String) args.get(2);
|
||||||
|
|
||||||
if(discriminator.length() != 4) {
|
if(discriminator.length() != 4) {
|
||||||
return Response.error("Invalid discriminator");
|
return Response.error("Invalid discriminator");
|
||||||
}
|
}
|
||||||
|
|
||||||
String reason = (String) args.get(2);
|
|
||||||
|
|
||||||
User target = null;
|
User target = null;
|
||||||
for(Guild.Ban ban : guild.retrieveBanList()){
|
for(Guild.Ban ban : guild.retrieveBanList()){
|
||||||
User temp = ban.getUser();
|
User temp = ban.getUser();
|
||||||
|
@ -58,29 +58,25 @@ public class UnBan {
|
||||||
return Response.error("User is not banned from this server");
|
return Response.error("User is not banned from this server");
|
||||||
}
|
}
|
||||||
|
|
||||||
ModerationTable table = Ken.getInstance().getDatabase().getModerationTable();
|
|
||||||
String data = table.getData(guild.getIdLong(), target.getIdLong());
|
|
||||||
JSONObject json = table.updateData(data);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
guild.unban(target).queue();
|
guild.unban(target).queue();
|
||||||
} catch (Exception e){
|
} catch (Exception e){
|
||||||
return Response.error("Failed to unban user");
|
return Response.error("Failed to unban user");
|
||||||
}
|
}
|
||||||
|
|
||||||
JSONObject status = json.getJSONObject("status");
|
ModerationTable table = Ken.getInstance().getDatabase().getModerationTable();
|
||||||
status.put("type", "None");
|
UserTable userTable = Ken.getInstance().getDatabase().getUserTable();
|
||||||
status.put("reason", "");
|
JSONObject json = table.getData(guild.getIdLong(), target.getIdLong());
|
||||||
status.put("until", 0L);
|
|
||||||
json.put("status", status);
|
|
||||||
|
|
||||||
JSONArray history = json.getJSONArray("history");
|
JSONArray history = json.getJSONArray("history");
|
||||||
history.put(new JSONObject().put("type", "unban").put("reason", reason).put("date",new Date().getTime()).put("by", sender.getIdLong()));
|
history.put(new JSONObject()
|
||||||
json.put("history", history);
|
.put("type", "unban")
|
||||||
|
.put("reason", reason)
|
||||||
|
.put("date",new Date().getTime())
|
||||||
|
.put("by", sender.getIdLong())
|
||||||
|
);
|
||||||
|
|
||||||
table.setData(guild.getIdLong(), target.getIdLong(), json.toString());
|
table.setData(guild.getIdLong(), target.getIdLong(), history, "None", 0L);
|
||||||
|
userTable.setData(target.getIdLong(), target.getName(), Integer.parseInt(target.getDiscriminator()));
|
||||||
Ken.getInstance().getDatabase().getUserTable().setData(target.getIdLong(), target.getName(), Integer.parseInt(target.getDiscriminator()));
|
|
||||||
|
|
||||||
PrivateChannel channel = target.openPrivateChannel().complete();
|
PrivateChannel channel = target.openPrivateChannel().complete();
|
||||||
if(channel != null){
|
if(channel != null){
|
||||||
|
|
|
@ -10,6 +10,7 @@ import net.tylermurphy.ken.command.annotation.Command;
|
||||||
import net.tylermurphy.ken.command.annotation.Option;
|
import net.tylermurphy.ken.command.annotation.Option;
|
||||||
import net.tylermurphy.ken.command.annotation.Requirement;
|
import net.tylermurphy.ken.command.annotation.Requirement;
|
||||||
import net.tylermurphy.ken.database.ModerationTable;
|
import net.tylermurphy.ken.database.ModerationTable;
|
||||||
|
import net.tylermurphy.ken.database.UserTable;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
@ -35,29 +36,25 @@ public class UnMute {
|
||||||
return Response.error("User is not muted");
|
return Response.error("User is not muted");
|
||||||
}
|
}
|
||||||
|
|
||||||
ModerationTable table = Ken.getInstance().getDatabase().getModerationTable();
|
|
||||||
String data = table.getData(guild.getIdLong(), target.getIdLong());
|
|
||||||
JSONObject json = table.updateData(data);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
guild.removeTimeout(target).queue();
|
guild.removeTimeout(target).queue();
|
||||||
} catch (Exception e){
|
} catch (Exception e){
|
||||||
return Response.error("Failed to unmute user");
|
return Response.error("Failed to unmute user");
|
||||||
}
|
}
|
||||||
|
|
||||||
JSONObject status = json.getJSONObject("status");
|
ModerationTable table = Ken.getInstance().getDatabase().getModerationTable();
|
||||||
status.put("type", "None");
|
UserTable userTable = Ken.getInstance().getDatabase().getUserTable();
|
||||||
status.put("reason", "");
|
JSONObject json = table.getData(guild.getIdLong(), target.getUser().getIdLong());
|
||||||
status.put("until", 0L);
|
|
||||||
json.put("status", status);
|
|
||||||
|
|
||||||
JSONArray history = json.getJSONArray("history");
|
JSONArray history = json.getJSONArray("history");
|
||||||
history.put(new JSONObject().put("type", "unmute").put("reason", reason).put("date",new Date().getTime()).put("by", sender.getIdLong()));
|
history.put(new JSONObject()
|
||||||
json.put("history", history);
|
.put("type", "unmute")
|
||||||
|
.put("reason", reason)
|
||||||
|
.put("date",new Date().getTime())
|
||||||
|
.put("by", sender.getIdLong())
|
||||||
|
);
|
||||||
|
|
||||||
table.setData(guild.getIdLong(), target.getIdLong(), json.toString());
|
table.setData(guild.getIdLong(), target.getUser().getIdLong(), history, "None", 0L);
|
||||||
|
userTable.setData(target.getIdLong(), target.getUser().getName(), Integer.parseInt(target.getUser().getDiscriminator()));
|
||||||
Ken.getInstance().getDatabase().getUserTable().setData(target.getIdLong(), target.getUser().getName(), Integer.parseInt(target.getUser().getDiscriminator()));
|
|
||||||
|
|
||||||
PrivateChannel channel = target.getUser().openPrivateChannel().complete();
|
PrivateChannel channel = target.getUser().openPrivateChannel().complete();
|
||||||
if(channel != null){
|
if(channel != null){
|
||||||
|
|
|
@ -12,6 +12,7 @@ import net.tylermurphy.ken.command.annotation.Command;
|
||||||
import net.tylermurphy.ken.command.Response;
|
import net.tylermurphy.ken.command.Response;
|
||||||
import net.tylermurphy.ken.music.GuildMusicManager;
|
import net.tylermurphy.ken.music.GuildMusicManager;
|
||||||
import net.tylermurphy.ken.music.PlayerManager;
|
import net.tylermurphy.ken.music.PlayerManager;
|
||||||
|
import net.tylermurphy.ken.util.Checks;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -35,13 +36,12 @@ public class Queue {
|
||||||
PlayerManager playerManager = Ken.getInstance().getPlayerManager();
|
PlayerManager playerManager = Ken.getInstance().getPlayerManager();
|
||||||
GuildMusicManager musicManager = playerManager.getGuildMusicManager(guild);
|
GuildMusicManager musicManager = playerManager.getGuildMusicManager(guild);
|
||||||
BlockingQueue<AudioTrack> queue = musicManager.scheduler.getQueue();
|
BlockingQueue<AudioTrack> queue = musicManager.scheduler.getQueue();
|
||||||
int page;
|
|
||||||
|
try { Checks.hasPagedEmbed(message); }
|
||||||
|
catch (RuntimeException e) { return Response.error(e.getMessage()); }
|
||||||
|
|
||||||
|
int page = Integer.parseInt(message.getEmbeds().get(0).getFooter().getText().split("/")[0].substring(5));
|
||||||
int pages = (queue.size()-1)/10+1;
|
int pages = (queue.size()-1)/10+1;
|
||||||
if (message != null && message.getEmbeds().size() > 0 && message.getEmbeds().get(0) != null) {
|
|
||||||
page = Integer.parseInt(message.getEmbeds().get(0).getFooter().getText().split("/")[0].substring(5));
|
|
||||||
} else {
|
|
||||||
page = 0;
|
|
||||||
}
|
|
||||||
if(id.equals("previous"))
|
if(id.equals("previous"))
|
||||||
page = page - 1 < 1 ? pages : page - 1;
|
page = page - 1 < 1 ? pages : page - 1;
|
||||||
else
|
else
|
||||||
|
|
|
@ -12,6 +12,7 @@ import net.tylermurphy.ken.command.Response;
|
||||||
import net.tylermurphy.ken.command.annotation.ButtonCallback;
|
import net.tylermurphy.ken.command.annotation.ButtonCallback;
|
||||||
import net.tylermurphy.ken.command.annotation.Command;
|
import net.tylermurphy.ken.command.annotation.Command;
|
||||||
import net.tylermurphy.ken.command.annotation.Option;
|
import net.tylermurphy.ken.command.annotation.Option;
|
||||||
|
import net.tylermurphy.ken.util.Checks;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
@ -51,13 +52,13 @@ public class nHentai {
|
||||||
|
|
||||||
@ButtonCallback(name="nhentai")
|
@ButtonCallback(name="nhentai")
|
||||||
public Response onButton(String button_id, Message message){
|
public Response onButton(String button_id, Message message){
|
||||||
int page, id;
|
|
||||||
if (message != null && message.getEmbeds().size() > 0 && message.getEmbeds().get(0) != null) {
|
try { Checks.hasPagedEmbed(message); }
|
||||||
page = Integer.parseInt(message.getEmbeds().get(0).getFooter().getText().split("/")[0].substring(5));
|
catch (RuntimeException e) { return Response.error(e.getMessage()); }
|
||||||
id = Integer.parseInt(message.getEmbeds().get(0).getDescription().substring(4));
|
|
||||||
} else {
|
int page = Integer.parseInt(message.getEmbeds().get(0).getFooter().getText().split("/")[0].substring(5));
|
||||||
return Response.error("Embed is missing, please resend command");
|
int id = Integer.parseInt(message.getEmbeds().get(0).getDescription().substring(4));
|
||||||
}
|
|
||||||
Comic comic = cache.get(id);
|
Comic comic = cache.get(id);
|
||||||
if(comic == null) comic = request(id+"");
|
if(comic == null) comic = request(id+"");
|
||||||
if(comic == null) return Response.error("Failed to fetch comic data");
|
if(comic == null) return Response.error("Failed to fetch comic data");
|
||||||
|
|
|
@ -7,6 +7,7 @@ import net.tylermurphy.ken.command.Response;
|
||||||
import net.tylermurphy.ken.command.annotation.ButtonCallback;
|
import net.tylermurphy.ken.command.annotation.ButtonCallback;
|
||||||
import net.tylermurphy.ken.command.annotation.Command;
|
import net.tylermurphy.ken.command.annotation.Command;
|
||||||
import net.tylermurphy.ken.command.annotation.SelectMenuCallback;
|
import net.tylermurphy.ken.command.annotation.SelectMenuCallback;
|
||||||
|
import net.tylermurphy.ken.util.Checks;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
@ -32,13 +33,11 @@ public class Roles {
|
||||||
|
|
||||||
@ButtonCallback(name="roles")
|
@ButtonCallback(name="roles")
|
||||||
public Response onButton(Guild guild, String id, Message message){
|
public Response onButton(Guild guild, String id, Message message){
|
||||||
int page;
|
|
||||||
if(message == null) return Response.delete();
|
try { Checks.hasPagedEmbed(message); }
|
||||||
if (message.getEmbeds().size() > 0 && message.getEmbeds().get(0) != null) {
|
catch (RuntimeException e) { return Response.error(e.getMessage()); }
|
||||||
page = Integer.parseInt(message.getEmbeds().get(0).getFooter().getText().split("/")[0].substring(5));
|
|
||||||
} else {
|
int page = Integer.parseInt(message.getEmbeds().get(0).getFooter().getText().split("/")[0].substring(5));
|
||||||
page = 1;
|
|
||||||
}
|
|
||||||
int pages = Ken.getInstance().getDatabase().getSelfRoleData().getPages(guild.getIdLong());
|
int pages = Ken.getInstance().getDatabase().getSelfRoleData().getPages(guild.getIdLong());
|
||||||
if(id.equals("previous"))
|
if(id.equals("previous"))
|
||||||
page = page - 1 < 1 ? pages : page - 1;
|
page = page - 1 < 1 ? pages : page - 1;
|
||||||
|
|
|
@ -19,7 +19,8 @@ public class ModerationTable {
|
||||||
CREATE TABLE IF NOT EXISTS moderation_data (
|
CREATE TABLE IF NOT EXISTS moderation_data (
|
||||||
guild_id BIGINT NOT NULL,
|
guild_id BIGINT NOT NULL,
|
||||||
user_id BIGINT NOT NULL,
|
user_id BIGINT NOT NULL,
|
||||||
data TEXT NOT NULL,
|
history TEXT NOT NULL,
|
||||||
|
status VARCHAR(10) NOT NULL,
|
||||||
until BIGINT NOT NULL,
|
until BIGINT NOT NULL,
|
||||||
PRIMARY KEY (guild_id,user_id)
|
PRIMARY KEY (guild_id,user_id)
|
||||||
);""";
|
);""";
|
||||||
|
@ -33,27 +34,39 @@ public class ModerationTable {
|
||||||
this.database = database;
|
this.database = database;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getData(long guildId, long userId){
|
public JSONObject getData(long guildId, long userId){
|
||||||
String sql = "SELECT * FROM moderation_data WHERE guild_id=? AND user_id=?";
|
String sql = "SELECT * FROM moderation_data WHERE guild_id=? AND user_id=?";
|
||||||
try(Connection connection = database.connect(); PreparedStatement statement = connection.prepareStatement(sql)) {
|
try(Connection connection = database.connect(); PreparedStatement statement = connection.prepareStatement(sql)) {
|
||||||
statement.setLong(1, guildId);
|
statement.setLong(1, guildId);
|
||||||
statement.setLong(2, userId);
|
statement.setLong(2, userId);
|
||||||
ResultSet rs = statement.executeQuery();
|
ResultSet rs = statement.executeQuery();
|
||||||
if(rs.next()) return rs.getString("data");
|
if(rs.next()) {
|
||||||
else return null;
|
JSONObject data = new JSONObject();
|
||||||
|
data.put("history", new JSONArray(rs.getString("history")));
|
||||||
|
data.put("status", rs.getString("status"));
|
||||||
|
data.put("until", rs.getLong("until"));
|
||||||
|
return data;
|
||||||
|
} else {
|
||||||
|
JSONObject data = new JSONObject();
|
||||||
|
data.put("history", new JSONArray());
|
||||||
|
data.put("status", "None");
|
||||||
|
data.put("until", 0L);
|
||||||
|
return data;
|
||||||
|
}
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
Ken.getInstance().getLogger().error("SQL Error: " + e.getMessage());
|
Ken.getInstance().getLogger().error("SQL Error: " + e.getMessage());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean setData(long guildId, long userId, String data) {
|
public boolean setData(long guildId, long userId, JSONArray history, String status, long until) {
|
||||||
String sql = "INSERT OR REPLACE INTO moderation_data (guild_id, user_id, data, until) VALUES(?,?,?,?)";
|
String sql = "INSERT OR REPLACE INTO moderation_data (guild_id, user_id, history, status, until) VALUES(?,?,?,?,?)";
|
||||||
try(Connection connection = database.connect(); PreparedStatement statement = connection.prepareStatement(sql)) {
|
try(Connection connection = database.connect(); PreparedStatement statement = connection.prepareStatement(sql)) {
|
||||||
statement.setLong(1, guildId);
|
statement.setLong(1, guildId);
|
||||||
statement.setLong(2, userId);
|
statement.setLong(2, userId);
|
||||||
statement.setString(3, data);
|
statement.setString(3, history.toString());
|
||||||
statement.setLong(4, new JSONObject(data).getJSONObject("status").getLong("until"));
|
statement.setString(4, status);
|
||||||
|
statement.setLong(5, until);
|
||||||
return statement.executeUpdate() != 0;
|
return statement.executeUpdate() != 0;
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
Ken.getInstance().getLogger().error("SQL Error: " + e.getMessage());
|
Ken.getInstance().getLogger().error("SQL Error: " + e.getMessage());
|
||||||
|
@ -68,7 +81,7 @@ public class ModerationTable {
|
||||||
statement.setLong(1, date);
|
statement.setLong(1, date);
|
||||||
ResultSet rs = statement.executeQuery();
|
ResultSet rs = statement.executeQuery();
|
||||||
while (rs.next()){
|
while (rs.next()){
|
||||||
String[] data = {String.valueOf(rs.getLong("guild_id")), String.valueOf(rs.getLong("user_id")), rs.getString("data")};
|
String[] data = {String.valueOf(rs.getLong("guild_id")), String.valueOf(rs.getLong("user_id")), rs.getString("history"), rs.getString("status"), String.valueOf(rs.getLong("until"))};
|
||||||
store.add(data);
|
store.add(data);
|
||||||
}
|
}
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
|
@ -77,12 +90,4 @@ public class ModerationTable {
|
||||||
store.forEach(callback);
|
store.forEach(callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
public JSONObject updateData(String data) {
|
|
||||||
JSONObject object = data == null ? new JSONObject() : new JSONObject(data);
|
|
||||||
if(!object.has("history")) object.put("history", new JSONArray());
|
|
||||||
if(!object.has("roles")) object.put("roles", new JSONArray());
|
|
||||||
if(!object.has("status")) object.put("status", new JSONObject().put("type","None").put("until", 0L).put("reason",""));
|
|
||||||
return object;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package net.tylermurphy.ken.util;
|
package net.tylermurphy.ken.util;
|
||||||
|
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
|
import net.dv8tion.jda.api.entities.Message;
|
||||||
|
import net.dv8tion.jda.api.entities.MessageEmbed;
|
||||||
import net.dv8tion.jda.api.entities.Role;
|
import net.dv8tion.jda.api.entities.Role;
|
||||||
|
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
|
@ -9,6 +11,28 @@ import java.util.List;
|
||||||
|
|
||||||
public class Checks {
|
public class Checks {
|
||||||
|
|
||||||
|
public static void hasPagedEmbed(Message message) {
|
||||||
|
if(message == null || message.getEmbeds().size() < 1)
|
||||||
|
throw new RuntimeException("Message is missing");
|
||||||
|
MessageEmbed temp = message.getEmbeds().get(0);
|
||||||
|
if(temp == null || temp.getDescription() == null || temp.getFooter() == null)
|
||||||
|
throw new RuntimeException("Embed is missing");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void hasPermission(Member sender, Member target) {
|
||||||
|
if(sender == target)
|
||||||
|
throw new RuntimeException("You are not allowed to do this to yourself");
|
||||||
|
Role low = Checks.getHighestRole(target);
|
||||||
|
Role high = Checks.getHighestRole(sender);
|
||||||
|
Role self = Checks.getHighestRole(sender.getGuild().getSelfMember());
|
||||||
|
if(!Checks.getRolePermission(high, low))
|
||||||
|
throw new RuntimeException("You need a higher role than the target");
|
||||||
|
if(!Checks.getRolePermission(self, low))
|
||||||
|
throw new RuntimeException("I need a higher role than the target");
|
||||||
|
if(sender.getGuild().getOwner() == target)
|
||||||
|
throw new RuntimeException("You cannot to this to the server owner");
|
||||||
|
}
|
||||||
|
|
||||||
public static Role getHighestRole(Member member) {
|
public static Role getHighestRole(Member member) {
|
||||||
if(member == null) {
|
if(member == null) {
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -24,10 +24,10 @@ public class ModerationChecker {
|
||||||
Ken.getInstance().getDatabase().getModerationTable().callOverdue(new Date().getTime(), data -> {
|
Ken.getInstance().getDatabase().getModerationTable().callOverdue(new Date().getTime(), data -> {
|
||||||
long guildId = Long.parseLong(data[0]);
|
long guildId = Long.parseLong(data[0]);
|
||||||
long userId = Long.parseLong(data[1]);
|
long userId = Long.parseLong(data[1]);
|
||||||
JSONObject json = new JSONObject(data[2]);
|
JSONArray history = new JSONArray(data[2]);
|
||||||
JSONObject status = json.getJSONObject("status");
|
String status = data[3];
|
||||||
String type = status.getString("type");
|
long until = Long.parseLong(data[4]);
|
||||||
if(!type.equals("temp-ban")) return;
|
if(!status.equals("tempban")) return;
|
||||||
Guild guild = Ken.getInstance().getGuildById(guildId);
|
Guild guild = Ken.getInstance().getGuildById(guildId);
|
||||||
if(guild == null) return;
|
if(guild == null) return;
|
||||||
List<Guild.Ban> bans = guild.retrieveBanList().complete();
|
List<Guild.Ban> bans = guild.retrieveBanList().complete();
|
||||||
|
@ -46,15 +46,8 @@ public class ModerationChecker {
|
||||||
.appendDescription("`Reason:` Ban period ended");
|
.appendDescription("`Reason:` Ban period ended");
|
||||||
channel.sendMessageEmbeds(builder.build()).queue();
|
channel.sendMessageEmbeds(builder.build()).queue();
|
||||||
}
|
}
|
||||||
status.put("type", "None");
|
|
||||||
status.put("reason", "");
|
|
||||||
status.put("until", 0L);
|
|
||||||
|
|
||||||
JSONArray history = json.getJSONArray("history");
|
|
||||||
history.put(new JSONObject().put("type", "unban").put("reason", "Ban Period Ended").put("date",new Date().getTime()).put("by", guild.getSelfMember().getIdLong()));
|
history.put(new JSONObject().put("type", "unban").put("reason", "Ban Period Ended").put("date",new Date().getTime()).put("by", guild.getSelfMember().getIdLong()));
|
||||||
json.put("history", history);
|
Ken.getInstance().getDatabase().getModerationTable().setData(guildId, userId, history, "None", 0L);
|
||||||
json.put("status", status);
|
|
||||||
Ken.getInstance().getDatabase().getModerationTable().setData(guildId, userId, json.toString());
|
|
||||||
} catch (ErrorResponseException ignored) {}
|
} catch (ErrorResponseException ignored) {}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue