diff --git a/pom.xml b/pom.xml
index ae4c80a..365a5b9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,20 +19,29 @@
junit
junit
- 4.11
+ LATEST
test
net.dv8tion
JDA
- 4.0.0_54
+ LATEST
org.json
json
- 20190722
+ LATEST
+
+
+ com.rethinkdb
+ rethinkdb-driver
+ LATEST
+
+
+ com.google.code.gson
+ gson
+ LATEST
-
@@ -45,14 +54,11 @@
-
-
maven-clean-plugin
3.1.0
-
maven-resources-plugin
3.0.2
@@ -77,7 +83,6 @@
maven-deploy-plugin
2.8.2
-
maven-site-plugin
3.7.1
diff --git a/src/main/java/com/bbn/hadder/Hadder.java b/src/main/java/com/bbn/hadder/Hadder.java
index e7fdfd6..ffc15da 100644
--- a/src/main/java/com/bbn/hadder/Hadder.java
+++ b/src/main/java/com/bbn/hadder/Hadder.java
@@ -1,8 +1,8 @@
package com.bbn.hadder;
-import com.bbn.hadder.commands.Command;
import com.bbn.hadder.commands.TestCommand;
import com.bbn.hadder.commands.moderation.BanCommand;
+import com.bbn.hadder.commands.settings.PrefixCommand;
import com.bbn.hadder.core.CommandHandler;
import com.bbn.hadder.listener.*;
import net.dv8tion.jda.api.entities.Activity;
@@ -33,6 +33,9 @@ public class Hadder {
e.printStackTrace();
}
+ Rethink.connect();
+
+
DefaultShardManagerBuilder builder = new DefaultShardManagerBuilder();
builder.setShardsTotal(1);
@@ -41,11 +44,14 @@ public class Hadder {
CommandHandler.cmdlist.put("test", new TestCommand());
CommandHandler.cmdlist.put("ban", new BanCommand());
+ CommandHandler.cmdlist.put("prefix", new PrefixCommand());
builder.addEventListeners(
new MentionListener(),
new PrivateMessageListener(),
- new CommandListener());
+ new CommandListener(),
+ new GuildJoinListener(),
+ new GuildLeaveListener());
try {
ShardManager shardManager = builder.build();
diff --git a/src/main/java/com/bbn/hadder/Rethink.java b/src/main/java/com/bbn/hadder/Rethink.java
new file mode 100644
index 0000000..ac28f7f
--- /dev/null
+++ b/src/main/java/com/bbn/hadder/Rethink.java
@@ -0,0 +1,73 @@
+package com.bbn.hadder;
+
+import com.rethinkdb.RethinkDB;
+import com.rethinkdb.net.Connection;
+import com.rethinkdb.net.Cursor;
+import com.google.gson.JsonParser;
+
+import java.util.NoSuchElementException;
+
+/*
+ * @author Skidder / GregTCLTK
+ */
+
+public class Rethink {
+ private static RethinkDB r = RethinkDB.r;
+ static Connection conn;
+
+ public static boolean connect() {
+ try {
+ conn = r.connection().hostname("127.0.0.1").db("Hadder").port(28015).connect();
+ System.out.println("CONNECTED");
+ } catch (Exception e) {
+ System.out.println(e.toString());
+ System.out.println("CONNECTION FAILED");
+ }
+ return true;
+ }
+
+ public static void disconnect() {
+ conn.close();
+ System.out.println("DISCONNECTED");
+ }
+
+ public static String get(String table, String where, String value, String column) {
+ try {
+ Cursor cursor = r.table(table).filter(row -> row.g(where.toLowerCase()).eq(value)).run(conn);
+ if (cursor.hasNext()) {
+ String sad = new JsonParser().parse(cursor.next().toString()).getAsJsonObject().get(column).toString();
+ if (sad.startsWith("\"") && sad.endsWith("\"")) {
+ return sad.substring(1, sad.length()-1);
+ } else {
+ return sad;
+ }
+ } else return null;
+ } catch (NoSuchElementException e) {
+ return null;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return "<3";
+ }
+
+ public static String update(String table, String whatvalue, String where, String wherevalue) {
+ String out="";
+ try {
+ Cursor cursor = r.table(table).get(whatvalue).update(r.hashMap(where, wherevalue)).run(conn);
+ out=cursor.toString();
+ } catch (ClassCastException ignored) {}
+ return out;
+ }
+
+ public static String insertServer(String id) {
+ String out = "";
+ try {
+ Cursor cursor = r.table("server")
+ .insert(r.hashMap("id", id)
+ .with("prefix", "h.")
+ ).run(conn);
+ out = cursor.next().toString();
+ } catch (ClassCastException ignored) {}
+ return out;
+ }
+}
diff --git a/src/main/java/com/bbn/hadder/commands/Command.java b/src/main/java/com/bbn/hadder/commands/Command.java
index 9b1cf42..95b1468 100644
--- a/src/main/java/com/bbn/hadder/commands/Command.java
+++ b/src/main/java/com/bbn/hadder/commands/Command.java
@@ -7,5 +7,5 @@ package com.bbn.hadder.commands;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
public interface Command {
- void executed(MessageReceivedEvent event);
+ void executed(String[] args, MessageReceivedEvent event);
}
diff --git a/src/main/java/com/bbn/hadder/commands/TestCommand.java b/src/main/java/com/bbn/hadder/commands/TestCommand.java
index b12de03..4fd5742 100644
--- a/src/main/java/com/bbn/hadder/commands/TestCommand.java
+++ b/src/main/java/com/bbn/hadder/commands/TestCommand.java
@@ -8,7 +8,7 @@ import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
public class TestCommand implements Command {
- public void executed(MessageReceivedEvent event) {
+ public void executed(String[] args, MessageReceivedEvent event) {
event.getTextChannel().sendMessage("TEST my friends").queue();
}
}
diff --git a/src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java
index e39afff..ac52215 100644
--- a/src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java
+++ b/src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java
@@ -13,7 +13,7 @@ import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
public class BanCommand implements Command {
- public void executed(MessageReceivedEvent event) {
+ public void executed(String[] args, MessageReceivedEvent event) {
if (event.getGuild().getMemberById(event.getAuthor().getId()).hasPermission(Permission.BAN_MEMBERS) || event.getGuild().getOwner().getId().equals(event.getAuthor().getId())) {
if (event.getMessage().getMentionedMembers().size() == 1) {
Member victim = event.getMessage().getMentionedMembers().get(0);
diff --git a/src/main/java/com/bbn/hadder/commands/owner/ShutdownCommand.java b/src/main/java/com/bbn/hadder/commands/owner/ShutdownCommand.java
new file mode 100644
index 0000000..aea13fc
--- /dev/null
+++ b/src/main/java/com/bbn/hadder/commands/owner/ShutdownCommand.java
@@ -0,0 +1,26 @@
+package com.bbn.hadder.commands.owner;
+
+/*
+ * @author Skidder / GregTCLTK
+ */
+
+import com.bbn.hadder.Rethink;
+import com.bbn.hadder.commands.Command;
+import com.bbn.hadder.utils.MessageEditor;
+import net.dv8tion.jda.api.EmbedBuilder;
+import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
+
+public class ShutdownCommand implements Command {
+ @Override
+ public void executed(String[] args, MessageReceivedEvent event) {
+ if (event.getAuthor().getId().equals("477141528981012511") || event.getAuthor().getId().equals("261083609148948488")) {
+ EmbedBuilder builder = new EmbedBuilder();
+ event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("Shutdown").build()).queue();
+ event.getJDA().shutdown();
+ Rethink.disconnect();
+ } else {
+ EmbedBuilder builder = new EmbedBuilder();
+ event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.NO_PERMISSION, builder).build()).queue();
+ }
+ }
+}
diff --git a/src/main/java/com/bbn/hadder/commands/settings/PrefixCommand.java b/src/main/java/com/bbn/hadder/commands/settings/PrefixCommand.java
new file mode 100644
index 0000000..d72a6c5
--- /dev/null
+++ b/src/main/java/com/bbn/hadder/commands/settings/PrefixCommand.java
@@ -0,0 +1,39 @@
+package com.bbn.hadder.commands.settings;
+
+/*
+ * @author Skidder / GregTCLTK
+ */
+
+import com.bbn.hadder.Rethink;
+import com.bbn.hadder.commands.Command;
+import com.bbn.hadder.utils.MessageEditor;
+import net.dv8tion.jda.api.EmbedBuilder;
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
+
+
+public class PrefixCommand implements Command {
+ public void executed(String[] args, MessageReceivedEvent event) {
+ if (event.getGuild().getMemberById(event.getAuthor().getId()).hasPermission(Permission.MANAGE_SERVER)) {
+ if (args.length == 1) {
+ if (!args[0].contains("\"")) {
+
+ Rethink.update("server", event.getGuild().getId(), "prefix", args[0]);
+
+ EmbedBuilder builder = new EmbedBuilder();
+
+ event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("✅ Successfully set ✅").setDescription("I successfully set the new prefix for this server to " + args[0]).build()).queue();
+ } else {
+ EmbedBuilder builder = new EmbedBuilder();
+ event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("The prefix must not contain **\"**").build()).queue();
+ }
+ } else {
+ EmbedBuilder builder = new EmbedBuilder();
+ event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("You have to set a prefix.").build()).queue();
+ }
+ } else {
+ EmbedBuilder builder = new EmbedBuilder();
+ event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.NO_PERMISSION, builder).build()).queue();
+ }
+ }
+}
diff --git a/src/main/java/com/bbn/hadder/core/CommandHandler.java b/src/main/java/com/bbn/hadder/core/CommandHandler.java
index be80d24..902cc90 100644
--- a/src/main/java/com/bbn/hadder/core/CommandHandler.java
+++ b/src/main/java/com/bbn/hadder/core/CommandHandler.java
@@ -14,7 +14,7 @@ public class CommandHandler {
public static void handleCommand(CommandParser.commandContainer cmd) {
if(cmdlist.containsKey(cmd.invoke)) {
- cmdlist.get(cmd.invoke).executed(cmd.event);
+ cmdlist.get(cmd.invoke).executed(cmd.args, cmd.event);
}
}
diff --git a/src/main/java/com/bbn/hadder/core/CommandParser.java b/src/main/java/com/bbn/hadder/core/CommandParser.java
index b658312..a801d9f 100644
--- a/src/main/java/com/bbn/hadder/core/CommandParser.java
+++ b/src/main/java/com/bbn/hadder/core/CommandParser.java
@@ -4,6 +4,7 @@ package com.bbn.hadder.core;
* @author Skidder / GregTCLTK
*/
+import com.bbn.hadder.Rethink;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import java.util.ArrayList;
@@ -12,7 +13,7 @@ import java.util.Collections;
public class CommandParser {
public static commandContainer parser(String raw, MessageReceivedEvent event) {
- String cmd = raw.replaceFirst("h.", "");
+ String cmd = raw.replaceFirst(Rethink.get("server", "id", event.getGuild().getId(), "prefix"), "");
String[] cmdsplit = cmd.split(" ");
String invoke = cmdsplit[0];
ArrayList split = new ArrayList<>();
diff --git a/src/main/java/com/bbn/hadder/listener/CommandListener.java b/src/main/java/com/bbn/hadder/listener/CommandListener.java
index d1a4e0d..a3cfa4f 100644
--- a/src/main/java/com/bbn/hadder/listener/CommandListener.java
+++ b/src/main/java/com/bbn/hadder/listener/CommandListener.java
@@ -1,5 +1,6 @@
package com.bbn.hadder.listener;
+import com.bbn.hadder.Rethink;
import com.bbn.hadder.core.CommandHandler;
import com.bbn.hadder.core.CommandParser;
import net.dv8tion.jda.api.Permission;
@@ -18,7 +19,7 @@ public class CommandListener extends ListenerAdapter {
@Override
public void onMessageReceived(@Nonnull MessageReceivedEvent event) {
if (event.isFromType(ChannelType.TEXT)) {
- if (event.getMessage().getContentRaw().startsWith("h.")) {
+ if (event.getMessage().getContentRaw().startsWith(Rethink.get("server", "id", event.getGuild().getId(), "prefix"))) {
if (!event.getAuthor().isBot()) {
CommandHandler.handleCommand(CommandParser.parser(event.getMessage().getContentRaw(), event));
} else if (event.getGuild().getSelfMember().hasPermission(Permission.MESSAGE_ADD_REACTION)) {
diff --git a/src/main/java/com/bbn/hadder/listener/GuildJoinListener.java b/src/main/java/com/bbn/hadder/listener/GuildJoinListener.java
new file mode 100644
index 0000000..cdea693
--- /dev/null
+++ b/src/main/java/com/bbn/hadder/listener/GuildJoinListener.java
@@ -0,0 +1,16 @@
+package com.bbn.hadder.listener;
+
+/*
+ * @author Skidder / GregTCLTK
+ */
+
+import com.bbn.hadder.Rethink;
+import net.dv8tion.jda.api.events.guild.GuildJoinEvent;
+import net.dv8tion.jda.api.hooks.ListenerAdapter;
+import org.jetbrains.annotations.NotNull;
+
+public class GuildJoinListener extends ListenerAdapter {
+ public void onGuildJoin(@NotNull GuildJoinEvent event) {
+ Rethink.insertServer(event.getGuild().getId());
+ }
+}
diff --git a/src/main/java/com/bbn/hadder/listener/GuildLeaveListener.java b/src/main/java/com/bbn/hadder/listener/GuildLeaveListener.java
new file mode 100644
index 0000000..fc65d2e
--- /dev/null
+++ b/src/main/java/com/bbn/hadder/listener/GuildLeaveListener.java
@@ -0,0 +1,16 @@
+package com.bbn.hadder.listener;
+
+/*
+ * @author Skidder / GregTCLTK
+ */
+
+import net.dv8tion.jda.api.events.guild.GuildLeaveEvent;
+import net.dv8tion.jda.api.hooks.ListenerAdapter;
+import org.jetbrains.annotations.NotNull;
+
+public class GuildLeaveListener extends ListenerAdapter {
+ public void onGuildLeave(@NotNull GuildLeaveEvent event) {
+
+
+ }
+}
diff --git a/src/main/java/com/bbn/hadder/utils/MessageEditor.java b/src/main/java/com/bbn/hadder/utils/MessageEditor.java
index 976ed1c..0595fef 100644
--- a/src/main/java/com/bbn/hadder/utils/MessageEditor.java
+++ b/src/main/java/com/bbn/hadder/utils/MessageEditor.java
@@ -25,7 +25,7 @@ public class MessageEditor {
break;
case NO_SELF_PERMISSION:
- embedBuilder.setTitle("⛔ No Permission ⛔").setDescription("Unfortunately, I do not have the required ban rights to perform this action").setColor(Color.RED);
+ embedBuilder.setTitle("⛔ No Permission ⛔").setDescription("Unfortunately, I do not have the required rights to perform this action").setColor(Color.RED);
break;
}
return embedBuilder;