From 82ffe2bfcf0bfe146f334ac625ac91aa22a0cf00 Mon Sep 17 00:00:00 2001 From: GregTCLTK Date: Sun, 27 Oct 2019 02:05:51 +0200 Subject: [PATCH 1/5] Pom stuff --- pom.xml | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) 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 From 529b2e7cd0c974d652590fa688c8882f02ec9cfb Mon Sep 17 00:00:00 2001 From: GregTCLTK Date: Sun, 27 Oct 2019 11:04:11 +0100 Subject: [PATCH 2/5] Adding RethinkDB --- src/main/java/com/bbn/hadder/Hadder.java | 10 ++- src/main/java/com/bbn/hadder/Rethink.java | 73 +++++++++++++++++++ .../hadder/listener/GuildJoinListener.java | 16 ++++ 3 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/bbn/hadder/Rethink.java create mode 100644 src/main/java/com/bbn/hadder/listener/GuildJoinListener.java 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/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()); + } +} From 499913e78908907c841a085b766f3ed14a0dc53d Mon Sep 17 00:00:00 2001 From: GregTCLTK Date: Sun, 27 Oct 2019 11:04:18 +0100 Subject: [PATCH 3/5] ShutdownCommand --- .../commands/owner/ShutdownCommand.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/main/java/com/bbn/hadder/commands/owner/ShutdownCommand.java 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(); + } + } +} From f84e3793159b6fa0857c89aceb49bbc3cc5324b5 Mon Sep 17 00:00:00 2001 From: GregTCLTK Date: Sun, 27 Oct 2019 11:04:27 +0100 Subject: [PATCH 4/5] PrefixCommand --- .../commands/settings/PrefixCommand.java | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/main/java/com/bbn/hadder/commands/settings/PrefixCommand.java 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(); + } + } +} From e94bfd60b1e083703b9be45ebc4d1d5ba2c87ad9 Mon Sep 17 00:00:00 2001 From: GregTCLTK Date: Sun, 27 Oct 2019 11:04:42 +0100 Subject: [PATCH 5/5] Command stuff --- .../java/com/bbn/hadder/commands/Command.java | 2 +- .../com/bbn/hadder/commands/TestCommand.java | 2 +- .../hadder/commands/moderation/BanCommand.java | 2 +- .../java/com/bbn/hadder/core/CommandHandler.java | 2 +- .../java/com/bbn/hadder/core/CommandParser.java | 3 ++- .../com/bbn/hadder/listener/CommandListener.java | 3 ++- .../bbn/hadder/listener/GuildLeaveListener.java | 16 ++++++++++++++++ .../java/com/bbn/hadder/utils/MessageEditor.java | 2 +- 8 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/bbn/hadder/listener/GuildLeaveListener.java 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/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/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;