diff --git a/pom.xml b/pom.xml
index 988f9e5..9c50a19 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,7 +47,7 @@
net.dv8tion
JDA
- 5.0.0-beta.12
+ 5.0.0-beta.15
io.github.cdimascio
@@ -57,7 +57,7 @@
com.github.mesalytic
Lavalink-Client
- 5821488fbf
+ 08a01bda67
org.reflections
diff --git a/src/main/java/org/virep/jdabot/Main.java b/src/main/java/org/virep/jdabot/Main.java
index 452b04a..8c7decf 100644
--- a/src/main/java/org/virep/jdabot/Main.java
+++ b/src/main/java/org/virep/jdabot/Main.java
@@ -10,6 +10,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.virep.jdabot.database.Database;
+import org.virep.jdabot.handlers.TextHandler;
import org.virep.jdabot.language.Language;
import org.virep.jdabot.listeners.AfkListener;
import org.virep.jdabot.listeners.AutoroleListener;
@@ -20,8 +21,9 @@
import org.virep.jdabot.listeners.LogsListener;
import org.virep.jdabot.listeners.ReactionRoleListener;
import org.virep.jdabot.listeners.SelectMenuInteractionListener;
-import org.virep.jdabot.slashcommandhandler.SlashHandler;
+import org.virep.jdabot.handlers.SlashHandler;
import org.virep.jdabot.listeners.SlashListener;
+import org.virep.jdabot.listeners.TextCommandListener;
import org.virep.jdabot.utils.Config;
import java.net.URI;
@@ -68,10 +70,14 @@ public static void main(String[] args) throws Exception {
Language.getLanguages();
SlashHandler slashHandler = new SlashHandler(jda);
+ TextHandler textHandler = new TextHandler();
jda.addEventListener(new SlashListener(slashHandler));
+ jda.addEventListener(new TextCommandListener(new TextHandler()));
slashHandler.addCommands();
+ textHandler.addCommands();
+
log.info("Slash Commands registered");
lavalink.setAutoReconnect(true);
diff --git a/src/main/java/org/virep/jdabot/commands/administration/AutoroleCommand.java b/src/main/java/org/virep/jdabot/commands/administration/AutoroleCommand.java
index 25bd122..1f90a27 100644
--- a/src/main/java/org/virep/jdabot/commands/administration/AutoroleCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/administration/AutoroleCommand.java
@@ -14,7 +14,7 @@
import net.dv8tion.jda.api.interactions.commands.build.SubcommandData;
import org.virep.jdabot.database.Database;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import org.virep.jdabot.utils.ErrorManager;
import java.sql.Connection;
@@ -25,7 +25,7 @@
import java.util.Collections;
import java.util.List;
-public class AutoroleCommand implements Command {
+public class AutoroleCommand implements SlashCommand {
@Override
public String getName() {
return "autorole";
diff --git a/src/main/java/org/virep/jdabot/commands/administration/EmojisCommand.java b/src/main/java/org/virep/jdabot/commands/administration/EmojisCommand.java
index c59c6e5..7194447 100644
--- a/src/main/java/org/virep/jdabot/commands/administration/EmojisCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/administration/EmojisCommand.java
@@ -20,7 +20,7 @@
import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData;
import net.dv8tion.jda.api.interactions.commands.build.SubcommandData;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import org.virep.jdabot.utils.ErrorManager;
import java.io.IOException;
@@ -29,7 +29,7 @@
import java.util.List;
import java.util.concurrent.ExecutionException;
-public class EmojisCommand implements Command {
+public class EmojisCommand implements SlashCommand {
@Override
public String getName() {
return "emojis";
diff --git a/src/main/java/org/virep/jdabot/commands/administration/InteractionroleCommand.java b/src/main/java/org/virep/jdabot/commands/administration/InteractionroleCommand.java
index efc27a7..77bda1e 100644
--- a/src/main/java/org/virep/jdabot/commands/administration/InteractionroleCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/administration/InteractionroleCommand.java
@@ -23,7 +23,7 @@
import net.dv8tion.jda.api.interactions.components.selections.StringSelectMenu;
import org.virep.jdabot.database.Database;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import org.virep.jdabot.utils.ErrorManager;
import java.sql.Connection;
@@ -34,7 +34,7 @@
import java.util.Collections;
import java.util.List;
-public class InteractionroleCommand implements Command {
+public class InteractionroleCommand implements SlashCommand {
@Override
public String getName() {
return "interactionrole";
diff --git a/src/main/java/org/virep/jdabot/commands/administration/LangCommand.java b/src/main/java/org/virep/jdabot/commands/administration/LangCommand.java
index ade7ff6..33c5923 100644
--- a/src/main/java/org/virep/jdabot/commands/administration/LangCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/administration/LangCommand.java
@@ -13,7 +13,7 @@
import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData;
import org.virep.jdabot.database.Database;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import org.virep.jdabot.utils.ErrorManager;
import java.sql.Connection;
@@ -23,7 +23,7 @@
import java.util.Collections;
import java.util.List;
-public class LangCommand implements Command {
+public class LangCommand implements SlashCommand {
@Override
public String getName() {
diff --git a/src/main/java/org/virep/jdabot/commands/administration/LogsCommand.java b/src/main/java/org/virep/jdabot/commands/administration/LogsCommand.java
index 625c790..0e32a4d 100644
--- a/src/main/java/org/virep/jdabot/commands/administration/LogsCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/administration/LogsCommand.java
@@ -15,7 +15,7 @@
import net.dv8tion.jda.api.interactions.components.selections.StringSelectMenu;
import org.virep.jdabot.database.Database;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import org.virep.jdabot.utils.ErrorManager;
import java.sql.Connection;
@@ -26,7 +26,7 @@
import java.util.Collections;
import java.util.List;
-public class LogsCommand implements Command {
+public class LogsCommand implements SlashCommand {
@Override
public String getName() {
return "logs";
diff --git a/src/main/java/org/virep/jdabot/commands/administration/MessageCommand.java b/src/main/java/org/virep/jdabot/commands/administration/MessageCommand.java
index 66afcf2..8c420f3 100644
--- a/src/main/java/org/virep/jdabot/commands/administration/MessageCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/administration/MessageCommand.java
@@ -13,7 +13,7 @@
import net.dv8tion.jda.api.interactions.components.buttons.Button;
import org.virep.jdabot.database.Database;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import org.virep.jdabot.utils.ErrorManager;
import java.sql.Connection;
@@ -24,7 +24,7 @@
import java.util.Collections;
import java.util.List;
-public class MessageCommand implements Command {
+public class MessageCommand implements SlashCommand {
@Override
public String getName() {
return "message";
diff --git a/src/main/java/org/virep/jdabot/commands/administration/ReactionroleCommand.java b/src/main/java/org/virep/jdabot/commands/administration/ReactionroleCommand.java
index e19691d..289505c 100644
--- a/src/main/java/org/virep/jdabot/commands/administration/ReactionroleCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/administration/ReactionroleCommand.java
@@ -14,7 +14,7 @@
import net.dv8tion.jda.api.interactions.commands.build.*;
import org.virep.jdabot.database.Database;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import org.virep.jdabot.utils.ErrorManager;
import java.sql.Connection;
@@ -26,7 +26,7 @@
import java.util.List;
import java.util.Objects;
-public class ReactionroleCommand implements Command {
+public class ReactionroleCommand implements SlashCommand {
@Override
public String getName() {
return "reactionrole";
diff --git a/src/main/java/org/virep/jdabot/commands/administration/ShutdownCommand.java b/src/main/java/org/virep/jdabot/commands/administration/ShutdownCommand.java
index f6a92a1..111a5fa 100644
--- a/src/main/java/org/virep/jdabot/commands/administration/ShutdownCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/administration/ShutdownCommand.java
@@ -7,12 +7,12 @@
import net.dv8tion.jda.api.interactions.commands.OptionType;
import net.dv8tion.jda.api.interactions.commands.build.Commands;
import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.util.Collections;
import java.util.List;
-public class ShutdownCommand implements Command {
+public class ShutdownCommand implements SlashCommand {
@Override
public String getName() {
diff --git a/src/main/java/org/virep/jdabot/commands/games/ActivityCommand.java b/src/main/java/org/virep/jdabot/commands/games/ActivityCommand.java
index 83df438..dc6bd8b 100644
--- a/src/main/java/org/virep/jdabot/commands/games/ActivityCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/games/ActivityCommand.java
@@ -16,7 +16,7 @@
import org.json.JSONObject;
import org.json.JSONTokener;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import org.virep.jdabot.utils.ErrorManager;
import java.io.IOException;
@@ -25,7 +25,7 @@
import java.util.Collections;
import java.util.List;
-public class ActivityCommand implements Command {
+public class ActivityCommand implements SlashCommand {
@Override
public String getName() {
return "activity";
diff --git a/src/main/java/org/virep/jdabot/commands/games/TTTCommand.java b/src/main/java/org/virep/jdabot/commands/games/TTTCommand.java
index 832bedf..4eb55a4 100644
--- a/src/main/java/org/virep/jdabot/commands/games/TTTCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/games/TTTCommand.java
@@ -13,11 +13,11 @@
import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData;
import net.dv8tion.jda.api.interactions.components.buttons.Button;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.util.*;
-public class TTTCommand implements Command {
+public class TTTCommand implements SlashCommand {
private static final int[][] board = new int[3][3];
public static final Map boards = new HashMap<>();
public static final Map players = new HashMap<>();
diff --git a/src/main/java/org/virep/jdabot/commands/general/AfkCommand.java b/src/main/java/org/virep/jdabot/commands/general/AfkCommand.java
index 939d81e..b189056 100644
--- a/src/main/java/org/virep/jdabot/commands/general/AfkCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/general/AfkCommand.java
@@ -12,7 +12,7 @@
import net.dv8tion.jda.api.interactions.commands.build.SubcommandData;
import org.virep.jdabot.database.Database;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import org.virep.jdabot.utils.ErrorManager;
import java.sql.Connection;
@@ -23,7 +23,7 @@
import java.util.Collections;
import java.util.List;
-public class AfkCommand implements Command {
+public class AfkCommand implements SlashCommand {
@Override
public String getName() {
return "afk";
diff --git a/src/main/java/org/virep/jdabot/commands/general/AvatarCommand.java b/src/main/java/org/virep/jdabot/commands/general/AvatarCommand.java
index f3779e8..af3eaf7 100644
--- a/src/main/java/org/virep/jdabot/commands/general/AvatarCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/general/AvatarCommand.java
@@ -9,13 +9,13 @@
import net.dv8tion.jda.api.interactions.commands.build.Commands;
import net.dv8tion.jda.api.interactions.commands.build.OptionData;
import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-public class AvatarCommand implements Command {
+public class AvatarCommand implements SlashCommand {
@Override
public String getName() {
return "avatar";
diff --git a/src/main/java/org/virep/jdabot/commands/general/BannerCommand.java b/src/main/java/org/virep/jdabot/commands/general/BannerCommand.java
index 94ab1b5..739e6cc 100644
--- a/src/main/java/org/virep/jdabot/commands/general/BannerCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/general/BannerCommand.java
@@ -16,7 +16,7 @@
import okhttp3.Response;
import org.json.JSONObject;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import org.virep.jdabot.utils.ErrorManager;
import java.io.IOException;
@@ -26,7 +26,7 @@
import java.util.List;
import java.util.concurrent.TimeUnit;
-public class BannerCommand implements Command {
+public class BannerCommand implements SlashCommand {
@Override
public String getName() {
return "banner";
diff --git a/src/main/java/org/virep/jdabot/commands/general/ColorCommand.java b/src/main/java/org/virep/jdabot/commands/general/ColorCommand.java
index 937683a..8ed26ae 100644
--- a/src/main/java/org/virep/jdabot/commands/general/ColorCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/general/ColorCommand.java
@@ -14,7 +14,7 @@
import okhttp3.Request;
import okhttp3.Response;
import org.json.JSONObject;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import org.virep.jdabot.utils.ErrorManager;
import java.awt.*;
@@ -29,7 +29,7 @@
import static org.virep.jdabot.utils.Utils.getRandomColor;
-public class ColorCommand implements Command {
+public class ColorCommand implements SlashCommand {
@Override
public String getName() {
return "color";
diff --git a/src/main/java/org/virep/jdabot/commands/general/EmojiCommand.java b/src/main/java/org/virep/jdabot/commands/general/EmojiCommand.java
index e24ea6d..ad5d0d8 100644
--- a/src/main/java/org/virep/jdabot/commands/general/EmojiCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/general/EmojiCommand.java
@@ -15,7 +15,7 @@
import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData;
import net.dv8tion.jda.api.utils.FileUpload;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import org.virep.jdabot.utils.ErrorManager;
import org.virep.jdabot.utils.Twemoji;
@@ -27,7 +27,7 @@
import java.util.List;
import java.util.concurrent.ExecutionException;
-public class EmojiCommand implements Command {
+public class EmojiCommand implements SlashCommand {
@Override
public String getName() {
return "emoji";
diff --git a/src/main/java/org/virep/jdabot/commands/general/InteractCommand.java b/src/main/java/org/virep/jdabot/commands/general/InteractCommand.java
index 2cb4a32..7cbf570 100644
--- a/src/main/java/org/virep/jdabot/commands/general/InteractCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/general/InteractCommand.java
@@ -17,7 +17,7 @@
import okhttp3.ResponseBody;
import org.json.JSONObject;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import org.virep.jdabot.utils.ErrorManager;
import java.io.IOException;
@@ -28,7 +28,7 @@
import java.util.Objects;
import java.util.concurrent.TimeUnit;
-public class InteractCommand implements Command {
+public class InteractCommand implements SlashCommand {
@Override
public String getName() {
return "interact";
diff --git a/src/main/java/org/virep/jdabot/commands/general/MathCommand.java b/src/main/java/org/virep/jdabot/commands/general/MathCommand.java
index 99bff20..073cd94 100644
--- a/src/main/java/org/virep/jdabot/commands/general/MathCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/general/MathCommand.java
@@ -26,7 +26,7 @@
import org.scilab.forge.jlatexmath.TeXFormula;
import org.scilab.forge.jlatexmath.TeXIcon;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import org.virep.jdabot.utils.ErrorManager;
import javax.imageio.ImageIO;
@@ -43,7 +43,7 @@
import java.util.Objects;
import java.util.concurrent.TimeUnit;
-public class MathCommand implements Command {
+public class MathCommand implements SlashCommand {
@Override
public String getName() {
return "math";
diff --git a/src/main/java/org/virep/jdabot/commands/general/MemeCommand.java b/src/main/java/org/virep/jdabot/commands/general/MemeCommand.java
index 25747a4..739fb0a 100644
--- a/src/main/java/org/virep/jdabot/commands/general/MemeCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/general/MemeCommand.java
@@ -15,7 +15,7 @@
import okhttp3.Response;
import org.json.JSONArray;
import org.json.JSONObject;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import org.virep.jdabot.utils.ErrorManager;
import java.io.IOException;
@@ -24,7 +24,7 @@
import java.util.List;
import java.util.concurrent.TimeUnit;
-public class MemeCommand implements Command {
+public class MemeCommand implements SlashCommand {
@Override
public String getName() {
return "meme";
diff --git a/src/main/java/org/virep/jdabot/commands/general/OsuCommand.java b/src/main/java/org/virep/jdabot/commands/general/OsuCommand.java
index ef99d94..d53f055 100644
--- a/src/main/java/org/virep/jdabot/commands/general/OsuCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/general/OsuCommand.java
@@ -14,7 +14,7 @@
import okhttp3.Response;
import org.json.JSONArray;
import org.json.JSONObject;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import org.virep.jdabot.utils.ErrorManager;
import java.io.ByteArrayInputStream;
@@ -26,7 +26,7 @@
import java.util.Objects;
import java.util.concurrent.TimeUnit;
-public class OsuCommand implements Command {
+public class OsuCommand implements SlashCommand {
@Override
public String getName() {
return "osu";
diff --git a/src/main/java/org/virep/jdabot/commands/general/PingCommand.java b/src/main/java/org/virep/jdabot/commands/general/PingCommand.java
index 52bd2c8..1ae8978 100644
--- a/src/main/java/org/virep/jdabot/commands/general/PingCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/general/PingCommand.java
@@ -4,12 +4,12 @@
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
import net.dv8tion.jda.api.interactions.commands.build.Commands;
import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.util.Collections;
import java.util.List;
-public class PingCommand implements Command {
+public class PingCommand implements SlashCommand {
@Override
public String getName() {
return "ping";
diff --git a/src/main/java/org/virep/jdabot/commands/general/RandomCommand.java b/src/main/java/org/virep/jdabot/commands/general/RandomCommand.java
index d9a85c1..b276489 100644
--- a/src/main/java/org/virep/jdabot/commands/general/RandomCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/general/RandomCommand.java
@@ -10,13 +10,13 @@
import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData;
import net.dv8tion.jda.api.interactions.commands.build.SubcommandData;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
-public class RandomCommand implements Command {
+public class RandomCommand implements SlashCommand {
@Override
public String getName() {
return "random";
diff --git a/src/main/java/org/virep/jdabot/commands/general/RemindCommand.java b/src/main/java/org/virep/jdabot/commands/general/RemindCommand.java
index 2da9d48..be8087d 100644
--- a/src/main/java/org/virep/jdabot/commands/general/RemindCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/general/RemindCommand.java
@@ -13,7 +13,7 @@
import net.dv8tion.jda.api.utils.MarkdownSanitizer;
import org.virep.jdabot.database.Database;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import org.virep.jdabot.utils.ErrorManager;
import java.sql.Connection;
@@ -30,7 +30,7 @@
import static org.virep.jdabot.utils.Utils.timeStringToSeconds;
-public class RemindCommand implements Command {
+public class RemindCommand implements SlashCommand {
public static Map timers = new HashMap<>();
@Override
diff --git a/src/main/java/org/virep/jdabot/commands/image/ImageCommand.java b/src/main/java/org/virep/jdabot/commands/image/ImageCommand.java
index d6ed35d..fd3d2a3 100644
--- a/src/main/java/org/virep/jdabot/commands/image/ImageCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/image/ImageCommand.java
@@ -15,7 +15,7 @@
import org.json.JSONArray;
import org.json.JSONObject;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import org.virep.jdabot.utils.ErrorManager;
import org.virep.jdabot.utils.Utils;
@@ -25,7 +25,7 @@
import java.util.List;
import java.util.concurrent.TimeUnit;
-public class ImageCommand implements Command {
+public class ImageCommand implements SlashCommand {
@Override
public String getName() {
return "image";
diff --git a/src/main/java/org/virep/jdabot/commands/infos/InfoCommand.java b/src/main/java/org/virep/jdabot/commands/infos/InfoCommand.java
index 67ce778..2f26344 100644
--- a/src/main/java/org/virep/jdabot/commands/infos/InfoCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/infos/InfoCommand.java
@@ -13,7 +13,7 @@
import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData;
import net.dv8tion.jda.api.interactions.commands.build.SubcommandData;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.util.ArrayList;
import java.util.Collections;
@@ -23,7 +23,7 @@
import static org.virep.jdabot.utils.Utils.badgesToEmote;
-public class InfoCommand implements Command {
+public class InfoCommand implements SlashCommand {
@Override
public String getName() {
return "info";
diff --git a/src/main/java/org/virep/jdabot/commands/infos/StatsCommand.java b/src/main/java/org/virep/jdabot/commands/infos/StatsCommand.java
index 648ff14..2dd4a2d 100644
--- a/src/main/java/org/virep/jdabot/commands/infos/StatsCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/infos/StatsCommand.java
@@ -10,7 +10,7 @@
import net.dv8tion.jda.api.interactions.commands.build.Commands;
import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
@@ -21,7 +21,7 @@
import static org.virep.jdabot.utils.Utils.formatUptime;
-public class StatsCommand implements Command {
+public class StatsCommand implements SlashCommand {
@Override
public String getName() {
return "stats";
diff --git a/src/main/java/org/virep/jdabot/commands/moderation/BanCommand.java b/src/main/java/org/virep/jdabot/commands/moderation/BanCommand.java
index f195263..11c77f6 100644
--- a/src/main/java/org/virep/jdabot/commands/moderation/BanCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/moderation/BanCommand.java
@@ -14,7 +14,7 @@
import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData;
import net.dv8tion.jda.api.requests.ErrorResponse;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import org.virep.jdabot.utils.Utils;
import java.util.ArrayList;
@@ -23,7 +23,7 @@
import java.util.List;
import java.util.concurrent.TimeUnit;
-public class BanCommand implements Command {
+public class BanCommand implements SlashCommand {
@Override
public String getName() {
return "ban";
diff --git a/src/main/java/org/virep/jdabot/commands/moderation/BansCommand.java b/src/main/java/org/virep/jdabot/commands/moderation/BansCommand.java
index 8c9a689..9ace595 100644
--- a/src/main/java/org/virep/jdabot/commands/moderation/BansCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/moderation/BansCommand.java
@@ -11,14 +11,14 @@
import net.dv8tion.jda.api.interactions.commands.build.SubcommandData;
import net.dv8tion.jda.api.interactions.components.buttons.Button;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.time.Instant;
import java.util.*;
import static org.virep.jdabot.utils.Utils.getPages;
-public class BansCommand implements Command {
+public class BansCommand implements SlashCommand {
public static Map pageNumber = new HashMap<>();
@Override
diff --git a/src/main/java/org/virep/jdabot/commands/moderation/KickCommand.java b/src/main/java/org/virep/jdabot/commands/moderation/KickCommand.java
index d06c897..1723f50 100644
--- a/src/main/java/org/virep/jdabot/commands/moderation/KickCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/moderation/KickCommand.java
@@ -11,14 +11,14 @@
import net.dv8tion.jda.api.interactions.commands.build.OptionData;
import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
-public class KickCommand implements Command {
+public class KickCommand implements SlashCommand {
@Override
public String getName() {
return "kick";
diff --git a/src/main/java/org/virep/jdabot/commands/moderation/MuteCommand.java b/src/main/java/org/virep/jdabot/commands/moderation/MuteCommand.java
index ed3e1b9..fcbbaaa 100644
--- a/src/main/java/org/virep/jdabot/commands/moderation/MuteCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/moderation/MuteCommand.java
@@ -15,7 +15,7 @@
import net.dv8tion.jda.api.interactions.commands.build.Commands;
import net.dv8tion.jda.api.requests.ErrorResponse;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.util.ArrayList;
import java.util.Collections;
@@ -27,7 +27,7 @@
import static org.virep.jdabot.utils.Utils.secondsToSeperatedTime;
import static org.virep.jdabot.utils.Utils.timeStringToSeconds;
-public class MuteCommand implements Command {
+public class MuteCommand implements SlashCommand {
@Override
public String getName() {
return "timeout";
diff --git a/src/main/java/org/virep/jdabot/commands/moderation/PurgeCommand.java b/src/main/java/org/virep/jdabot/commands/moderation/PurgeCommand.java
index 0a8198d..f8b522b 100644
--- a/src/main/java/org/virep/jdabot/commands/moderation/PurgeCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/moderation/PurgeCommand.java
@@ -15,14 +15,14 @@
import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData;
import net.dv8tion.jda.api.interactions.commands.build.SubcommandData;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
-public class PurgeCommand implements Command {
+public class PurgeCommand implements SlashCommand {
@Override
public String getName() {
return "purge";
diff --git a/src/main/java/org/virep/jdabot/commands/moderation/SlowmodeCommand.java b/src/main/java/org/virep/jdabot/commands/moderation/SlowmodeCommand.java
index c922375..71c0c17 100644
--- a/src/main/java/org/virep/jdabot/commands/moderation/SlowmodeCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/moderation/SlowmodeCommand.java
@@ -13,7 +13,7 @@
import net.dv8tion.jda.api.interactions.commands.build.*;
import net.dv8tion.jda.api.interactions.commands.build.Commands;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.time.Duration;
import java.time.format.DateTimeParseException;
@@ -24,7 +24,7 @@
import static org.virep.jdabot.utils.Utils.secondsToSeperatedTime;
-public class SlowmodeCommand implements Command {
+public class SlowmodeCommand implements SlashCommand {
@Override
public String getName() {
return "slowmode";
diff --git a/src/main/java/org/virep/jdabot/commands/moderation/UnbanCommand.java b/src/main/java/org/virep/jdabot/commands/moderation/UnbanCommand.java
index 21f9008..f89160b 100644
--- a/src/main/java/org/virep/jdabot/commands/moderation/UnbanCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/moderation/UnbanCommand.java
@@ -14,7 +14,7 @@
import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData;
import net.dv8tion.jda.internal.utils.Helpers;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.util.ArrayList;
import java.util.Collections;
@@ -22,7 +22,7 @@
import java.util.Optional;
import java.util.regex.Matcher;
-public class UnbanCommand implements Command {
+public class UnbanCommand implements SlashCommand {
@Override
public String getName() {
return "unban";
diff --git a/src/main/java/org/virep/jdabot/commands/moderation/WarnCommand.java b/src/main/java/org/virep/jdabot/commands/moderation/WarnCommand.java
index 3688e02..667c3be 100644
--- a/src/main/java/org/virep/jdabot/commands/moderation/WarnCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/moderation/WarnCommand.java
@@ -23,7 +23,7 @@
import org.slf4j.LoggerFactory;
import org.virep.jdabot.database.Database;
import org.virep.jdabot.language.Language;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import org.virep.jdabot.utils.ErrorManager;
import org.virep.jdabot.utils.Utils;
@@ -40,7 +40,7 @@
import java.util.concurrent.TimeUnit;
-public class WarnCommand implements Command {
+public class WarnCommand implements SlashCommand {
private static final Logger log = LoggerFactory.getLogger(WarnCommand.class);
@Override
diff --git a/src/main/java/org/virep/jdabot/commands/music/ClearQueueCommand.java b/src/main/java/org/virep/jdabot/commands/music/ClearQueueCommand.java
index 65f0a3c..9e6aa76 100644
--- a/src/main/java/org/virep/jdabot/commands/music/ClearQueueCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/music/ClearQueueCommand.java
@@ -11,14 +11,14 @@
import org.virep.jdabot.music.AudioManagerController;
import org.virep.jdabot.music.GuildAudioManager;
import org.virep.jdabot.music.TrackScheduler;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
-public class ClearQueueCommand implements Command {
+public class ClearQueueCommand implements SlashCommand {
@Override
public String getName() {
return "clearqueue";
diff --git a/src/main/java/org/virep/jdabot/commands/music/JoinCommand.java b/src/main/java/org/virep/jdabot/commands/music/JoinCommand.java
index e117780..3597505 100644
--- a/src/main/java/org/virep/jdabot/commands/music/JoinCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/music/JoinCommand.java
@@ -11,14 +11,14 @@
import org.virep.jdabot.language.Language;
import org.virep.jdabot.music.AudioManagerController;
import org.virep.jdabot.music.GuildAudioManager;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
-public class JoinCommand implements Command {
+public class JoinCommand implements SlashCommand {
@Override
public String getName() {
return "join";
diff --git a/src/main/java/org/virep/jdabot/commands/music/LoopingCommand.java b/src/main/java/org/virep/jdabot/commands/music/LoopingCommand.java
index 5b21071..e8fa762 100644
--- a/src/main/java/org/virep/jdabot/commands/music/LoopingCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/music/LoopingCommand.java
@@ -11,14 +11,14 @@
import org.virep.jdabot.music.AudioManagerController;
import org.virep.jdabot.music.GuildAudioManager;
import org.virep.jdabot.music.TrackScheduler;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
-public class LoopingCommand implements Command {
+public class LoopingCommand implements SlashCommand {
@Override
public String getName() {
return "looping";
diff --git a/src/main/java/org/virep/jdabot/commands/music/NowPlayingCommand.java b/src/main/java/org/virep/jdabot/commands/music/NowPlayingCommand.java
index 5bfed67..d008e17 100644
--- a/src/main/java/org/virep/jdabot/commands/music/NowPlayingCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/music/NowPlayingCommand.java
@@ -14,7 +14,7 @@
import org.virep.jdabot.language.Language;
import org.virep.jdabot.music.AudioManagerController;
import org.virep.jdabot.music.GuildAudioManager;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import org.virep.jdabot.utils.Utils;
import java.time.Instant;
@@ -23,7 +23,7 @@
import java.util.List;
import java.util.Objects;
-public class NowPlayingCommand implements Command {
+public class NowPlayingCommand implements SlashCommand {
@Override
public String getName() {
return "nowplaying";
diff --git a/src/main/java/org/virep/jdabot/commands/music/PauseCommand.java b/src/main/java/org/virep/jdabot/commands/music/PauseCommand.java
index efe2631..cb4abd0 100644
--- a/src/main/java/org/virep/jdabot/commands/music/PauseCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/music/PauseCommand.java
@@ -11,14 +11,14 @@
import org.virep.jdabot.language.Language;
import org.virep.jdabot.music.AudioManagerController;
import org.virep.jdabot.music.GuildAudioManager;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
-public class PauseCommand implements Command {
+public class PauseCommand implements SlashCommand {
@Override
public String getName() {
return "pause";
diff --git a/src/main/java/org/virep/jdabot/commands/music/PlayCommand.java b/src/main/java/org/virep/jdabot/commands/music/PlayCommand.java
index 291693d..41a6c64 100644
--- a/src/main/java/org/virep/jdabot/commands/music/PlayCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/music/PlayCommand.java
@@ -20,7 +20,7 @@
import org.virep.jdabot.music.AudioLoadHandler;
import org.virep.jdabot.music.AudioManagerController;
import org.virep.jdabot.music.GuildAudioManager;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.io.IOException;
import java.net.MalformedURLException;
@@ -30,7 +30,7 @@
import java.util.List;
import java.util.Objects;
-public class PlayCommand implements Command {
+public class PlayCommand implements SlashCommand {
@Override
public String getName() {
diff --git a/src/main/java/org/virep/jdabot/commands/music/QueueCommand.java b/src/main/java/org/virep/jdabot/commands/music/QueueCommand.java
index 601199e..99b540a 100644
--- a/src/main/java/org/virep/jdabot/commands/music/QueueCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/music/QueueCommand.java
@@ -15,7 +15,7 @@
import org.virep.jdabot.music.AudioManagerController;
import org.virep.jdabot.music.GuildAudioManager;
import org.virep.jdabot.music.TrackScheduler;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.awt.*;
import java.time.Instant;
@@ -24,7 +24,7 @@
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
-public class QueueCommand implements Command {
+public class QueueCommand implements SlashCommand {
@Override
public String getName() {
return "queue";
diff --git a/src/main/java/org/virep/jdabot/commands/music/ResumeCommand.java b/src/main/java/org/virep/jdabot/commands/music/ResumeCommand.java
index b2d595c..93b6796 100644
--- a/src/main/java/org/virep/jdabot/commands/music/ResumeCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/music/ResumeCommand.java
@@ -11,14 +11,14 @@
import org.virep.jdabot.language.Language;
import org.virep.jdabot.music.AudioManagerController;
import org.virep.jdabot.music.GuildAudioManager;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
-public class ResumeCommand implements Command {
+public class ResumeCommand implements SlashCommand {
@Override
public String getName() {
return "resume";
diff --git a/src/main/java/org/virep/jdabot/commands/music/SeekCommand.java b/src/main/java/org/virep/jdabot/commands/music/SeekCommand.java
index 696b7ec..b104ce2 100644
--- a/src/main/java/org/virep/jdabot/commands/music/SeekCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/music/SeekCommand.java
@@ -14,7 +14,7 @@
import org.virep.jdabot.language.Language;
import org.virep.jdabot.music.AudioManagerController;
import org.virep.jdabot.music.GuildAudioManager;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.util.ArrayList;
import java.util.Collections;
@@ -23,7 +23,7 @@
import static org.virep.jdabot.utils.Utils.lengthToMillis;
-public class SeekCommand implements Command {
+public class SeekCommand implements SlashCommand {
@Override
public String getName() {
return "seek";
diff --git a/src/main/java/org/virep/jdabot/commands/music/ShuffleCommand.java b/src/main/java/org/virep/jdabot/commands/music/ShuffleCommand.java
index bb1e97b..4b5e35d 100644
--- a/src/main/java/org/virep/jdabot/commands/music/ShuffleCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/music/ShuffleCommand.java
@@ -11,14 +11,14 @@
import org.virep.jdabot.language.Language;
import org.virep.jdabot.music.AudioManagerController;
import org.virep.jdabot.music.GuildAudioManager;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
-public class ShuffleCommand implements Command {
+public class ShuffleCommand implements SlashCommand {
@Override
public String getName() {
return "shuffle";
diff --git a/src/main/java/org/virep/jdabot/commands/music/SkipCommand.java b/src/main/java/org/virep/jdabot/commands/music/SkipCommand.java
index a85ea8a..204b0f7 100644
--- a/src/main/java/org/virep/jdabot/commands/music/SkipCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/music/SkipCommand.java
@@ -14,14 +14,14 @@
import org.virep.jdabot.music.AudioManagerController;
import org.virep.jdabot.music.GuildAudioManager;
import org.virep.jdabot.music.TrackScheduler;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
-public class SkipCommand implements Command {
+public class SkipCommand implements SlashCommand {
@Override
public String getName() {
return "skip";
diff --git a/src/main/java/org/virep/jdabot/commands/music/StopCommand.java b/src/main/java/org/virep/jdabot/commands/music/StopCommand.java
index 51e04f0..d9b8383 100644
--- a/src/main/java/org/virep/jdabot/commands/music/StopCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/music/StopCommand.java
@@ -9,14 +9,14 @@
import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData;
import org.virep.jdabot.language.Language;
import org.virep.jdabot.music.AudioManagerController;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
-public class StopCommand implements Command {
+public class StopCommand implements SlashCommand {
@Override
public String getName() {
return "stop";
diff --git a/src/main/java/org/virep/jdabot/commands/music/VolumeCommand.java b/src/main/java/org/virep/jdabot/commands/music/VolumeCommand.java
index 5025970..746811b 100644
--- a/src/main/java/org/virep/jdabot/commands/music/VolumeCommand.java
+++ b/src/main/java/org/virep/jdabot/commands/music/VolumeCommand.java
@@ -14,14 +14,14 @@
import org.virep.jdabot.language.Language;
import org.virep.jdabot.music.AudioManagerController;
import org.virep.jdabot.music.GuildAudioManager;
-import org.virep.jdabot.slashcommandhandler.Command;
+import org.virep.jdabot.handlers.SlashCommand;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
-public class VolumeCommand implements Command {
+public class VolumeCommand implements SlashCommand {
@Override
public String getName() {
return "volume";
diff --git a/src/main/java/org/virep/jdabot/slashcommandhandler/Command.java b/src/main/java/org/virep/jdabot/handlers/SlashCommand.java
similarity index 85%
rename from src/main/java/org/virep/jdabot/slashcommandhandler/Command.java
rename to src/main/java/org/virep/jdabot/handlers/SlashCommand.java
index 691074d..3229fb2 100644
--- a/src/main/java/org/virep/jdabot/slashcommandhandler/Command.java
+++ b/src/main/java/org/virep/jdabot/handlers/SlashCommand.java
@@ -1,4 +1,4 @@
-package org.virep.jdabot.slashcommandhandler;
+package org.virep.jdabot.handlers;
import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
@@ -6,7 +6,7 @@
import java.util.List;
-public interface Command {
+public interface SlashCommand {
public String getName();
public SlashCommandData getCommandData();
diff --git a/src/main/java/org/virep/jdabot/slashcommandhandler/SlashHandler.java b/src/main/java/org/virep/jdabot/handlers/SlashHandler.java
similarity index 77%
rename from src/main/java/org/virep/jdabot/slashcommandhandler/SlashHandler.java
rename to src/main/java/org/virep/jdabot/handlers/SlashHandler.java
index ef8d041..9a0b151 100644
--- a/src/main/java/org/virep/jdabot/slashcommandhandler/SlashHandler.java
+++ b/src/main/java/org/virep/jdabot/handlers/SlashHandler.java
@@ -1,4 +1,4 @@
-package org.virep.jdabot.slashcommandhandler;
+package org.virep.jdabot.handlers;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.Guild;
@@ -14,7 +14,7 @@
public class SlashHandler {
private final JDA jda;
- public static final Map slashCommandMap = new HashMap<>();
+ public static final Map slashCommandMap = new HashMap<>();
public SlashHandler(JDA jda) {
this.jda = jda;
@@ -32,14 +32,14 @@ public void addCommands() throws NoSuchMethodException, InvocationTargetExceptio
CommandListUpdateAction guildUpdate = guild.updateCommands();
Reflections reflectionsCommands = new Reflections("org.virep.jdabot.commands");
- Set> commandClasses = reflectionsCommands.getSubTypesOf(Command.class);
+ Set> commandClasses = reflectionsCommands.getSubTypesOf(SlashCommand.class);
- for (Class extends Command> commandClass : commandClasses) {
+ for (Class extends SlashCommand> commandClass : commandClasses) {
if (Modifier.isAbstract(commandClass.getModifiers())) {
continue;
}
- Command command = commandClass.getConstructor().newInstance();
+ SlashCommand command = commandClass.getConstructor().newInstance();
if (command.isDev()) guildUpdate.addCommands(command.getCommandData());
else globalUpdate.addCommands(command.getCommandData());
@@ -51,7 +51,7 @@ public void addCommands() throws NoSuchMethodException, InvocationTargetExceptio
guildUpdate.queue();
}
- public Map getSlashCommandMap() {
+ public Map getSlashCommandMap() {
return slashCommandMap;
}
}
diff --git a/src/main/java/org/virep/jdabot/handlers/TextCommand.java b/src/main/java/org/virep/jdabot/handlers/TextCommand.java
new file mode 100644
index 0000000..e2f77da
--- /dev/null
+++ b/src/main/java/org/virep/jdabot/handlers/TextCommand.java
@@ -0,0 +1,13 @@
+package org.virep.jdabot.handlers;
+
+import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
+
+import java.sql.SQLException;
+
+public interface TextCommand {
+ public String getName();
+
+ public boolean isDev();
+
+ public void execute(MessageReceivedEvent event, String[] args) throws SQLException;
+}
diff --git a/src/main/java/org/virep/jdabot/handlers/TextHandler.java b/src/main/java/org/virep/jdabot/handlers/TextHandler.java
new file mode 100644
index 0000000..c648927
--- /dev/null
+++ b/src/main/java/org/virep/jdabot/handlers/TextHandler.java
@@ -0,0 +1,53 @@
+package org.virep.jdabot.handlers;
+
+import net.dv8tion.jda.api.JDA;
+import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
+import net.dv8tion.jda.api.requests.restaction.CommandListUpdateAction;
+import org.reflections.Reflections;
+
+import java.io.FileNotFoundException;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Modifier;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+public class TextHandler {
+ public static final Map textCommandMap = new HashMap<>();
+
+
+ // IntelliJ thinks CommandListUpdateAction#addCommands() result is ignored
+ // though it is queued line 38
+
+ @SuppressWarnings("ResultOfMethodCallIgnored")
+ public void addCommands() throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException, FileNotFoundException {
+ Reflections reflectionsCommands = new Reflections("org.virep.jdabot.textcommands");
+ Set> commandClasses = reflectionsCommands.getSubTypesOf(TextCommand.class);
+
+ for (Class extends TextCommand> commandClass : commandClasses) {
+ if (Modifier.isAbstract(commandClass.getModifiers())) {
+ continue;
+ }
+
+ TextCommand command = commandClass.getConstructor().newInstance();
+
+ textCommandMap.put(command.getName(), command);
+ }
+ }
+
+ public Map getTextCommandMap() {
+ return textCommandMap;
+ }
+
+ public void handleCommand(MessageReceivedEvent event, String commandName, String[] args) throws SQLException {
+ TextCommand command = textCommandMap.get(commandName);
+
+ if (command != null) {
+ if (command.isDev() && !event.getChannel().getId().equals("580657468821078017")) return;
+
+ command.execute(event, args);
+ }
+ }
+}
diff --git a/src/main/java/org/virep/jdabot/listeners/ButtonInteractionListener.java b/src/main/java/org/virep/jdabot/listeners/ButtonInteractionListener.java
index c0a78e7..a991d4c 100644
--- a/src/main/java/org/virep/jdabot/listeners/ButtonInteractionListener.java
+++ b/src/main/java/org/virep/jdabot/listeners/ButtonInteractionListener.java
@@ -4,16 +4,21 @@
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
+import net.dv8tion.jda.api.interactions.commands.OptionMapping;
import net.dv8tion.jda.api.interactions.components.buttons.Button;
import net.dv8tion.jda.api.utils.AttachedFile;
import net.dv8tion.jda.api.utils.FileUpload;
import org.virep.jdabot.commands.games.TTTCommand;
import org.virep.jdabot.commands.moderation.BansCommand;
+import org.virep.jdabot.database.Database;
import org.virep.jdabot.language.Language;
import org.virep.jdabot.music.AudioManagerController;
import org.virep.jdabot.music.GuildAudioManager;
import javax.annotation.Nonnull;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
import java.time.Instant;
import java.util.List;
import java.util.Map;
@@ -28,6 +33,42 @@ public void onButtonInteraction(@Nonnull ButtonInteractionEvent event) {
Guild guild = event.getGuild();
Button button = event.getButton();
+ if (button.getId().equals("button:register:accept")) {
+
+ event.getMessage().editMessage("""
+ **Rift Pulse: Rules of Engagement**
+
+ Welcome, esteemed Netrunner! Your unique identity has been etched into the annals of the virtual world. As you prepare to delve into the Ciphered Nexus, here are the rules you must abide by:
+
+ 1. **Respect Others:** Treat your fellow Netrunners with courtesy and respect. Healthy discourse enriches our shared experience.
+ 2. **No Spoilers:** Guard the secrets of the game. Avoid revealing in-game information or puzzle solutions to maintain the thrill for everyone.
+ 3. **Fair Play:** Uphold the spirit of fair competition. Do not resort to cheats, hacks, or exploits. The challenge makes victory sweeter.
+ 4. **Immerse Yourself:** Embrace the world of Rift Pulse. Develop a character, interact with NPCs, and explore the narrative depths.
+ 5. **Have Fun:** Ultimately, this world is crafted for your enjoyment. Let your creativity thrive, and revel in the stories you create.
+
+ Your commitment to these principles ensures a vibrant and engaging experience for all Netrunners. Your journey begins now. Type `!help` to familiarize yourself with available commands.
+
+ May your code be elegant, and your exploits legendary. The digital realm eagerly anticipates your influence.
+
+ """).setComponents().queue();
+
+ try (Connection connection = Database.getConnection(); PreparedStatement insertStatement = connection.prepareStatement("INSERT INTO game_profile (userID) VALUES (?)")) {
+ insertStatement.setString(1, event.getUser().getId());
+
+ insertStatement.executeUpdate();
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ } else if (button.getId().equals("button:register:cancel")) {
+ event.getMessage().editMessage("""
+ **Rift Pulse: Registration**
+
+ Understood. If you change your mind and decide to join the adventure, simply type `!register` anytime.
+
+ Thank you for considering Rift Pulse: Chronicles of the Ciphered Nexus.
+ """).setComponents().queue();
+ }
+
if (button.getId().startsWith("button:bans")) {
String[] labels = button.getId().split(":");
diff --git a/src/main/java/org/virep/jdabot/listeners/SelectMenuInteractionListener.java b/src/main/java/org/virep/jdabot/listeners/SelectMenuInteractionListener.java
index e228079..166a719 100644
--- a/src/main/java/org/virep/jdabot/listeners/SelectMenuInteractionListener.java
+++ b/src/main/java/org/virep/jdabot/listeners/SelectMenuInteractionListener.java
@@ -8,13 +8,16 @@
import net.dv8tion.jda.api.interactions.components.ActionRow;
import net.dv8tion.jda.api.interactions.components.selections.SelectOption;
import net.dv8tion.jda.api.interactions.components.selections.StringSelectMenu;
+import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONTokener;
+import org.virep.jdabot.commands.games.ActivityCommand;
import org.virep.jdabot.database.Database;
import org.virep.jdabot.language.Language;
import org.virep.jdabot.utils.ErrorManager;
+import java.awt.*;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
@@ -29,6 +32,9 @@
import java.util.Objects;
public class SelectMenuInteractionListener extends ListenerAdapter {
+ InputStream extractedInputStream = ActivityCommand.class.getResourceAsStream("/extractedResources.json");
+ InputStream industrialInputStream = ActivityCommand.class.getResourceAsStream("/industrialResources.json");
+
@Override
public void onStringSelectInteraction(StringSelectInteractionEvent event) {
Guild guild = event.getGuild();
@@ -146,5 +152,116 @@ public void onStringSelectInteraction(StringSelectInteractionEvent event) {
event.getInteraction().editMessageEmbeds(embed).queue();
}
+
+ if (event.getSelectMenu().getId().equals("selectMenu:inventoryMenu")) {
+ String value = event.getSelectedOptions().get(0).getValue();
+ MessageEmbed baseEmbed = event.getMessage().getEmbeds().get(0);
+ MessageEmbed embed = null;
+
+ EmbedBuilder embedBuilder = new EmbedBuilder()
+ .setColor(Color.RED)
+ .setTimestamp(Instant.now());
+
+ if (value.equals("selectMenu:inventoryMenu:general")) {
+ if (baseEmbed.getTitle().contains("General Information") || baseEmbed.getTitle().contains("Informations Générales")) embed = baseEmbed;
+ else {
+ try (Connection connection = Database.getConnection(); PreparedStatement statement = connection.prepareStatement("SELECT * FROM inventory WHERE userID = ?")) {
+ statement.setString(1, event.getUser().getId());
+
+ ResultSet result = statement.executeQuery();
+
+ if (!result.first()) {
+ event.reply(Language.getString("INVENTORY_NOT_REGISTERED", guild)).queue();
+ return;
+ }
+ InputStream in = ActivityCommand.class.getResourceAsStream("/items.json");
+
+ JSONTokener tokener = new JSONTokener(in);
+ JSONObject itemObject = new JSONObject(tokener);
+
+ embedBuilder
+ .setTitle(String.format(Language.getString("INVENTORY_EMBED_GENERAL_TITLE", guild), event.getUser().getName()))
+ .addField("General", Language.getString("INVENTORY_EMBED_GENERAL_FIELD_ONE", guild).formatted(result.getInt("level"), result.getInt("xp"), 0, result.getInt("mana"), 100, result.getInt("hp"), 100), true)
+ .addField("Items", Language.getString("INVENTORY_EMBED_GENERAL_FIELD_ITEMS", guild).formatted(
+ itemObject.getJSONObject("pickaxe").getString(String.valueOf(result.getInt("pickaxe"))),
+ itemObject.getJSONObject("shovel").getString(String.valueOf(result.getInt("shovel"))),
+ itemObject.getJSONObject("axe").getString(String.valueOf(result.getInt("axe"))),
+ itemObject.getJSONObject("sword").getString(String.valueOf(result.getInt("sword"))),
+ itemObject.getJSONObject("shield").getString(String.valueOf(result.getInt("shield"))),
+ itemObject.getJSONObject("jetpack").getString(String.valueOf(result.getInt("jetpack"))),
+ itemObject.getJSONObject("summonable").getString(String.valueOf(result.getInt("summonable")))
+ ), false);
+ embed = embedBuilder.build();
+
+ } catch (SQLException e) {
+ ErrorManager.handleNoEvent(e);
+ }
+ }
+ } else if (value.equals("selectMenu:inventoryMenu:extracted")) {
+ if (baseEmbed.getTitle().contains("Extracted Resources") || baseEmbed.getTitle().contains("Ressources Basiques")) embed = baseEmbed;
+ else {
+ try (Connection connection = Database.getConnection(); PreparedStatement statement = connection.prepareStatement("SELECT * FROM inventory WHERE userID = ?")) {
+ statement.setString(1, event.getUser().getId());
+
+ ResultSet result = statement.executeQuery();
+
+ if (!result.first()) {
+ event.reply(Language.getString("INVENTORY_NOT_REGISTERED", guild)).queue();
+ return;
+ }
+
+ embedBuilder.setTitle(String.format(Language.getString("INVENTORY_EMBED_EXTRACTED_TITLE", guild), event.getUser().getName()));
+ embedBuilder.addField(Language.getString("INVENTORY_EMBED_EXTRACTED_FIELD_WOOD_TITLE", guild), Language.getString("INVENTORY_EMBED_EXTRACTED_FIELD_WOOD_VALUE", guild).formatted(result.getInt("oak_wood"), result.getInt("birch_wood")), true);
+ embedBuilder.addField(Language.getString("INVENTORY_EMBED_EXTRACTED_FIELD_STONE_TITLE", guild), Language.getString("INVENTORY_EMBED_EXTRACTED_FIELD_STONE_VALUE", guild).formatted(result.getInt("cobblestone")), true);
+ embedBuilder.addField(Language.getString("INVENTORY_EMBED_EXTRACTED_FIELD_MINERALS_TITLE", guild), Language.getString("INVENTORY_EMBED_EXTRACTED_FIELD_MINERALS_VALUE", guild).formatted(
+ result.getInt("iron"),
+ result.getInt("gold"),
+ result.getInt("diamond"),
+ result.getInt("emerald"),
+ result.getInt("obsidian"),
+ result.getInt("copper"),
+ result.getInt("cobalt"),
+ result.getInt("aluminum"),
+ result.getInt("tin"),
+ result.getInt("ardite")
+ ), true);
+
+ embed = embedBuilder.build();
+ } catch (SQLException e) {
+ ErrorManager.handleNoEvent(e);
+ }
+
+ }
+ } else if (value.equals("selectMenu:inventoryMenu:industrial")) {
+ if (baseEmbed.getTitle().contains("Industrial Resources") || baseEmbed.getTitle().contains("Ressources Industrielles")) embed = baseEmbed;
+ else {
+ try (Connection connection = Database.getConnection(); PreparedStatement statement = connection.prepareStatement("SELECT * FROM inventory WHERE userID = ?")) {
+ statement.setString(1, event.getUser().getId());
+
+ ResultSet result = statement.executeQuery();
+
+ if (!result.first()) {
+ event.reply(Language.getString("INVENTORY_NOT_REGISTERED", guild)).queue();
+ return;
+ }
+
+ embedBuilder.setTitle(String.format(Language.getString("INVENTORY_EMBED_INDUSTRIAL_TITLE", guild), event.getUser().getName()));
+ embedBuilder.addField(Language.getString("INVENTORY_EMBED_INDUSTRIAL_FIELD_LIQUIDS_TITLE", guild), Language.getString("INVENTORY_EMBED_INDUSTRIAL_FIELD_LIQUIDS_VALUE", guild).formatted(result.getInt("oil")), true);
+ embedBuilder.addField(Language.getString("INVENTORY_EMBED_INDUSTRIAL_FIELD_ALLOY_TITLE", guild), Language.getString("INVENTORY_EMBED_INDUSTRIAL_FIELD_ALLOY_VALUE", guild).formatted(
+ result.getInt("manyullyn"),
+ result.getInt("bronze"),
+ result.getInt("alumite"),
+ result.getInt("aluminum_brass")
+ ), true);
+
+ embed = embedBuilder.build();
+ } catch (SQLException e) {
+ ErrorManager.handleNoEvent(e);
+ }
+ }
+ }
+
+ event.getInteraction().editMessageEmbeds(embed).queue();
+ }
}
}
diff --git a/src/main/java/org/virep/jdabot/listeners/SlashListener.java b/src/main/java/org/virep/jdabot/listeners/SlashListener.java
index e7e329f..f95120e 100644
--- a/src/main/java/org/virep/jdabot/listeners/SlashListener.java
+++ b/src/main/java/org/virep/jdabot/listeners/SlashListener.java
@@ -6,8 +6,8 @@
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.virep.jdabot.slashcommandhandler.Command;
-import org.virep.jdabot.slashcommandhandler.SlashHandler;
+import org.virep.jdabot.handlers.SlashCommand;
+import org.virep.jdabot.handlers.SlashHandler;
import org.virep.jdabot.utils.Config;
import org.virep.jdabot.utils.Utils;
@@ -33,11 +33,11 @@ public void onSlashCommandInteraction(@Nonnull SlashCommandInteractionEvent even
return;
}
String commandName = event.getName();
- Map commandMap = slashHandler.getSlashCommandMap();
+ Map commandMap = slashHandler.getSlashCommandMap();
if (commandMap.containsKey(commandName)) {
- Command command = commandMap.get(commandName);
+ SlashCommand command = commandMap.get(commandName);
List missingBotPermissions = Utils.getMissingPermissions(event.getGuild().getSelfMember().getPermissions(), command.getBotPermissions());
if (!missingBotPermissions.isEmpty()) {
diff --git a/src/main/java/org/virep/jdabot/listeners/TextCommandListener.java b/src/main/java/org/virep/jdabot/listeners/TextCommandListener.java
new file mode 100644
index 0000000..6093561
--- /dev/null
+++ b/src/main/java/org/virep/jdabot/listeners/TextCommandListener.java
@@ -0,0 +1,42 @@
+package org.virep.jdabot.listeners;
+
+import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
+import net.dv8tion.jda.api.hooks.ListenerAdapter;
+import org.jetbrains.annotations.NotNull;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.virep.jdabot.handlers.SlashHandler;
+import org.virep.jdabot.handlers.TextHandler;
+
+import javax.annotation.Nonnull;
+import java.sql.SQLException;
+import java.util.Arrays;
+
+public class TextCommandListener extends ListenerAdapter {
+ private final TextHandler textHandler;
+ private final String prefix = "h!";
+
+ private final static Logger log = LoggerFactory.getLogger(TextCommandListener.class);
+
+ public TextCommandListener(TextHandler textHandler) { this.textHandler = textHandler;}
+
+ @Override
+ public void onMessageReceived(@NotNull MessageReceivedEvent event) {
+ if (event.getAuthor().isBot()) return;
+ if (!event.getAuthor().getId().equals("604779545018761237")) return;
+
+ String messageContent = event.getMessage().getContentRaw();
+
+ if (messageContent.startsWith("h!")) {
+ String[] commandArgs = messageContent.substring(prefix.length()).split("\\s+");
+ String commandName = commandArgs[0].toLowerCase();
+ String[] args = Arrays.copyOfRange(commandArgs, 1, commandArgs.length);
+
+ try {
+ textHandler.handleCommand(event, commandName, args);
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+}
diff --git a/src/main/java/org/virep/jdabot/textcommands/InventoryCommand.java b/src/main/java/org/virep/jdabot/textcommands/InventoryCommand.java
new file mode 100644
index 0000000..28a70ae
--- /dev/null
+++ b/src/main/java/org/virep/jdabot/textcommands/InventoryCommand.java
@@ -0,0 +1,93 @@
+package org.virep.jdabot.textcommands;
+
+import net.dv8tion.jda.api.EmbedBuilder;
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.entities.Message;
+import net.dv8tion.jda.api.entities.MessageEmbed;
+import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
+import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
+import net.dv8tion.jda.api.interactions.commands.build.Commands;
+import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData;
+import net.dv8tion.jda.api.interactions.components.selections.StringSelectMenu;
+import org.json.JSONObject;
+import org.json.JSONTokener;
+import org.virep.jdabot.commands.games.ActivityCommand;
+import org.virep.jdabot.database.Database;
+import org.virep.jdabot.handlers.TextCommand;
+import org.virep.jdabot.language.Language;
+import org.virep.jdabot.utils.ErrorManager;
+
+import java.awt.*;
+import java.io.InputStream;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public class InventoryCommand implements TextCommand {
+ @Override
+ public String getName() {
+ return "inventory";
+ }
+
+ @Override
+ public boolean isDev() {
+ return true;
+ }
+
+
+ //TODO: Don't display resources the player doesn't have
+ @Override
+ public void execute(MessageReceivedEvent event, String[] args) throws SQLException {
+ Guild guild = event.getGuild();
+ Message message = event.getMessage();
+
+ try (Connection connection = Database.getConnection(); PreparedStatement statement = connection.prepareStatement("SELECT * FROM inventory WHERE userID = ?")) {
+ statement.setString(1, event.getAuthor().getId());
+
+ ResultSet result = statement.executeQuery();
+
+ if (!result.first()) {
+ message.reply(Language.getString("INVENTORY_NOT_REGISTERED", guild)).queue();
+ return;
+ }
+
+ InputStream in = ActivityCommand.class.getResourceAsStream("/items.json");
+
+ JSONTokener tokener = new JSONTokener(in);
+ JSONObject itemObject = new JSONObject(tokener);
+
+ MessageEmbed embed = new EmbedBuilder()
+ .setTitle(String.format(Language.getString("INVENTORY_EMBED_GENERAL_TITLE", guild), event.getAuthor().getName()))
+ .setColor(Color.RED)
+ .addField("General", Language.getString("INVENTORY_EMBED_GENERAL_FIELD_ONE", guild).formatted(result.getInt("level"), result.getInt("xp"), 0, result.getInt("mana"), 100, result.getInt("hp"), 100), true)
+ .addField("Items", Language.getString("INVENTORY_EMBED_GENERAL_FIELD_ITEMS", guild).formatted(
+ itemObject.getJSONObject("pickaxe").getString(String.valueOf(result.getInt("pickaxe"))),
+ itemObject.getJSONObject("shovel").getString(String.valueOf(result.getInt("shovel"))),
+ itemObject.getJSONObject("axe").getString(String.valueOf(result.getInt("axe"))),
+ itemObject.getJSONObject("sword").getString(String.valueOf(result.getInt("sword"))),
+ itemObject.getJSONObject("shield").getString(String.valueOf(result.getInt("shield"))),
+ itemObject.getJSONObject("jetpack").getString(String.valueOf(result.getInt("jetpack"))),
+ itemObject.getJSONObject("summonable").getString(String.valueOf(result.getInt("summonable")))
+ ), false)
+ .setTimestamp(Instant.now())
+ .build();
+
+ StringSelectMenu selectMenu = StringSelectMenu.create("selectMenu:inventoryMenu")
+ .addOption(Language.getString("INVENTORY_SELECTMENU_GENERAL_TITLE", guild), "selectMenu:inventoryMenu:general", Language.getString("INVENTORY_SELECTMENU_GENERAL_DESCRIPTION", guild))
+ .addOption(Language.getString("INVENTORY_SELECTMENU_EXTRACTED_TITLE", guild), "selectMenu:inventoryMenu:extracted", Language.getString("INVENTORY_SELECTMENU_EXTRACTED_DESCRIPTION", guild))
+ .addOption(Language.getString("INVENTORY_SELECTMENU_INDUSTRIAL_TITLE", guild), "selectMenu:inventoryMenu:industrial", Language.getString("INVENTORY_SELECTMENU_INDUSTRIAL_DESCRIPTION", guild))
+ .setMinValues(1)
+ .build();
+
+ message.replyEmbeds(embed).addActionRow(selectMenu).queue();
+ } catch (SQLException e) {
+ throw new SQLException(e);
+ }
+ }
+}
diff --git a/src/main/java/org/virep/jdabot/textcommands/RegisterCommand.java b/src/main/java/org/virep/jdabot/textcommands/RegisterCommand.java
new file mode 100644
index 0000000..70c7cea
--- /dev/null
+++ b/src/main/java/org/virep/jdabot/textcommands/RegisterCommand.java
@@ -0,0 +1,106 @@
+package org.virep.jdabot.textcommands;
+
+import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.entities.Message;
+import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
+import net.dv8tion.jda.api.interactions.components.buttons.Button;
+import org.virep.jdabot.database.Database;
+import org.virep.jdabot.handlers.TextCommand;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+public class RegisterCommand implements TextCommand {
+ @Override
+ public String getName() {
+ return "register";
+ }
+ @Override
+ public boolean isDev() {
+ return true;
+ }
+
+ @Override
+ public void execute(MessageReceivedEvent event, String[] args) throws SQLException {
+ Guild guild = event.getGuild();
+ Message message = event.getMessage();
+
+ try (Connection connection = Database.getConnection(); PreparedStatement statement = connection.prepareStatement("SELECT * FROM game_profile WHERE userID = ?")) {
+ statement.setString(1, event.getAuthor().getId());
+
+ ResultSet result = statement.executeQuery();
+
+ if (result.first()) {
+ message.reply("""
+ **Rift Pulse: Welcome Back, Netrunner!**
+
+ Greetings, seasoned Netrunner!
+
+ Your presence in the Ciphered Nexus is recognized.
+ You stand as a stalwart guardian of digital secrets and a master of the virtual realm.
+
+ As you continue your journey through the world of Rift Pulse, remember that your choices carry weight and your skills are invaluable.
+ Dive deeper into the enigmatic missions, uncover hidden truths, and interact with the intricate web of characters that populate our digital universe.
+
+ Should you need assistance or wish to embark on a new adventure, type `!help` for available commands or `!missions` to explore ongoing tasks.
+
+ May your code be flawless, and your path in the Nexus be ever thrilling. Happy hacking, Netrunner!
+ """).queue();
+
+ return;
+ }
+
+ message.reply("""
+**Rift Pulse: Registration and Rules**
+
+Welcome to **Rift Pulse: Chronicles of the Ciphered Nexus**!
+In the depths of the digital abyss, where algorithms dance and secrets lie encoded, you stand on the precipice of a world veiled in shadows.
+
+Rift Pulse is not just a game; it is an odyssey through the enigmatic corridors of cyberspace. Here, amidst the neon-lit networks and encrypted databases, you'll craft your destiny as a Netrunner, a digital adept skilled in the art of hacking.
+Prepare to traverse a universe where hackers and corporations engage in an eternal dance of intrigue, where every keystroke could shape the fate of nations.
+In this vast digital expanse, the line between reality and virtuality blurs, and the choices you make echo across the digital ether.
+
+Before you enter this intricate realm of digital enigmas, we invite you to embark on a journey that transcends mere lines of code.
+Embark on thrilling missions that challenge your intellect, navigate complex webs of conspiracy, and uncover secrets that hold the fate of worlds.
+
+Alongside fellow Netrunners, you will confront corporate titans, decipher cryptic puzzles, and decide the destinies of digital empires.
+
+The Ciphered Nexus awaits your presence, Netrunner.
+Will you be the one to uncover the ultimate truth, or will you succumb to the shadows?
+
+Your adventure begins now.
+
+Would you like to register and venture into this captivating world?
+ """)
+ .addActionRow(
+ Button.success("button:register:accept", "Register"),
+ Button.danger("button:register:cancel", "Cancel")
+ ).queue();
+ }
+
+// message.reply().addComponents()
+
+ /*try (Connection connection = Database.getConnection(); PreparedStatement statement = connection.prepareStatement("SELECT * FROM inventory WHERE userID = ?")) {
+ statement.setString(1, event.getAuthor().getId());
+
+ ResultSet result = statement.executeQuery();
+
+ if (result.first()) {
+ message.reply(Language.getString("REGISTER_ALREADY_REGISTERED", guild)).queue();
+
+ return;
+ }
+
+ PreparedStatement insertStatement = connection.prepareStatement("INSERT INTO inventory (userID) VALUES (?)");
+ insertStatement.setString(1, event.getAuthor().getId());
+
+ insertStatement.executeUpdate();
+
+ message.reply(Language.getString("REGISTER_REGISTERED", guild)).queue();
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }*/
+ }
+}
diff --git a/src/main/resources/items.json b/src/main/resources/items.json
new file mode 100644
index 0000000..edc7f66
--- /dev/null
+++ b/src/main/resources/items.json
@@ -0,0 +1,23 @@
+{
+ "pickaxe": {
+ "0": "N/A"
+ },
+ "shovel": {
+ "0": "N/A"
+ },
+ "axe": {
+ "0": "N/A"
+ },
+ "sword": {
+ "0": "N/A"
+ },
+ "shield": {
+ "0": "N/A"
+ },
+ "jetpack": {
+ "0": "N/A"
+ },
+ "summonable": {
+ "0": "N/A"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/lang.json b/src/main/resources/lang.json
index 60aef57..cb83a70 100644
--- a/src/main/resources/lang.json
+++ b/src/main/resources/lang.json
@@ -54,9 +54,28 @@
"REACTIONROLE_REMOVE_NOROLE": "\u274C - Aucun rôle n'a été configuré pour cet emoji avec le reaction role.",
"REACTIONROLE_REMOVE_REMOVED": "\u2705 - Le role configuré pour cet emoji avec le reaction role a bien été retiré.",
- "TWITTER_REMOVE_DELETED": "\u2705 - Les notifications Twitter pour **%TWITTERUSER%** ont été supprimées.",
- "TWITTER_ADD_WRONGCHANNEL": "\u274C - Vous devez spécifier un salon textuel.",
- "TWITTER_REMOVE_ADDED": "\u2705 - Les notifications Twitter pour **%TWITTERUSER%** ont été ajoutées.",
+ "INVENTORY_NOT_REGISTERED": "\u274C - Vous n'êtes pas inscrit.",
+ "INVENTORY_EMBED_GENERAL_TITLE": "Inventaire de %s - Informations Générales",
+ "INVENTORY_EMBED_GENERAL_FIELD_ONE": "\uD83C\uDFC6 Niveau: %d (XP: %d, %d %%)\n\u2B50 Mana: %d/%d\n\u2764 Points de vie: %d/%d",
+ "INVENTORY_EMBED_GENERAL_FIELD_ITEMS": "<:pick:1137764818615549983>Pioche: %s\n<:shovel:1137753102804590612>Pelle: %s\n\uD83E\uDE93Hache: %s\n<:sword:1137765084005924935>Epee: %s\n\uD83D\uDEE1Bouclier: %s\n<:jetpack:1137753294446547044>Jetpack: %s\n\u2604Summonable: %s",
+ "INVENTORY_EMBED_EXTRACTED_TITLE": "Inventaire de %s - Ressources Basiques",
+ "INVENTORY_EMBED_EXTRACTED_FIELD_WOOD_TITLE": "Bois",
+ "INVENTORY_EMBED_EXTRACTED_FIELD_WOOD_VALUE": "<:oak:1137760069845536878>Bois de chêne: %d\n<:birch:1137760280852570152>Bois de bouleau: %d",
+ "INVENTORY_EMBED_EXTRACTED_FIELD_STONE_TITLE": "Pierre",
+ "INVENTORY_EMBED_EXTRACTED_FIELD_STONE_VALUE": "\uD83E\uDEA8Cobblestone: %d",
+ "INVENTORY_EMBED_EXTRACTED_FIELD_MINERALS_TITLE": "Minerais",
+ "INVENTORY_EMBED_EXTRACTED_FIELD_MINERALS_VALUE": "<:iron:1137752733764571296>Fer: %d\n<:gold:1137754223623295027>Or: %d\n\uD83D\uDC8EDiamant: %d\n<:emerald:1137754823530397778>Emeraude: %d\n<:obsidian:1137755475702718687>Obsidienne: %d\n<:copper:1137756036091084911>Cuivre: %d\n<:cobalt:1137756553928253441>Cobalt: %d\n<:aluminum:1137757021349879849>Aluminium: %d\n<:tin:1137757725955199016>Etain: %d\n<:ardite:1137758089311952946>Ardite: %d",
+ "INVENTORY_EMBED_INDUSTRIAL_TITLE": "Inventaire de %s - Ressources Industrielles",
+ "INVENTORY_EMBED_INDUSTRIAL_FIELD_LIQUIDS_TITLE": "Liquides",
+ "INVENTORY_EMBED_INDUSTRIAL_FIELD_LIQUIDS_VALUE": "\uD83D\uDEE2Pétrole: %d",
+ "INVENTORY_EMBED_INDUSTRIAL_FIELD_ALLOY_TITLE": "Minéraux d'Alliages",
+ "INVENTORY_EMBED_INDUSTRIAL_FIELD_ALLOY_VALUE": "<:manyullyn:1137758781481160826>Manyullyn: %d\n<:bronze:1137759160897917061>Bronze: %d\n<:alumite:1137759461054881883>Alumite: %d\n<:aluminumbrass:1137759630269878363>Aluminum Brass: %d",
+ "INVENTORY_SELECTMENU_GENERAL_TITLE": "Informations Générales",
+ "INVENTORY_SELECTMENU_GENERAL_DESCRIPTION": "Points de vie, Niveau, Mana, etc...",
+ "INVENTORY_SELECTMENU_EXTRACTED_TITLE": "Ressources Basiques",
+ "INVENTORY_SELECTMENU_EXTRACTED_DESCRIPTION": "Bois, Pierre, Terre, etc...",
+ "INVENTORY_SELECTMENU_INDUSTRIAL_TITLE": "Ressources Industrielles",
+ "INVENTORY_SELECTMENU_INDUSTRIAL_DESCRIPTION": "Pétroles, Ressources de machinerie, etc...",
"ACTIVITY_NOEXIST": "\u274C - Cette activité n'existe apparemment pas, veuillez signaler l'erreur.",
"ACTIVITY_BOOSTREQUIRED": "\u274C - Vous devez avoir un niveau de boost égal ou supérieur a 1.",
@@ -399,9 +418,28 @@
"REACTIONROLE_REMOVE_NOROLE": "\u274C - No role has been configured for this emoji in the reaction role.",
"REACTIONROLE_REMOVE_REMOVED": "\u2705 - The role configured for this emoji in the reaction role has been cleared.",
- "TWITTER_REMOVE_DELETED": "\u2705 - The Twitter Notifier for **%TWITTERUSER%** has been deleted.",
- "TWITTER_ADD_WRONGCHANNEL": "\u274C - You need to specify a text channel.",
- "TWITTER_REMOVE_ADDED": "\u2705 - The Twitter Notifier for **%TWITTERUSER%** has been added.",
+ "INVENTORY_NOT_REGISTERED": "\u274C - You are not registered.",
+ "INVENTORY_EMBED_GENERAL_TITLE": "%s's inventory - General Information",
+ "INVENTORY_EMBED_GENERAL_FIELD_ONE": "\uD83C\uDFC6 Level: %d (XP: %d, %d %%)\n\u2B50 Mana: %d/%d\n<:hp:1137764512666234980>Health Points: %d/%d",
+ "INVENTORY_EMBED_GENERAL_FIELD_ITEMS": "<:pick:1137764818615549983> Pickaxe: %s\n<:shovel:1137753102804590612> Shovel: %s\n\uD83E\uDE93 Axe: %s\n<:sword:1137765084005924935>Sword: %s\n\uD83D\uDEE1Shield: %s\n<:jetpack:1137753294446547044>Jetpack: %s\n\u2604Summonable: %s",
+ "INVENTORY_EMBED_EXTRACTED_TITLE": "%s's inventory - Extracted Resources",
+ "INVENTORY_EMBED_EXTRACTED_FIELD_WOOD_TITLE": "Woods",
+ "INVENTORY_EMBED_EXTRACTED_FIELD_WOOD_VALUE": "<:oak:1137760069845536878>Oak Wood: %d\n<:birch:1137760280852570152>Birch Wood: %d",
+ "INVENTORY_EMBED_EXTRACTED_FIELD_STONE_TITLE": "Stone",
+ "INVENTORY_EMBED_EXTRACTED_FIELD_STONE_VALUE": "\uD83E\uDEA8Cobblestone: %d",
+ "INVENTORY_EMBED_EXTRACTED_FIELD_MINERALS_TITLE": "Minerals",
+ "INVENTORY_EMBED_EXTRACTED_FIELD_MINERALS_VALUE": "<:iron:1137752733764571296>Iron: %d\n<:gold:1137754223623295027>Gold: %d\n\uD83D\uDC8EDiamond: %d\n<:emerald:1137754823530397778>Emerald: %d\n<:obsidian:1137755475702718687>Obsidian: %d\n<:copper:1137756036091084911>Copper: %d\n<:cobalt:1137756553928253441>Cobalt: %d\n<:aluminum:1137757021349879849>Aluminum: %d\n<:tin:1137757725955199016>Tin: %d\n<:ardite:1137758089311952946>Ardite: %d",
+ "INVENTORY_EMBED_INDUSTRIAL_TITLE": "%s's inventory - Industrial Resources",
+ "INVENTORY_EMBED_INDUSTRIAL_FIELD_LIQUIDS_TITLE": "Liquids",
+ "INVENTORY_EMBED_INDUSTRIAL_FIELD_LIQUIDS_VALUE": "\uD83D\uDEE2Oil: %d",
+ "INVENTORY_EMBED_INDUSTRIAL_FIELD_ALLOY_TITLE": "Alloy Minerals",
+ "INVENTORY_EMBED_INDUSTRIAL_FIELD_ALLOY_VALUE": "<:manyullyn:1137758781481160826>Manyullyn: %d\n<:bronze:1137759160897917061>Bronze: %d\n<:alumite:1137759461054881883>Alumite: %d\n<:aluminumbrass:1137759630269878363>Aluminum Brass: %d",
+ "INVENTORY_SELECTMENU_GENERAL_TITLE": "General Information",
+ "INVENTORY_SELECTMENU_GENERAL_DESCRIPTION": "Health Points, Level, Mana, etc...",
+ "INVENTORY_SELECTMENU_EXTRACTED_TITLE": "Extracted Resources",
+ "INVENTORY_SELECTMENU_EXTRACTED_DESCRIPTION": "Wood, Cobble, Dirt, etc...",
+ "INVENTORY_SELECTMENU_INDUSTRIAL_TITLE": "Industrial Resources",
+ "INVENTORY_SELECTMENU_INDUSTRIAL_DESCRIPTION": "Oil, Machinery Resources, etc...",
"ACTIVITY_NOEXIST": "\u274C - This activity somehow doesn't exist, please report the error.",
"ACTIVITY_BOOSTREQUIRED": "\u274C - You must be at least Boost Level 1 to start this activity.",