Adding Rethink and new commands #4
14 changed files with 200 additions and 17 deletions
21
pom.xml
21
pom.xml
|
|
@ -19,20 +19,29 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>junit</groupId>
|
<groupId>junit</groupId>
|
||||||
<artifactId>junit</artifactId>
|
<artifactId>junit</artifactId>
|
||||||
<version>4.11</version>
|
<version>LATEST</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.dv8tion</groupId>
|
<groupId>net.dv8tion</groupId>
|
||||||
<artifactId>JDA</artifactId>
|
<artifactId>JDA</artifactId>
|
||||||
<version>4.0.0_54</version>
|
<version>LATEST</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.json</groupId>
|
<groupId>org.json</groupId>
|
||||||
<artifactId>json</artifactId>
|
<artifactId>json</artifactId>
|
||||||
<version>20190722</version>
|
<version>LATEST</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.rethinkdb</groupId>
|
||||||
|
<artifactId>rethinkdb-driver</artifactId>
|
||||||
|
<version>LATEST</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.code.gson</groupId>
|
||||||
|
<artifactId>gson</artifactId>
|
||||||
|
<version>LATEST</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<repositories>
|
<repositories>
|
||||||
|
|
@ -45,14 +54,11 @@
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
<pluginManagement>
|
<pluginManagement>
|
||||||
<!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
|
|
||||||
<plugins>
|
<plugins>
|
||||||
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
|
|
||||||
<plugin>
|
<plugin>
|
||||||
<artifactId>maven-clean-plugin</artifactId>
|
<artifactId>maven-clean-plugin</artifactId>
|
||||||
<version>3.1.0</version>
|
<version>3.1.0</version>
|
||||||
</plugin>
|
</plugin>
|
||||||
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
|
|
||||||
<plugin>
|
<plugin>
|
||||||
<artifactId>maven-resources-plugin</artifactId>
|
<artifactId>maven-resources-plugin</artifactId>
|
||||||
<version>3.0.2</version>
|
<version>3.0.2</version>
|
||||||
|
|
@ -77,7 +83,6 @@
|
||||||
<artifactId>maven-deploy-plugin</artifactId>
|
<artifactId>maven-deploy-plugin</artifactId>
|
||||||
<version>2.8.2</version>
|
<version>2.8.2</version>
|
||||||
</plugin>
|
</plugin>
|
||||||
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
|
|
||||||
<plugin>
|
<plugin>
|
||||||
<artifactId>maven-site-plugin</artifactId>
|
<artifactId>maven-site-plugin</artifactId>
|
||||||
<version>3.7.1</version>
|
<version>3.7.1</version>
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
package com.bbn.hadder;
|
package com.bbn.hadder;
|
||||||
|
|
||||||
import com.bbn.hadder.commands.Command;
|
|
||||||
import com.bbn.hadder.commands.TestCommand;
|
import com.bbn.hadder.commands.TestCommand;
|
||||||
import com.bbn.hadder.commands.moderation.BanCommand;
|
import com.bbn.hadder.commands.moderation.BanCommand;
|
||||||
|
import com.bbn.hadder.commands.settings.PrefixCommand;
|
||||||
import com.bbn.hadder.core.CommandHandler;
|
import com.bbn.hadder.core.CommandHandler;
|
||||||
import com.bbn.hadder.listener.*;
|
import com.bbn.hadder.listener.*;
|
||||||
import net.dv8tion.jda.api.entities.Activity;
|
import net.dv8tion.jda.api.entities.Activity;
|
||||||
|
|
@ -33,6 +33,9 @@ public class Hadder {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Rethink.connect();
|
||||||
|
|
||||||
|
|
||||||
DefaultShardManagerBuilder builder = new DefaultShardManagerBuilder();
|
DefaultShardManagerBuilder builder = new DefaultShardManagerBuilder();
|
||||||
|
|
||||||
builder.setShardsTotal(1);
|
builder.setShardsTotal(1);
|
||||||
|
|
@ -41,11 +44,14 @@ public class Hadder {
|
||||||
|
|
||||||
CommandHandler.cmdlist.put("test", new TestCommand());
|
CommandHandler.cmdlist.put("test", new TestCommand());
|
||||||
CommandHandler.cmdlist.put("ban", new BanCommand());
|
CommandHandler.cmdlist.put("ban", new BanCommand());
|
||||||
|
CommandHandler.cmdlist.put("prefix", new PrefixCommand());
|
||||||
|
|
||||||
builder.addEventListeners(
|
builder.addEventListeners(
|
||||||
new MentionListener(),
|
new MentionListener(),
|
||||||
new PrivateMessageListener(),
|
new PrivateMessageListener(),
|
||||||
new CommandListener());
|
new CommandListener(),
|
||||||
|
new GuildJoinListener(),
|
||||||
|
new GuildLeaveListener());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ShardManager shardManager = builder.build();
|
ShardManager shardManager = builder.build();
|
||||||
|
|
|
||||||
73
src/main/java/com/bbn/hadder/Rethink.java
Normal file
73
src/main/java/com/bbn/hadder/Rethink.java
Normal file
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -7,5 +7,5 @@ package com.bbn.hadder.commands;
|
||||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||||
|
|
||||||
public interface Command {
|
public interface Command {
|
||||||
void executed(MessageReceivedEvent event);
|
void executed(String[] args, MessageReceivedEvent event);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||||
|
|
||||||
public class TestCommand implements Command {
|
public class TestCommand implements Command {
|
||||||
|
|
||||||
public void executed(MessageReceivedEvent event) {
|
public void executed(String[] args, MessageReceivedEvent event) {
|
||||||
event.getTextChannel().sendMessage("TEST my friends").queue();
|
event.getTextChannel().sendMessage("TEST my friends").queue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||||
|
|
||||||
public class BanCommand implements Command {
|
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.getGuild().getMemberById(event.getAuthor().getId()).hasPermission(Permission.BAN_MEMBERS) || event.getGuild().getOwner().getId().equals(event.getAuthor().getId())) {
|
||||||
if (event.getMessage().getMentionedMembers().size() == 1) {
|
if (event.getMessage().getMentionedMembers().size() == 1) {
|
||||||
Member victim = event.getMessage().getMentionedMembers().get(0);
|
Member victim = event.getMessage().getMentionedMembers().get(0);
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -14,7 +14,7 @@ public class CommandHandler {
|
||||||
|
|
||||||
public static void handleCommand(CommandParser.commandContainer cmd) {
|
public static void handleCommand(CommandParser.commandContainer cmd) {
|
||||||
if(cmdlist.containsKey(cmd.invoke)) {
|
if(cmdlist.containsKey(cmd.invoke)) {
|
||||||
cmdlist.get(cmd.invoke).executed(cmd.event);
|
cmdlist.get(cmd.invoke).executed(cmd.args, cmd.event);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ package com.bbn.hadder.core;
|
||||||
* @author Skidder / GregTCLTK
|
* @author Skidder / GregTCLTK
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import com.bbn.hadder.Rethink;
|
||||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
@ -12,7 +13,7 @@ import java.util.Collections;
|
||||||
public class CommandParser {
|
public class CommandParser {
|
||||||
public static commandContainer parser(String raw, MessageReceivedEvent event) {
|
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[] cmdsplit = cmd.split(" ");
|
||||||
String invoke = cmdsplit[0];
|
String invoke = cmdsplit[0];
|
||||||
ArrayList<String> split = new ArrayList<>();
|
ArrayList<String> split = new ArrayList<>();
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.bbn.hadder.listener;
|
package com.bbn.hadder.listener;
|
||||||
|
|
||||||
|
import com.bbn.hadder.Rethink;
|
||||||
import com.bbn.hadder.core.CommandHandler;
|
import com.bbn.hadder.core.CommandHandler;
|
||||||
import com.bbn.hadder.core.CommandParser;
|
import com.bbn.hadder.core.CommandParser;
|
||||||
import net.dv8tion.jda.api.Permission;
|
import net.dv8tion.jda.api.Permission;
|
||||||
|
|
@ -18,7 +19,7 @@ public class CommandListener extends ListenerAdapter {
|
||||||
@Override
|
@Override
|
||||||
public void onMessageReceived(@Nonnull MessageReceivedEvent event) {
|
public void onMessageReceived(@Nonnull MessageReceivedEvent event) {
|
||||||
if (event.isFromType(ChannelType.TEXT)) {
|
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()) {
|
if (!event.getAuthor().isBot()) {
|
||||||
CommandHandler.handleCommand(CommandParser.parser(event.getMessage().getContentRaw(), event));
|
CommandHandler.handleCommand(CommandParser.parser(event.getMessage().getContentRaw(), event));
|
||||||
} else if (event.getGuild().getSelfMember().hasPermission(Permission.MESSAGE_ADD_REACTION)) {
|
} else if (event.getGuild().getSelfMember().hasPermission(Permission.MESSAGE_ADD_REACTION)) {
|
||||||
|
|
|
||||||
16
src/main/java/com/bbn/hadder/listener/GuildJoinListener.java
Normal file
16
src/main/java/com/bbn/hadder/listener/GuildJoinListener.java
Normal file
|
|
@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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) {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -25,7 +25,7 @@ public class MessageEditor {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NO_SELF_PERMISSION:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
return embedBuilder;
|
return embedBuilder;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue