v7
This commit is contained in:
parent
33f0ab31b1
commit
039cb6258f
8 changed files with 156 additions and 163 deletions
|
@ -13,18 +13,13 @@ import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||||
import net.dv8tion.jda.api.interactions.InteractionHook;
|
import net.dv8tion.jda.api.interactions.InteractionHook;
|
||||||
import net.dv8tion.jda.api.interactions.callbacks.IReplyCallback;
|
import net.dv8tion.jda.api.interactions.callbacks.IReplyCallback;
|
||||||
import net.dv8tion.jda.api.interactions.commands.OptionMapping;
|
import net.dv8tion.jda.api.interactions.commands.OptionMapping;
|
||||||
import net.dv8tion.jda.api.interactions.components.ActionComponent;
|
|
||||||
import net.dv8tion.jda.api.interactions.components.ActionRow;
|
import net.dv8tion.jda.api.interactions.components.ActionRow;
|
||||||
import net.dv8tion.jda.api.interactions.components.LayoutComponent;
|
import net.dv8tion.jda.api.interactions.components.LayoutComponent;
|
||||||
import net.dv8tion.jda.api.interactions.components.buttons.Button;
|
import net.dv8tion.jda.api.interactions.components.buttons.Button;
|
||||||
import net.dv8tion.jda.api.interactions.components.selections.SelectMenu;
|
import net.dv8tion.jda.api.interactions.components.selections.SelectMenu;
|
||||||
import net.dv8tion.jda.api.interactions.components.selections.SelectOption;
|
|
||||||
import net.dv8tion.jda.api.requests.restaction.WebhookMessageEditAction;
|
|
||||||
import net.dv8tion.jda.api.requests.restaction.interactions.ReplyCallbackAction;
|
import net.dv8tion.jda.api.requests.restaction.interactions.ReplyCallbackAction;
|
||||||
import net.dv8tion.jda.api.utils.FileUpload;
|
import net.dv8tion.jda.api.utils.FileUpload;
|
||||||
import net.tylermurphy.ken.Ken;
|
import net.tylermurphy.ken.Ken;
|
||||||
import net.tylermurphy.ken.command.Register;
|
|
||||||
import net.tylermurphy.ken.command.Response;
|
|
||||||
import net.tylermurphy.ken.command.fun.*;
|
import net.tylermurphy.ken.command.fun.*;
|
||||||
import net.tylermurphy.ken.command.main.*;
|
import net.tylermurphy.ken.command.main.*;
|
||||||
import net.tylermurphy.ken.command.music.*;
|
import net.tylermurphy.ken.command.music.*;
|
||||||
|
@ -134,7 +129,6 @@ public class Responder extends ListenerAdapter {
|
||||||
.setTitle(":x: **Error**")
|
.setTitle(":x: **Error**")
|
||||||
.setDescription(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
.setDescription(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
||||||
event.replyEmbeds(builder.build()).setEphemeral(true).queue();
|
event.replyEmbeds(builder.build()).setEphemeral(true).queue();
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -234,7 +228,7 @@ public class Responder extends ListenerAdapter {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void reply(Response response, IReplyCallback event){
|
private void reply(Response response, IReplyCallback event){
|
||||||
if(response.error()) {
|
if(response.isError()) {
|
||||||
EmbedBuilder builder = Ken.getInstance().getDefaultEmbed()
|
EmbedBuilder builder = Ken.getInstance().getDefaultEmbed()
|
||||||
.setColor(Color.RED)
|
.setColor(Color.RED)
|
||||||
.setDescription(response.getMessage());
|
.setDescription(response.getMessage());
|
||||||
|
@ -248,18 +242,18 @@ public class Responder extends ListenerAdapter {
|
||||||
}
|
}
|
||||||
if(response.hasButtons()) message = message.addActionRow(response.getButtons());
|
if(response.hasButtons()) message = message.addActionRow(response.getButtons());
|
||||||
if(response.hasSelectMenu()) message = message.addActionRow(response.getSelectMenu());
|
if(response.hasSelectMenu()) message = message.addActionRow(response.getSelectMenu());
|
||||||
if(response.hasFile()) message = message.addFiles(FileUpload.fromData(response.getFile()));
|
if(response.hasFile()) message = message.addFiles(FileUpload.fromData(response.getFile(),response.getFileName()));
|
||||||
message.setEphemeral(response.isHidden()).queue();
|
message.setEphemeral(response.isHidden()).queue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void edit(Response response, InteractionHook hook){
|
private void edit(Response response, InteractionHook hook){
|
||||||
if(response.error()) {
|
if(response.isError()) {
|
||||||
EmbedBuilder builder = Ken.getInstance().getDefaultEmbed()
|
EmbedBuilder builder = Ken.getInstance().getDefaultEmbed()
|
||||||
.setColor(Color.RED)
|
.setColor(Color.RED)
|
||||||
.setDescription(response.getMessage());
|
.setDescription(response.getMessage());
|
||||||
hook.sendMessageEmbeds(builder.build()).queue();
|
hook.sendMessageEmbeds(builder.build()).queue();
|
||||||
} else if(response.remove()) {
|
} else if(response.isDelete()) {
|
||||||
hook.deleteOriginal().queue();
|
hook.deleteOriginal().queue();
|
||||||
} else {
|
} else {
|
||||||
if(response.hasEmbed()) {
|
if(response.hasEmbed()) {
|
||||||
|
|
|
@ -4,74 +4,88 @@ import net.dv8tion.jda.api.entities.MessageEmbed;
|
||||||
import net.dv8tion.jda.api.interactions.components.buttons.Button;
|
import net.dv8tion.jda.api.interactions.components.buttons.Button;
|
||||||
import net.dv8tion.jda.api.interactions.components.selections.SelectMenu;
|
import net.dv8tion.jda.api.interactions.components.selections.SelectMenu;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class Response {
|
public class Response {
|
||||||
|
|
||||||
private final String message;
|
private String message;
|
||||||
private final String type;
|
private String type;
|
||||||
private final MessageEmbed[] embeds;
|
|
||||||
private final List<Button> buttons;
|
private MessageEmbed[] embeds;
|
||||||
private final SelectMenu.Builder menu;
|
|
||||||
private final File file;
|
private List<Button> buttons;
|
||||||
|
private SelectMenu menu;
|
||||||
|
|
||||||
|
private byte[] data;
|
||||||
|
private String fileName;
|
||||||
|
|
||||||
private boolean hidden = false;
|
private boolean hidden = false;
|
||||||
|
|
||||||
private Response(String type, String message, File file, MessageEmbed... embed){
|
|
||||||
this.type = type;
|
|
||||||
this.message = message;
|
|
||||||
this.embeds = embed;
|
|
||||||
this.file = file;
|
|
||||||
this.buttons = new ArrayList<>();
|
|
||||||
menu = SelectMenu.create("null");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Response error(String message){
|
public static Response error(String message){
|
||||||
return new Response("error", message, null, null);
|
Response response = new Response();
|
||||||
|
response.type = "error";
|
||||||
|
response.message = message;
|
||||||
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Response success(String message){
|
public static Response success(String message){
|
||||||
return new Response("success", message, null, null);
|
Response response = new Response();
|
||||||
|
response.type = "success";
|
||||||
|
response.message = message;
|
||||||
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Response success(String message, File file){
|
public static Response success(MessageEmbed... embeds){
|
||||||
return new Response("success", message, file, null);
|
Response response = new Response();
|
||||||
|
response.type = "success";
|
||||||
|
response.embeds = embeds;
|
||||||
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Response success(MessageEmbed... embed){
|
public static Response delete() {
|
||||||
return new Response("success", "", null, embed);
|
Response response = new Response();
|
||||||
|
response.type = "delete";
|
||||||
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Response delete() { return new Response("delete", "", null, null); }
|
|
||||||
|
|
||||||
public Response addPrimaryButton(String callback, String id, String label){
|
public Response addPrimaryButton(String callback, String id, String label){
|
||||||
|
if(buttons == null) buttons = new ArrayList<>();
|
||||||
buttons.add(Button.primary(callback + "_" + id ,label));
|
buttons.add(Button.primary(callback + "_" + id ,label));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Response addSecondaryButton(String callback, String id, String label){
|
public Response addSecondaryButton(String callback, String id, String label){
|
||||||
|
if(buttons == null) buttons = new ArrayList<>();
|
||||||
buttons.add(Button.secondary(callback + "_" + id ,label));
|
buttons.add(Button.secondary(callback + "_" + id ,label));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Response addSuccessButton(String callback, String id, String label){
|
public Response addSuccessButton(String callback, String id, String label){
|
||||||
|
if(buttons == null) buttons = new ArrayList<>();
|
||||||
buttons.add(Button.success(callback + "_" + id ,label));
|
buttons.add(Button.success(callback + "_" + id ,label));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Response addDangerButton(String callback, String id, String label){
|
public Response addDangerButton(String callback, String id, String label){
|
||||||
|
if(buttons == null) buttons = new ArrayList<>();
|
||||||
buttons.add(Button.danger(callback + "_" + id ,label));
|
buttons.add(Button.danger(callback + "_" + id ,label));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Response addSelectMenu(String callback, String id, List<String> options){
|
public Response addSelectMenu(String callback, String id, List<String> options){
|
||||||
menu.setId(callback + "_" + id);
|
SelectMenu.Builder builder = SelectMenu.create(callback + "_" + id);
|
||||||
for(int i=0; i<options.size(); i = i + 2) {
|
for(int i=0; i<options.size(); i = i + 2) {
|
||||||
menu.addOption(options.get(i), options.get(i+1));
|
builder.addOption(options.get(i), options.get(i+1));
|
||||||
}
|
}
|
||||||
|
menu = builder.build();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Response setFile(byte[] data, String name){
|
||||||
|
this.data = data;
|
||||||
|
this.fileName = name;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,21 +94,21 @@ public class Response {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean error(){
|
public boolean isError(){
|
||||||
return type.equals("error");
|
return type.equals("error");
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean remove() { return type.equals("delete"); }
|
public boolean isDelete() { return type.equals("delete"); }
|
||||||
|
|
||||||
|
public boolean isHidden() { return hidden; }
|
||||||
|
|
||||||
public boolean hasEmbed() { return embeds != null; }
|
public boolean hasEmbed() { return embeds != null; }
|
||||||
|
|
||||||
public boolean hasFile() { return file != null; }
|
public boolean hasFile() { return data != null; }
|
||||||
|
|
||||||
public boolean hasButtons() { return !buttons.isEmpty(); }
|
public boolean hasButtons() { return buttons != null; }
|
||||||
|
|
||||||
public boolean hasSelectMenu() { return !menu.getId().equals("null"); }
|
public boolean hasSelectMenu() { return menu != null; }
|
||||||
|
|
||||||
public boolean isHidden() { return hidden; }
|
|
||||||
|
|
||||||
public Button[] getButtons() {
|
public Button[] getButtons() {
|
||||||
Button[] arr = new Button[buttons.size()];
|
Button[] arr = new Button[buttons.size()];
|
||||||
|
@ -103,11 +117,15 @@ public class Response {
|
||||||
}
|
}
|
||||||
|
|
||||||
public SelectMenu getSelectMenu(){
|
public SelectMenu getSelectMenu(){
|
||||||
return menu.build();
|
return menu;
|
||||||
}
|
}
|
||||||
|
|
||||||
public File getFile(){
|
public byte[] getFile(){
|
||||||
return file;
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFileName(){
|
||||||
|
return fileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getMessage(){
|
public String getMessage(){
|
||||||
|
|
|
@ -16,8 +16,8 @@ public class Eject {
|
||||||
@Option(name="member", description="Server member to eject", type=OptionType.USER, required=true)
|
@Option(name="member", description="Server member to eject", type=OptionType.USER, required=true)
|
||||||
public Response execute(Member sender, List<Object> args){
|
public Response execute(Member sender, List<Object> args){
|
||||||
Member ejected = (Member) args.get(0);
|
Member ejected = (Member) args.get(0);
|
||||||
File file = GifFactory.generateEjectGif(ejected.getUser());
|
byte[] data = GifFactory.generateEjectGif(ejected.getUser());
|
||||||
return Response.success(ejected.getNickname() +" was ejected by "+sender.getNickname(), file);
|
return Response.success(ejected.getEffectiveName() +" was ejected by "+sender.getEffectiveName()).setFile(data, "eject.gif");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,17 +11,15 @@ import net.tylermurphy.ken.command.Response;
|
||||||
|
|
||||||
public class Help {
|
public class Help {
|
||||||
|
|
||||||
private final int PAGES = 5;
|
|
||||||
|
|
||||||
@Command(name="help", description="Gets information about all the commands in the plugin")
|
@Command(name="help", description="Gets information about all the commands in the plugin")
|
||||||
public Response execute(Member sender){
|
public Response execute(Member sender){
|
||||||
return Response.success(getPage(sender, 1)).addSecondaryButton("help", "previous", "Previous").addSecondaryButton("help", "next", "Next");
|
return Response.success(pageEmbeds[0].setFooter("Page "+1+"/"+pageEmbeds.length).build()).addSecondaryButton("help", "previous", "Previous").addSecondaryButton("help", "next", "Next").addDangerButton("exit","exit","Exit");
|
||||||
}
|
}
|
||||||
|
|
||||||
@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;
|
int page;
|
||||||
int pages = PAGES;
|
int pages = pageEmbeds.length;
|
||||||
if (message != null && message.getEmbeds().size() > 0 && message.getEmbeds().get(0) != null) {
|
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));
|
page = Integer.parseInt(message.getEmbeds().get(0).getFooter().getText().split("/")[0].substring(5));
|
||||||
} else {
|
} else {
|
||||||
|
@ -31,66 +29,67 @@ public class Help {
|
||||||
page = page - 1 < 1 ? pages : page - 1;
|
page = page - 1 < 1 ? pages : page - 1;
|
||||||
else
|
else
|
||||||
page = page + 1 > pages ? 1 : page + 1;
|
page = page + 1 > pages ? 1 : page + 1;
|
||||||
return Response.success(getPage(sender, page));
|
return Response.success(pageEmbeds[page-1].setFooter("Page "+page+"/"+pageEmbeds.length).build());
|
||||||
}
|
}
|
||||||
|
|
||||||
private MessageEmbed getPage(Member sender, int page) {
|
String name = Ken.getInstance().getConfig().getString("botName");
|
||||||
String name = Ken.getInstance().getConfig().getString("botName");
|
String supportServer = Ken.getInstance().getConfig().getString("supportServer");
|
||||||
String supportServer = Ken.getInstance().getConfig().getString("supportServer");
|
EmbedBuilder[] pageEmbeds = new EmbedBuilder[]{
|
||||||
EmbedBuilder[] embeds = new EmbedBuilder[]{
|
Ken.getInstance().getDefaultEmbed()
|
||||||
Ken.getInstance().getDefaultEmbed()
|
.setAuthor("Command List")
|
||||||
.setAuthor(name + " Command List", sender.getUser().getAvatarUrl())
|
.appendDescription(
|
||||||
.appendDescription(
|
"These are all the commands that are included with "+name+"\n" +
|
||||||
"These are all the commands that are included with "+name+"\n" +
|
"Read below to see what each command does, and what parameters the\n" +
|
||||||
"Read below to see what each command does, and what parameters the\n" +
|
"command requires. Any questions? Join our [discord support server](https://discord.gg/"+supportServer+")"
|
||||||
"command requires. Any questions? Join our [discord support server](https://discord.gg/"+supportServer+")"
|
),
|
||||||
).setFooter("Page "+page+"/"+PAGES),
|
Ken.getInstance().getDefaultEmbed()
|
||||||
Ken.getInstance().getDefaultEmbed()
|
.setAuthor("Command List")
|
||||||
.setAuthor(name + " Command List", sender.getUser().getAvatarUrl())
|
.setTitle(":pen_ballpoint: **Main Commands**")
|
||||||
.setTitle(":pen_ballpoint: **Main Commands**")
|
.appendDescription("**/help** Gives a list of commands\n")
|
||||||
.appendDescription("**/help** Gives a list of commands\n")
|
.appendDescription("**/purge <amount>** Purges an amount of messages from a channel\n"),
|
||||||
.appendDescription("**/purge <amount>** Purges an amount of messages from a channel\n")
|
Ken.getInstance().getDefaultEmbed()
|
||||||
.setFooter("Page "+page+"/"+PAGES),
|
.setAuthor("Command List")
|
||||||
Ken.getInstance().getDefaultEmbed()
|
.setTitle(":musical_note: **Music Commands**")
|
||||||
.setAuthor(name + " Command List", sender.getUser().getAvatarUrl())
|
.appendDescription("**/play <query>** Plays a song in a voice channel\n")
|
||||||
.setTitle(":musical_note: **Music Commands**")
|
.appendDescription("**/join** Make the bot join your audio channel\n")
|
||||||
.appendDescription("**/play <query>** Plays a song in a voice channel\n")
|
.appendDescription("**/leave** Make the bot leave your audio channel\n")
|
||||||
.appendDescription("**/join** Make the bot join your audio channel\n")
|
.appendDescription("**/pause** Pause the current playing track\n")
|
||||||
.appendDescription("**/leave** Make the bot leave your audio channel\n")
|
.appendDescription("**/resume** Resume the current paused track\n")
|
||||||
.appendDescription("**/pause** Pause the current playing track\n")
|
.appendDescription("**/stop** Stop the current playing track and clear queue\n")
|
||||||
.appendDescription("**/resume** Resume the current paused track\n")
|
.appendDescription("**/skip** Vote to skip the current track\n")
|
||||||
.appendDescription("**/stop** Stop the current playing track and clear queue\n")
|
.appendDescription("**/forceskip** Force skip the current track\n")
|
||||||
.appendDescription("**/skip** Vote to skip the current track\n")
|
.appendDescription("**/loop** Loop the current track\n")
|
||||||
.appendDescription("**/forceskip** Force skip the current track\n")
|
.appendDescription("**/loopqueue** Loop the current song queue\n")
|
||||||
.appendDescription("**/loop** Loop the current track\n")
|
.appendDescription("**/remove <index>** Remove a song from the queue\n")
|
||||||
.appendDescription("**/loopqueue** Loop the current song queue\n")
|
.appendDescription("**/nowplaying** See what track is currently playing\n")
|
||||||
.appendDescription("**/remove <index>** Remove a song from the queue\n")
|
.appendDescription("**/queue** View the current song queue\n"),
|
||||||
.appendDescription("**/nowplaying** See what track is currently playing\n")
|
Ken.getInstance().getDefaultEmbed()
|
||||||
.appendDescription("**/queue** View the current song queue\n")
|
.setAuthor("Command List")
|
||||||
.setFooter("Page "+page+"/"+PAGES),
|
.setTitle(":game_die: **Game Commands**")
|
||||||
Ken.getInstance().getDefaultEmbed()
|
.appendDescription("**/d6** Roll a d6 die\n")
|
||||||
.setAuthor(name + " Command List", sender.getUser().getAvatarUrl())
|
.appendDescription("**/d8** Roll a d8 die\n")
|
||||||
.setTitle(":game_die: **Game Commands**")
|
.appendDescription("**/d12** Roll a d12 die\n")
|
||||||
.appendDescription("**/d6** Roll a d6 die\n")
|
.appendDescription("**/d20** Roll a d20 die\n")
|
||||||
.appendDescription("**/d8** Roll a d8 die\n")
|
.appendDescription("**/dice <sides>** Roll a dice with set sides\n"),
|
||||||
.appendDescription("**/d12** Roll a d12 die\n")
|
Ken.getInstance().getDefaultEmbed()
|
||||||
.appendDescription("**/d20** Roll a d20 die\n")
|
.setAuthor("Command List")
|
||||||
.appendDescription("**/dice <sides>** Roll a dice with set sides\n")
|
.setTitle(":man_detective: **Self Roles**")
|
||||||
.setFooter("Page "+page+"/"+PAGES),
|
.appendDescription("**/addrolespage <title> <description>** Add a page to the /roles command\n")
|
||||||
Ken.getInstance().getDefaultEmbed()
|
.appendDescription("**/deleterolespage <page>** Remove a page from the /roles command\n")
|
||||||
.setAuthor(name + " Command List", sender.getUser().getAvatarUrl())
|
.appendDescription("**/addrole <role> <page>** Add a role to the /roles command\n")
|
||||||
.setTitle(":underage: **NSFW Commands**")
|
.appendDescription("**/deleterole <role> <page>** Remove a role from the /roles command\n")
|
||||||
.appendDescription("**/hentai <query>** Retrieves a random hentai image\n")
|
.appendDescription("**/roles** Add self roles to yourself\n"),
|
||||||
.appendDescription("**/rule34 <query> <page>** Searches on rule34\n")
|
Ken.getInstance().getDefaultEmbed()
|
||||||
.appendDescription("**/gelbooru <query> <page>** Searches on gelbooru\n")
|
.setAuthor("Command List")
|
||||||
.appendDescription("**/danbooru <query> <page>** Searches on danbooru\n")
|
.setTitle(":underage: **NSFW Commands**")
|
||||||
.appendDescription("**/konachan <query> <page>** Searches on konachan\n")
|
.appendDescription("**/hentai <query>** Retrieves a random hentai image\n")
|
||||||
.appendDescription("**/yandere <query> <page>** Searches on yande.re\n")
|
.appendDescription("**/rule34 <query> <page>** Searches on rule34\n")
|
||||||
.appendDescription("**/e621 <query> <page>** Searches on e621\n")
|
.appendDescription("**/gelbooru <query> <page>** Searches on gelbooru\n")
|
||||||
.appendDescription("**/nhentai <query>** Searches on nhentai\n")
|
.appendDescription("**/danbooru <query> <page>** Searches on danbooru\n")
|
||||||
.setFooter("Page "+page+"/"+PAGES)
|
.appendDescription("**/konachan <query> <page>** Searches on konachan\n")
|
||||||
};
|
.appendDescription("**/yandere <query> <page>** Searches on yande.re\n")
|
||||||
return embeds[page-1].build();
|
.appendDescription("**/e621 <query> <page>** Searches on e621\n")
|
||||||
}
|
.appendDescription("**/nhentai <query>** Searches on nhentai\n"),
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,6 @@ package net.tylermurphy.ken.command.main;
|
||||||
|
|
||||||
import net.dv8tion.jda.api.EmbedBuilder;
|
import net.dv8tion.jda.api.EmbedBuilder;
|
||||||
import net.dv8tion.jda.api.entities.*;
|
import net.dv8tion.jda.api.entities.*;
|
||||||
import net.dv8tion.jda.api.interactions.components.selections.SelectMenu;
|
|
||||||
import net.tylermurphy.ken.Ken;
|
import net.tylermurphy.ken.Ken;
|
||||||
import net.tylermurphy.ken.command.Response;
|
import net.tylermurphy.ken.command.Response;
|
||||||
import net.tylermurphy.ken.command.annotation.ButtonCallback;
|
import net.tylermurphy.ken.command.annotation.ButtonCallback;
|
||||||
|
@ -23,13 +22,18 @@ public class Roles {
|
||||||
return Response.error("Self roles are currently not setup in this server");
|
return Response.error("Self roles are currently not setup in this server");
|
||||||
}
|
}
|
||||||
int pages = Ken.getInstance().getDatabase().getSelfRoleData().getPages(guild.getIdLong());
|
int pages = Ken.getInstance().getDatabase().getSelfRoleData().getPages(guild.getIdLong());
|
||||||
return Response.success(getEmbed(data, 1, pages)).addSecondaryButton("roles", "previous", "Previous").addSecondaryButton("roles", "next", "Next").addDangerButton("roles","exit","Exit").addSelectMenu("roles","select",getRoles(data));
|
return Response.success(getEmbed(data, 1, pages)).addSecondaryButton("roles", "previous", "Previous").addSecondaryButton("roles", "next", "Next").addDangerButton("exit","exit","Exit").addSelectMenu("roles","select",getRoles(data));
|
||||||
|
}
|
||||||
|
|
||||||
|
@ButtonCallback(name="exit")
|
||||||
|
public Response onExit(Message message){
|
||||||
|
return Response.delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
@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;
|
int page;
|
||||||
if(message == null || id.equals("exit")) return Response.delete();
|
if(message == null) return Response.delete();
|
||||||
if (message.getEmbeds().size() > 0 && message.getEmbeds().get(0) != null) {
|
if (message.getEmbeds().size() > 0 && message.getEmbeds().get(0) != null) {
|
||||||
page = Integer.parseInt(message.getEmbeds().get(0).getFooter().getText().split("/")[0].substring(5));
|
page = Integer.parseInt(message.getEmbeds().get(0).getFooter().getText().split("/")[0].substring(5));
|
||||||
} else {
|
} else {
|
||||||
|
@ -44,7 +48,7 @@ public class Roles {
|
||||||
if(data==null){
|
if(data==null){
|
||||||
return Response.error("Self roles are currently not setup in this server");
|
return Response.error("Self roles are currently not setup in this server");
|
||||||
}
|
}
|
||||||
return Response.success(getEmbed(data, page, pages)).addSecondaryButton("roles", "previous", "Previous").addSecondaryButton("roles", "next", "Next").addDangerButton("roles","exit","Exit").addSelectMenu("roles","select",getRoles(data));
|
return Response.success(getEmbed(data, page, pages)).addSecondaryButton("roles", "previous", "Previous").addSecondaryButton("roles", "next", "Next").addDangerButton("exit","exit","Exit").addSelectMenu("roles","select",getRoles(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
@SelectMenuCallback(name="roles")
|
@SelectMenuCallback(name="roles")
|
||||||
|
|
|
@ -25,7 +25,7 @@ public class Queue {
|
||||||
GuildMusicManager musicManager = playerManager.getGuildMusicManager(guild);
|
GuildMusicManager musicManager = playerManager.getGuildMusicManager(guild);
|
||||||
MessageEmbed queue = getQueuePage(musicManager, 1);
|
MessageEmbed queue = getQueuePage(musicManager, 1);
|
||||||
if(queue == null){
|
if(queue == null){
|
||||||
return Response.success("Queue is empty");
|
return Response.error("Queue is empty");
|
||||||
}
|
}
|
||||||
return Response.success(queue).addSecondaryButton("queue", "previous", "Previous").addSecondaryButton("queue", "next", "Next");
|
return Response.success(queue).addSecondaryButton("queue", "previous", "Previous").addSecondaryButton("queue", "next", "Next");
|
||||||
}
|
}
|
||||||
|
@ -34,23 +34,23 @@ public class Queue {
|
||||||
public Response onButton(String id, Message message, Guild guild){
|
public Response onButton(String id, Message message, Guild guild){
|
||||||
PlayerManager playerManager = Ken.getInstance().getPlayerManager();
|
PlayerManager playerManager = Ken.getInstance().getPlayerManager();
|
||||||
GuildMusicManager musicManager = playerManager.getGuildMusicManager(guild);
|
GuildMusicManager musicManager = playerManager.getGuildMusicManager(guild);
|
||||||
int page, pages;
|
BlockingQueue<AudioTrack> queue = musicManager.scheduler.getQueue();
|
||||||
|
int page;
|
||||||
|
int pages = (queue.size()-1)/10+1;
|
||||||
if (message != null && message.getEmbeds().size() > 0 && message.getEmbeds().get(0) != null) {
|
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));
|
page = Integer.parseInt(message.getEmbeds().get(0).getFooter().getText().split("/")[0].substring(5));
|
||||||
pages = Integer.parseInt(message.getEmbeds().get(0).getFooter().getText().split("/")[1]);
|
|
||||||
} else {
|
} else {
|
||||||
page = 0;
|
page = 0;
|
||||||
pages = (musicManager.scheduler.getQueue().size()-1)/10+1;
|
|
||||||
}
|
}
|
||||||
if(id.equals("previous"))
|
if(id.equals("previous"))
|
||||||
page = page - 1 < 1 ? pages : page - 1;
|
page = page - 1 < 1 ? pages : page - 1;
|
||||||
else
|
else
|
||||||
page = page + 1 > pages ? 1 : page + 1;
|
page = page + 1 > pages ? 1 : page + 1;
|
||||||
MessageEmbed queue = getQueuePage(musicManager, page);
|
MessageEmbed embed = getQueuePage(musicManager, page);
|
||||||
if(queue == null){
|
if(embed == null){
|
||||||
return Response.success("Queue is empty");
|
return Response.success("Queue is empty");
|
||||||
}
|
}
|
||||||
return Response.success(queue);
|
return Response.success(embed);
|
||||||
}
|
}
|
||||||
|
|
||||||
private MessageEmbed getQueuePage(GuildMusicManager musicManager, int page){
|
private MessageEmbed getQueuePage(GuildMusicManager musicManager, int page){
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package net.tylermurphy.ken.image;
|
package net.tylermurphy.ken.image;
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.File;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ import net.dv8tion.jda.api.entities.User;
|
||||||
|
|
||||||
public class GifFactory {
|
public class GifFactory {
|
||||||
|
|
||||||
public static File generateEjectGif(User u) {
|
public static byte[] generateEjectGif(User u) {
|
||||||
String message;
|
String message;
|
||||||
if(Math.random() > .5)
|
if(Math.random() > .5)
|
||||||
message = u.getName() + " was An Impostor";
|
message = u.getName() + " was An Impostor";
|
||||||
|
@ -34,9 +34,8 @@ public class GifFactory {
|
||||||
frames[i] = ImageFactory.GenerateEjectFrame(message, Math.min(i, 23), 24, space1, avatar);
|
frames[i] = ImageFactory.GenerateEjectFrame(message, Math.min(i, 23), 24, space1, avatar);
|
||||||
}
|
}
|
||||||
|
|
||||||
int rand = (int)(Math.random()*1000000000);
|
|
||||||
try {
|
try {
|
||||||
return generateFromBI(frames, rand+".gif", 100/12, true);
|
return generateFromBI(frames);
|
||||||
} catch(Exception e) {
|
} catch(Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return null;
|
return null;
|
||||||
|
@ -44,13 +43,14 @@ public class GifFactory {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static File generateFromBI(BufferedImage[] images, String output, int delay, boolean loop)
|
private static byte[] generateFromBI(BufferedImage[] images)
|
||||||
throws IIOException, IOException
|
throws IIOException, IOException
|
||||||
{
|
{
|
||||||
|
System.out.println('e');
|
||||||
ImageWriter gifWriter = getWriter();
|
ImageWriter gifWriter = getWriter();
|
||||||
File outfile = new File(output);
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
ImageOutputStream ios = ImageIO.createImageOutputStream(outfile);
|
ImageOutputStream ios = ImageIO.createImageOutputStream(baos);
|
||||||
IIOMetadata metadata = getMetadata(gifWriter, delay, loop);
|
IIOMetadata metadata = getMetadata(gifWriter);
|
||||||
|
|
||||||
gifWriter.setOutput(ios);
|
gifWriter.setOutput(ios);
|
||||||
gifWriter.prepareWriteSequence(null);
|
gifWriter.prepareWriteSequence(null);
|
||||||
|
@ -62,8 +62,8 @@ public class GifFactory {
|
||||||
|
|
||||||
gifWriter.endWriteSequence();
|
gifWriter.endWriteSequence();
|
||||||
ios.close();
|
ios.close();
|
||||||
|
System.out.println('e');
|
||||||
return outfile;
|
return baos.toByteArray();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ public class GifFactory {
|
||||||
throw new IIOException("GIF writer doesn't exist on this JVM!");
|
throw new IIOException("GIF writer doesn't exist on this JVM!");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IIOMetadata getMetadata(ImageWriter writer, int delay, boolean loop)
|
private static IIOMetadata getMetadata(ImageWriter writer)
|
||||||
throws IIOInvalidTreeException
|
throws IIOInvalidTreeException
|
||||||
{
|
{
|
||||||
ImageTypeSpecifier img_type = ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_ARGB);
|
ImageTypeSpecifier img_type = ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_ARGB);
|
||||||
|
@ -85,12 +85,11 @@ public class GifFactory {
|
||||||
IIOMetadataNode node_tree = (IIOMetadataNode)metadata.getAsTree(native_format);
|
IIOMetadataNode node_tree = (IIOMetadataNode)metadata.getAsTree(native_format);
|
||||||
|
|
||||||
IIOMetadataNode graphics_node = getNode("GraphicControlExtension", node_tree);
|
IIOMetadataNode graphics_node = getNode("GraphicControlExtension", node_tree);
|
||||||
graphics_node.setAttribute("delayTime", String.valueOf(delay));
|
graphics_node.setAttribute("delayTime", String.valueOf(8));
|
||||||
graphics_node.setAttribute("disposalMethod", "none");
|
graphics_node.setAttribute("disposalMethod", "none");
|
||||||
graphics_node.setAttribute("userInputFlag", "FALSE");
|
graphics_node.setAttribute("userInputFlag", "FALSE");
|
||||||
|
|
||||||
if(loop)
|
makeLoopy(node_tree);
|
||||||
makeLoopy(node_tree);
|
|
||||||
|
|
||||||
metadata.setFromTree(native_format, node_tree);
|
metadata.setFromTree(native_format, node_tree);
|
||||||
|
|
||||||
|
@ -104,7 +103,7 @@ public class GifFactory {
|
||||||
|
|
||||||
app_node.setAttribute("applicationID", "NETSCAPE");
|
app_node.setAttribute("applicationID", "NETSCAPE");
|
||||||
app_node.setAttribute("authenticationCode", "2.0");
|
app_node.setAttribute("authenticationCode", "2.0");
|
||||||
app_node.setUserObject(new byte[]{ 0x1, (byte) (0 & 0xFF), (byte) ((0 >> 8) & 0xFF)});
|
app_node.setUserObject(new byte[]{ 0x1, (byte) (0), (byte) ((0) & 0xFF)});
|
||||||
|
|
||||||
app_extensions.appendChild(app_node);
|
app_extensions.appendChild(app_node);
|
||||||
root.appendChild(app_extensions);
|
root.appendChild(app_extensions);
|
||||||
|
@ -112,7 +111,7 @@ public class GifFactory {
|
||||||
|
|
||||||
private static IIOMetadataNode getNode(String node_name, IIOMetadataNode root)
|
private static IIOMetadataNode getNode(String node_name, IIOMetadataNode root)
|
||||||
{
|
{
|
||||||
IIOMetadataNode node = null;
|
IIOMetadataNode node;
|
||||||
|
|
||||||
for (int i = 0; i < root.getLength(); i++)
|
for (int i = 0; i < root.getLength(); i++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -60,33 +60,12 @@ public class ImageFactory {
|
||||||
return rotated;
|
return rotated;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static BufferedImage makeRoundedCorner(BufferedImage image, int cornerRadius) {
|
public static BufferedImage getImageFromURL(String link) {
|
||||||
int w = image.getWidth();
|
|
||||||
int h = image.getHeight();
|
|
||||||
BufferedImage output = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
|
|
||||||
|
|
||||||
Graphics2D g2 = output.createGraphics();
|
|
||||||
|
|
||||||
g2.setComposite(AlphaComposite.Src);
|
|
||||||
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
|
|
||||||
g2.setColor(Color.WHITE);
|
|
||||||
g2.fill(new RoundRectangle2D.Float(0, 0, w, h, cornerRadius, cornerRadius));
|
|
||||||
|
|
||||||
g2.setComposite(AlphaComposite.SrcAtop);
|
|
||||||
g2.drawImage(image, 0, 0, null);
|
|
||||||
|
|
||||||
g2.dispose();
|
|
||||||
|
|
||||||
return output;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static BufferedImage getImageFromURL(String surl) {
|
|
||||||
try {
|
try {
|
||||||
final URL url = new URL(surl);
|
final URL url = new URL(link);
|
||||||
final HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
final HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
||||||
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0");
|
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0");
|
||||||
final BufferedImage image = ImageIO.read(connection.getInputStream());
|
return ImageIO.read(connection.getInputStream());
|
||||||
return image;
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return null;
|
return null;
|
||||||
|
|
Loading…
Reference in a new issue