diff --git a/src/main/java/com/github/nilstrieb/cofig/Config.java b/src/main/java/com/github/nilstrieb/cofig/Config.java index cba5519..4eff96c 100644 --- a/src/main/java/com/github/nilstrieb/cofig/Config.java +++ b/src/main/java/com/github/nilstrieb/cofig/Config.java @@ -5,13 +5,13 @@ import net.dv8tion.jda.api.entities.User; import net.dv8tion.jda.api.events.Event; import java.awt.*; -import java.util.Objects; public class Config { public static final String PREFIX = "kil "; - public static final long NILS_ID = 414755070161453076L; public static final Color DEFAULT_COLOR = new Color(229, 201, 255); + public static final long THIS_ID = 801015254023798825L; + public static final long NILS_ID = 414755070161453076L; public static EmbedBuilder getDefaultEmbed() { EmbedBuilder builder = new EmbedBuilder(); @@ -20,14 +20,23 @@ public class Config { } public static EmbedBuilder getDefaultEmbed(Event event) { - User killua = event.getJDA().getUserById(Config.THIS_ID); - Objects.requireNonNull(killua, "user killua not found"); + User killua = event.getJDA().getUserById(THIS_ID); + if (killua == null) { + event.getJDA().retrieveUserById(THIS_ID).queue(user -> { + System.out.println("[Config] " + user.getAsTag() + " successfully retrieved."); + }); + System.err.println("[Config] This bot user not cached. Retrieving user..."); - - EmbedBuilder builder = new EmbedBuilder(); - builder.setColor(Config.DEFAULT_COLOR). - setThumbnail(killua.getAvatarUrl()) - .setFooter("KilluaBot"); - return builder; + EmbedBuilder builder = new EmbedBuilder(); + builder.setColor(Config.DEFAULT_COLOR) + .setFooter("KilluaBot"); + return builder; + } else { + EmbedBuilder builder = new EmbedBuilder(); + builder.setColor(Config.DEFAULT_COLOR). + setThumbnail(killua.getAvatarUrl()) + .setFooter("KilluaBot"); + return builder; + } } } diff --git a/src/main/java/com/github/nilstrieb/commands/fun/DepartureCommand.java b/src/main/java/com/github/nilstrieb/commands/fun/DepartureCommand.java index 342102d..ea5860c 100644 --- a/src/main/java/com/github/nilstrieb/commands/fun/DepartureCommand.java +++ b/src/main/java/com/github/nilstrieb/commands/fun/DepartureCommand.java @@ -35,6 +35,6 @@ public class DepartureCommand extends Command { japaneseBuilder.addField("", DepartureSong.LYRICS_JAPANESE[i], false); } - reply(event, latinBuilder.build(), japaneseBuilder.build()); + reply(event, "\uD83C\uDD70", "\uD83C\uDE35", latinBuilder.build(), japaneseBuilder.build()); } } diff --git a/src/main/java/com/github/nilstrieb/commands/fun/QuoteCommand.java b/src/main/java/com/github/nilstrieb/commands/fun/QuoteCommand.java index 2729741..cec5be7 100644 --- a/src/main/java/com/github/nilstrieb/commands/fun/QuoteCommand.java +++ b/src/main/java/com/github/nilstrieb/commands/fun/QuoteCommand.java @@ -4,19 +4,40 @@ import com.github.nilstrieb.cofig.Config; import com.github.nilstrieb.commands.handler.Command; import com.github.nilstrieb.util.KilluaQuotes; import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.entities.MessageEmbed; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; public class QuoteCommand extends Command { + + private static MessageEmbed[] quotesEmbed; + public QuoteCommand() { super("quote", "Get a quote from Killua"); } @Override public void called(MessageReceivedEvent event, String args) { - EmbedBuilder builder = Config.getDefaultEmbed(event) - .addField("Killuas Quotes", KilluaQuotes.getRandomQuote(), false); + if (args.startsWith("all")) { + reply(event, getQuotesEmbed(event)); + } else { + EmbedBuilder builder = Config.getDefaultEmbed(event) + .addField("Killuas Quotes", KilluaQuotes.getRandomQuote(), false); - reply(event, builder.build()); + reply(event, builder.build()); + } } + + public static MessageEmbed[] getQuotesEmbed(MessageReceivedEvent event) { + if (quotesEmbed == null) { + String[] quotes = KilluaQuotes.getAllQuotes(); + quotesEmbed = new MessageEmbed[quotes.length]; + for (int i = 0; i < quotes.length; i++) { + quotesEmbed[i] = Config.getDefaultEmbed(event) + .addField("Killuas Quotes", quotes[i], false) + .setFooter("Killua Quotes - " + (i + 1) + "/" + quotes.length).build(); + } + } + return quotesEmbed; + } } \ No newline at end of file diff --git a/src/main/java/com/github/nilstrieb/commands/handler/Command.java b/src/main/java/com/github/nilstrieb/commands/handler/Command.java index 77f2e54..490d18e 100644 --- a/src/main/java/com/github/nilstrieb/commands/handler/Command.java +++ b/src/main/java/com/github/nilstrieb/commands/handler/Command.java @@ -23,35 +23,41 @@ public abstract class Command { CommandHandler.addCommand(name, this, hidden); } - public Command(String name, String description, String exampleUsage, String arguments){ + public Command(String name, String description, String exampleUsage, String arguments) { this(name, description, exampleUsage, arguments, false); } - public Command(String name, String description){ + public Command(String name, String description) { this(name, description, name, "", false); } public abstract void called(MessageReceivedEvent event, String args); protected void reply(MessageReceivedEvent event, String message) { - if(!message.equals("")){ + if (!message.equals("")) { event.getTextChannel().sendMessage(message).queue(); } } protected void reply(MessageReceivedEvent event, MessageEmbed embed) { - if(!embed.isEmpty()){ + if (!embed.isEmpty()) { event.getTextChannel().sendMessage(embed).queue(); } } - protected void reply(MessageReceivedEvent event, MessageEmbed ... embeds){ - if(!embeds[0].isEmpty()){ + protected void reply(MessageReceivedEvent event, MessageEmbed... embeds) { + if (!embeds[0].isEmpty()) { event.getTextChannel().sendMessage(embeds[0]).queue(message -> new MultiPageEmbed(message, embeds)); } } + protected void reply(MessageReceivedEvent event, String emote1, String emote2, MessageEmbed... embeds) { + if (!embeds[0].isEmpty()) { + event.getTextChannel().sendMessage(embeds[0]).queue(message -> new MultiPageEmbed(message, emote1, emote2, embeds)); + } + } + protected void deleteMsg(MessageReceivedEvent event, long delay) { new Timer().schedule( new TimerTask() { diff --git a/src/main/java/com/github/nilstrieb/commands/handler/CommandHandler.java b/src/main/java/com/github/nilstrieb/commands/handler/CommandHandler.java index 1b57721..392648c 100644 --- a/src/main/java/com/github/nilstrieb/commands/handler/CommandHandler.java +++ b/src/main/java/com/github/nilstrieb/commands/handler/CommandHandler.java @@ -1,6 +1,7 @@ package com.github.nilstrieb.commands.handler; import com.github.nilstrieb.cofig.Config; +import com.github.nilstrieb.util.ConsoleColors; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.entities.MessageEmbed; import net.dv8tion.jda.api.events.Event; @@ -31,12 +32,10 @@ public class CommandHandler { if (event.getMessage().getContentRaw().toLowerCase().startsWith(Config.PREFIX)) { String[] split = parser.splitOffCommandName(event.getMessage().getContentRaw()); String command = split[0]; - System.out.println("[CHandler] cmd: '" + command + "'" + " args: '" + split[1] + "'"); + System.out.println(ConsoleColors.GREEN + "[CHandler] cmd: '" + command + "'" + " args: '" + split[1] + "'" + ConsoleColors.RESET); if (commands.containsKey(command)) { - System.out.println("[CHandler] command exists: " + command); commands.get(command).called(event, split[1]); } else if (hiddenCommands.containsKey(command)) { - System.out.println("[CHandler] hidden command exists: " + command); hiddenCommands.get(command).called(event, split[1]); } } diff --git a/src/main/java/com/github/nilstrieb/listener/CommandListener.java b/src/main/java/com/github/nilstrieb/listener/CommandListener.java index 2303fb4..2010e71 100644 --- a/src/main/java/com/github/nilstrieb/listener/CommandListener.java +++ b/src/main/java/com/github/nilstrieb/listener/CommandListener.java @@ -1,6 +1,7 @@ package com.github.nilstrieb.listener; import com.github.nilstrieb.commands.handler.CommandHandler; +import com.github.nilstrieb.util.ConsoleColors; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; import org.jetbrains.annotations.NotNull; @@ -8,7 +9,7 @@ import org.jetbrains.annotations.NotNull; public class CommandListener extends ListenerAdapter { @Override public void onMessageReceived(@NotNull MessageReceivedEvent event) { - System.out.println("[CListener] Received message: '" + event.getMessage().getContentRaw() + "'"); + System.out.println(ConsoleColors.CYAN + "[CListener] Received message: '" + event.getMessage().getContentRaw() + "'" + ConsoleColors.RESET); if (!event.getAuthor().isBot()) { CommandHandler.call(event); } diff --git a/src/main/java/com/github/nilstrieb/listener/ReactionEventListener.java b/src/main/java/com/github/nilstrieb/listener/ReactionEventListener.java index 3ebe3d7..e8cbfd8 100644 --- a/src/main/java/com/github/nilstrieb/listener/ReactionEventListener.java +++ b/src/main/java/com/github/nilstrieb/listener/ReactionEventListener.java @@ -11,15 +11,23 @@ import java.util.Objects; public class ReactionEventListener extends ListenerAdapter { @Override public void onMessageReactionAdd(@NotNull MessageReactionAddEvent event) { - if (!Objects.requireNonNull(event.getUser(), "message author is null").isBot()) { - ReactionEventManager.onReactionAdd(event); + if(event.getUser() == null){ + System.err.println("[ReactionEventListener] ADD Reaction User is null. Message: " + event.getMessageId() + " emote:" + event.getReactionEmote()); + } else { + if (!event.getUser().isBot()) { + ReactionEventManager.onReactionAdd(event); + } } } @Override public void onMessageReactionRemove(@NotNull MessageReactionRemoveEvent event) { - if (!Objects.requireNonNull(event.getUser(), "message author is null").isBot()) { - ReactionEventManager.onReactionRemove(event); + if(event.getUser() == null){ + System.err.println("[ReactionEventListener] REMOVE Reaction User is null. Message: " + event.getMessageId() + " emote:" + event.getReactionEmote()); + } else { + if (!event.getUser().isBot()) { + ReactionEventManager.onReactionRemove(event); + } } } } diff --git a/src/main/java/com/github/nilstrieb/reactions/ReactionEventManager.java b/src/main/java/com/github/nilstrieb/reactions/ReactionEventManager.java index 268cfc6..2f7b29c 100644 --- a/src/main/java/com/github/nilstrieb/reactions/ReactionEventManager.java +++ b/src/main/java/com/github/nilstrieb/reactions/ReactionEventManager.java @@ -1,5 +1,6 @@ package com.github.nilstrieb.reactions; +import com.github.nilstrieb.util.ConsoleColors; import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent; import net.dv8tion.jda.api.events.message.react.MessageReactionRemoveEvent; @@ -17,6 +18,8 @@ public class ReactionEventManager { } public static void onReactionAdd(MessageReactionAddEvent event){ + System.out.println(ConsoleColors.PURPLE + "[ReactionEventManager] Reaction added: " + event.getReactionEmote() + + " by " + event.getUser().getAsTag() + ConsoleColors.RESET); long message = event.getMessageIdLong(); ReactionListener listener = currentReactions.get(message); if (listener != null) { @@ -25,6 +28,8 @@ public class ReactionEventManager { } public static void onReactionRemove(MessageReactionRemoveEvent event){ + System.out.println(ConsoleColors.PURPLE + "[ReactionEventManager] Reaction removed: " + event.getReactionEmote() + + " by " + event.getUser().getAsTag() + ConsoleColors.RESET); long message = event.getMessageIdLong(); ReactionListener listener = currentReactions.get(message); if (listener != null) { diff --git a/src/main/java/com/github/nilstrieb/util/ConsoleColors.java b/src/main/java/com/github/nilstrieb/util/ConsoleColors.java new file mode 100644 index 0000000..bb09018 --- /dev/null +++ b/src/main/java/com/github/nilstrieb/util/ConsoleColors.java @@ -0,0 +1,76 @@ +package com.github.nilstrieb.util; + +public class ConsoleColors { + // Reset + public static final String RESET = "\033[0m"; // Text Reset + + // Regular Colors + public static final String BLACK = "\033[0;30m"; // BLACK + public static final String RED = "\033[0;31m"; // RED + public static final String GREEN = "\033[0;32m"; // GREEN + public static final String YELLOW = "\033[0;33m"; // YELLOW + public static final String BLUE = "\033[0;34m"; // BLUE + public static final String PURPLE = "\033[0;35m"; // PURPLE + public static final String CYAN = "\033[0;36m"; // CYAN + public static final String WHITE = "\033[0;37m"; // WHITE + + // Bold + public static final String BLACK_BOLD = "\033[1;30m"; // BLACK + public static final String RED_BOLD = "\033[1;31m"; // RED + public static final String GREEN_BOLD = "\033[1;32m"; // GREEN + public static final String YELLOW_BOLD = "\033[1;33m"; // YELLOW + public static final String BLUE_BOLD = "\033[1;34m"; // BLUE + public static final String PURPLE_BOLD = "\033[1;35m"; // PURPLE + public static final String CYAN_BOLD = "\033[1;36m"; // CYAN + public static final String WHITE_BOLD = "\033[1;37m"; // WHITE + + // Underline + public static final String BLACK_UNDERLINED = "\033[4;30m"; // BLACK + public static final String RED_UNDERLINED = "\033[4;31m"; // RED + public static final String GREEN_UNDERLINED = "\033[4;32m"; // GREEN + public static final String YELLOW_UNDERLINED = "\033[4;33m"; // YELLOW + public static final String BLUE_UNDERLINED = "\033[4;34m"; // BLUE + public static final String PURPLE_UNDERLINED = "\033[4;35m"; // PURPLE + public static final String CYAN_UNDERLINED = "\033[4;36m"; // CYAN + public static final String WHITE_UNDERLINED = "\033[4;37m"; // WHITE + + // Background + public static final String BLACK_BACKGROUND = "\033[40m"; // BLACK + public static final String RED_BACKGROUND = "\033[41m"; // RED + public static final String GREEN_BACKGROUND = "\033[42m"; // GREEN + public static final String YELLOW_BACKGROUND = "\033[43m"; // YELLOW + public static final String BLUE_BACKGROUND = "\033[44m"; // BLUE + public static final String PURPLE_BACKGROUND = "\033[45m"; // PURPLE + public static final String CYAN_BACKGROUND = "\033[46m"; // CYAN + public static final String WHITE_BACKGROUND = "\033[47m"; // WHITE + + // High Intensity + public static final String BLACK_BRIGHT = "\033[0;90m"; // BLACK + public static final String RED_BRIGHT = "\033[0;91m"; // RED + public static final String GREEN_BRIGHT = "\033[0;92m"; // GREEN + public static final String YELLOW_BRIGHT = "\033[0;93m"; // YELLOW + public static final String BLUE_BRIGHT = "\033[0;94m"; // BLUE + public static final String PURPLE_BRIGHT = "\033[0;95m"; // PURPLE + public static final String CYAN_BRIGHT = "\033[0;96m"; // CYAN + public static final String WHITE_BRIGHT = "\033[0;97m"; // WHITE + + // Bold High Intensity + public static final String BLACK_BOLD_BRIGHT = "\033[1;90m"; // BLACK + public static final String RED_BOLD_BRIGHT = "\033[1;91m"; // RED + public static final String GREEN_BOLD_BRIGHT = "\033[1;92m"; // GREEN + public static final String YELLOW_BOLD_BRIGHT = "\033[1;93m";// YELLOW + public static final String BLUE_BOLD_BRIGHT = "\033[1;94m"; // BLUE + public static final String PURPLE_BOLD_BRIGHT = "\033[1;95m";// PURPLE + public static final String CYAN_BOLD_BRIGHT = "\033[1;96m"; // CYAN + public static final String WHITE_BOLD_BRIGHT = "\033[1;97m"; // WHITE + + // High Intensity backgrounds + public static final String BLACK_BACKGROUND_BRIGHT = "\033[0;100m";// BLACK + public static final String RED_BACKGROUND_BRIGHT = "\033[0;101m";// RED + public static final String GREEN_BACKGROUND_BRIGHT = "\033[0;102m";// GREEN + public static final String YELLOW_BACKGROUND_BRIGHT = "\033[0;103m";// YELLOW + public static final String BLUE_BACKGROUND_BRIGHT = "\033[0;104m";// BLUE + public static final String PURPLE_BACKGROUND_BRIGHT = "\033[0;105m"; // PURPLE + public static final String CYAN_BACKGROUND_BRIGHT = "\033[0;106m"; // CYAN + public static final String WHITE_BACKGROUND_BRIGHT = "\033[0;107m"; // WHITE +} \ No newline at end of file diff --git a/src/main/java/com/github/nilstrieb/util/KilluaQuotes.java b/src/main/java/com/github/nilstrieb/util/KilluaQuotes.java index 0f3c573..01fa56e 100644 --- a/src/main/java/com/github/nilstrieb/util/KilluaQuotes.java +++ b/src/main/java/com/github/nilstrieb/util/KilluaQuotes.java @@ -26,4 +26,8 @@ public class KilluaQuotes { public static String getRandomQuote() { return quotes[random.nextInt(quotes.length)]; } + + public static String[] getAllQuotes() { + return quotes; + } } diff --git a/src/main/java/com/github/nilstrieb/util/MultiPageEmbed.java b/src/main/java/com/github/nilstrieb/util/MultiPageEmbed.java index adc810c..e248997 100644 --- a/src/main/java/com/github/nilstrieb/util/MultiPageEmbed.java +++ b/src/main/java/com/github/nilstrieb/util/MultiPageEmbed.java @@ -10,8 +10,8 @@ import net.dv8tion.jda.api.events.message.react.MessageReactionRemoveEvent; import java.util.Objects; public class MultiPageEmbed implements ReactionListener { - private static final String NEXT_PAGE_DEFAULT_REACTION = "\u27a1"; - private static final String PREVIOUS_PAGE_DEFAULT_REACTION = "\u2b05"; + private static final String NEXT_PAGE_DEFAULT_REACTION = "\u25b6\ufe0f"; + private static final String PREVIOUS_PAGE_DEFAULT_REACTION = "\u25c0\ufe0f"; private final Message message; private final MessageEmbed[] pages;