From 229d3f2a3f7fb06ea11e5abcb4ee01b208c86f45 Mon Sep 17 00:00:00 2001 From: Hax Date: Mon, 20 Jan 2020 21:54:16 +0100 Subject: [PATCH 1/2] Improved Database Performance, Added Test Echo Command --- src/main/java/com/bbn/hadder/Hadder.java | 3 +- src/main/java/com/bbn/hadder/Rethink.java | 139 +++++------------- .../java/com/bbn/hadder/RethinkServer.java | 117 +++++++++++++++ src/main/java/com/bbn/hadder/RethinkUser.java | 77 ++++++++++ .../com/bbn/hadder/commands/CommandEvent.java | 31 ++-- .../bbn/hadder/commands/fun/ClydeCommand.java | 2 +- .../hadder/commands/general/HelpCommand.java | 4 +- .../commands/moderation/EditRulesCommand.java | 8 +- .../moderation/InviteDetectCommand.java | 10 +- .../commands/moderation/NickCommand.java | 16 +- .../commands/moderation/PrefixCommand.java | 3 +- .../commands/moderation/RulesCommand.java | 6 +- .../commands/moderation/StarboardCommand.java | 8 +- .../hadder/commands/music/PlayCommand.java | 2 +- .../commands/owner/BlacklistCommand.java | 12 +- .../hadder/commands/owner/EchoCommand.java | 85 +++++++++++ .../commands/settings/LanguageCommand.java | 3 +- .../commands/settings/UserPrefixCommand.java | 3 +- .../com/bbn/hadder/core/CommandHandler.java | 9 +- .../bbn/hadder/listener/CommandListener.java | 11 +- .../hadder/listener/InviteLinkListener.java | 11 +- .../bbn/hadder/listener/MentionListener.java | 34 +++-- .../listener/PrivateMessageListener.java | 6 +- .../bbn/hadder/listener/RulesListener.java | 24 +-- .../hadder/listener/StarboardListener.java | 11 +- .../com/bbn/hadder/utils/MessageEditor.java | 13 +- 26 files changed, 454 insertions(+), 194 deletions(-) create mode 100644 src/main/java/com/bbn/hadder/RethinkServer.java create mode 100644 src/main/java/com/bbn/hadder/RethinkUser.java create mode 100644 src/main/java/com/bbn/hadder/commands/owner/EchoCommand.java diff --git a/src/main/java/com/bbn/hadder/Hadder.java b/src/main/java/com/bbn/hadder/Hadder.java index 917328f..cee4d42 100644 --- a/src/main/java/com/bbn/hadder/Hadder.java +++ b/src/main/java/com/bbn/hadder/Hadder.java @@ -103,7 +103,8 @@ public class Hadder { new BlacklistCommand(), new PauseCommand(), new LoopCommand(), - new BassCommand()), config, helpCommand); + new BassCommand(), + new EchoCommand()), config, helpCommand); builder.addEventListeners( new MentionListener(rethink), diff --git a/src/main/java/com/bbn/hadder/Rethink.java b/src/main/java/com/bbn/hadder/Rethink.java index 6191dff..ad0f80e 100644 --- a/src/main/java/com/bbn/hadder/Rethink.java +++ b/src/main/java/com/bbn/hadder/Rethink.java @@ -5,7 +5,9 @@ import com.rethinkdb.RethinkDB; import com.rethinkdb.gen.exc.ReqlOpFailedError; import com.rethinkdb.net.Connection; import org.json.JSONArray; +import org.json.JSONObject; +import java.lang.reflect.Field; import java.util.NoSuchElementException; /* @@ -66,28 +68,10 @@ public class Rethink { return r.table(table).get(wherevalue).getField(column).run(conn); } - public void update(String table, String where, String what, String value) { - try { - r.table(table).get(where).update(r.hashMap(what, value)).run(conn); - } catch (ClassCastException e) { - e.printStackTrace(); - } - } - - public void update(String table, String where, String what, int value) { - try { - r.table(table).get(where).update(r.hashMap(what, value)).run(conn); - } catch (ClassCastException e) { - e.printStackTrace(); - } - } - - public void update(String table, String where, String what, boolean value) { - try { - r.table(table).get(where).update(r.hashMap(what, value)).run(conn); - } catch (ClassCastException e) { - e.printStackTrace(); - } + public JSONObject getObjectByID(String table, String id) { + String response = r.table(table).get(id).toJson().run(conn); + System.out.println(response); + return new JSONObject(response); } public void insert(String table, Object object) { @@ -111,7 +95,7 @@ public class Rethink { try { r.tableCreate("server").run(conn); } catch (ReqlOpFailedError e) { - System.out.println(e.getMessage()); + System.out.println(e.getMessage()); } try { r.tableCreate("user").run(conn); @@ -125,22 +109,6 @@ public class Rethink { } } - public void setUserPrefix(String prefix, String user_id) { - this.update("user", user_id, "prefix", prefix); - } - - public String getUserPrefix(String id) { - return (String) this.getByID("user", id, "prefix"); - } - - public void setGuildPrefix(String prefix, String guild_id) { - this.update("server", guild_id, "prefix", prefix); - } - - public String getGuildPrefix(String id) { - return (String) this.getByID("server", id, "prefix"); - } - public void insertGuild(String id) { this.insert("server", r .hashMap("id", id) @@ -161,87 +129,54 @@ public class Rethink { .with("blacklisted", "none")); } - public void setBlackListed(String id, String commands) { - this.update("user", id, "blacklisted", commands); - } - - public String getBlackListed(String id) { - return (String) this.getByID("user", id, "blacklisted"); - } - - public void setNeededStars(String stars, String guild_id) { - this.update("server", guild_id, "neededstars", stars); - } - - public String getNeededStars(String guild_id) { - return (String) this.getByID("server", guild_id, "neededstars"); - } - - public void setStarboardChannel(String guild_id, String channel_id) { - this.update("server", guild_id, "starboard", channel_id); - } - - public String getStarboardChannel(String guild_id) { - return (String) this.getByID("server", guild_id, "starboard"); - } - + // TODO public boolean hasStarboardChannel(String guild_id) { return !this.getByID("server", guild_id, "starboard").equals(""); } - + // TODO public void insertStarboardMessage(String message_id, String guild_id, String starboard_message_id) { this.insert("stars", r.hashMap("id", message_id).with("guild", guild_id).with("starboardmsg", starboard_message_id)); } - + // TODO public String getStarboardMessage(String message_id) { return (String) this.getByID("stars", message_id, "starboardmsg"); } - + // TODO public void removeStarboardMessage(String message_id) { this.remove("stars", "id", message_id); } - + // TODO public boolean hasStarboardMessage(String message_id) { return this.getByID("stars", message_id, "guild") != null; } - public void updateRules(String guild_id, String message_id, String role_id, String accept_emote, String decline_emote) { - this.update("server", guild_id, "message_id", message_id); - this.update("server", guild_id, "role_id", role_id); - this.update("server", guild_id, "accept_emote", accept_emote); - this.update("server", guild_id, "decline_emote", decline_emote); + + public void pushServer(RethinkServer server) { + JSONObject object = new JSONObject(); + for (Field field : server.getClass().getDeclaredFields()) { + if (!field.getName().equals("rethink")) { + try { + object.put(field.getName(), field.get(server)); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + r.table("server").get(server.getId()).update(object).run(conn); } - public String getRulesMID(String guild_id) { - return (String) this.getByID("server", guild_id, "message_id"); - } - - public String getRulesRID(String guild_id) { - return (String) this.getByID("server", guild_id, "role_id"); - } - - public String getRulesAEmote(String guild_id) { - return (String) this.getByID("server", guild_id, "accept_emote"); - } - - public String getRulesDEmote(String guild_id) { - return (String) this.getByID("server", guild_id, "decline_emote"); - } - - public void setInviteDetection(String guild_id, boolean b) { - this.update("server", guild_id, "invite_detect", b); - } - - public Boolean getInviteDetection(String guild_id) { - return (Boolean) this.getByID("server", guild_id, "invite_detect"); - } - - public void setLanguage(String user_id, String language) { - this.update("user", user_id, "language", language); - } - - public String getLanguage(String user_id) { - return (String) this.getByID("user", user_id, "language"); + public void pushUser(RethinkUser user) { + JSONObject object = new JSONObject(); + for (Field field : user.getClass().getDeclaredFields()) { + if (!field.getName().equals("rethink")) { + try { + object.put(field.getName(), field.get(user)); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + r.table("user").get(user.getId()).update(object).run(conn); } } diff --git a/src/main/java/com/bbn/hadder/RethinkServer.java b/src/main/java/com/bbn/hadder/RethinkServer.java new file mode 100644 index 0000000..69813c1 --- /dev/null +++ b/src/main/java/com/bbn/hadder/RethinkServer.java @@ -0,0 +1,117 @@ +/* + * @author Hax / Hax6775 / Schlauer_Hax + */ + +package com.bbn.hadder; + +import org.json.JSONObject; + +import java.lang.reflect.Field; + +public class RethinkServer { + + private Rethink rethink; + + String accept_emote = ""; + String decline_emote = ""; + String id; + boolean invite_detect = false; + String message_id = ""; + String neededstars = "3"; + String prefix = "h."; + String role_id = ""; + String starboard = ""; + + public RethinkServer(JSONObject object, Rethink rethink) { + for (Field field : this.getClass().getDeclaredFields()) { + if (!field.getName().equals("rethink")) { + try { + if (object.has(field.getName())) + field.set(this, object.get(field.getName())); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + this.rethink = rethink; + } + + public String getAccept_emote() { + return accept_emote; + } + + public void setAccept_emote(String accept_emote) { + this.accept_emote = accept_emote; + } + + public String getDecline_emote() { + return decline_emote; + } + + public void setDecline_emote(String decline_emote) { + this.decline_emote = decline_emote; + } + + public String getId() { + return id; + } + + public boolean isInvite_detect() { + return invite_detect; + } + + public void setInvite_detect(boolean invite_detect) { + this.invite_detect = invite_detect; + } + + public String getMessage_id() { + return message_id; + } + + public void setMessage_id(String message_id) { + this.message_id = message_id; + } + + public String getNeededstars() { + return neededstars; + } + + public void setNeededstars(String neededstars) { + this.neededstars = neededstars; + } + + public String getPrefix() { + return prefix; + } + + public void setPrefix(String prefix) { + this.prefix = prefix; + } + + public String getRole_id() { + return role_id; + } + + public void setRole_id(String role_id) { + this.role_id = role_id; + } + + public String getStarboard() { + return starboard; + } + + public void setStarboard(String starboard) { + this.starboard = starboard; + } + + public void updateRules(String message_id, String role_id, String accept_emote, String decline_emote) { + this.setMessage_id(message_id); + this.setRole_id(role_id); + this.setAccept_emote(accept_emote); + this.setDecline_emote(decline_emote); + } + + public void push() { + rethink.pushServer(this); + } +} diff --git a/src/main/java/com/bbn/hadder/RethinkUser.java b/src/main/java/com/bbn/hadder/RethinkUser.java new file mode 100644 index 0000000..fd74fd4 --- /dev/null +++ b/src/main/java/com/bbn/hadder/RethinkUser.java @@ -0,0 +1,77 @@ +/* + * @author Hax / Hax6775 / Schlauer_Hax + */ + +package com.bbn.hadder; + +import org.json.JSONObject; + +import java.lang.reflect.Field; + +public class RethinkUser { + + private Rethink rethink; + + String id; + String prefix = "h."; + String language = "en"; + String blacklisted = "none"; + + public RethinkUser(JSONObject object, Rethink rethink) { + for (Field field : this.getClass().getDeclaredFields()) { + if (!field.getName().equals("rethink")) { + try { + if (object.has(field.getName())) + field.set(this, object.getString(field.getName())); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + this.rethink = rethink; + } + + public RethinkUser(String id) { + this.id = id; + } + + public Rethink getRethink() { + return rethink; + } + + public void setRethink(Rethink rethink) { + this.rethink = rethink; + } + + public String getId() { + return id; + } + + public String getPrefix() { + return prefix; + } + + public void setPrefix(String prefix) { + this.prefix = prefix; + } + + public String getLanguage() { + return language; + } + + public void setLanguage(String language) { + this.language = language; + } + + public String getBlacklisted() { + return blacklisted; + } + + public void setBlacklisted(String blacklisted) { + this.blacklisted = blacklisted; + } + + public void push() { + rethink.pushUser(this); + } +} \ No newline at end of file diff --git a/src/main/java/com/bbn/hadder/commands/CommandEvent.java b/src/main/java/com/bbn/hadder/commands/CommandEvent.java index dc6d222..e4f6ca3 100644 --- a/src/main/java/com/bbn/hadder/commands/CommandEvent.java +++ b/src/main/java/com/bbn/hadder/commands/CommandEvent.java @@ -1,6 +1,8 @@ package com.bbn.hadder.commands; import com.bbn.hadder.Rethink; +import com.bbn.hadder.RethinkServer; +import com.bbn.hadder.RethinkUser; import com.bbn.hadder.audio.AudioManager; import com.bbn.hadder.commands.general.HelpCommand; import com.bbn.hadder.core.CommandHandler; @@ -10,6 +12,7 @@ import com.bbn.hadder.utils.MessageEditor; import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; +import org.json.JSONObject; import javax.annotation.Nonnull; @@ -22,8 +25,13 @@ public class CommandEvent extends MessageReceivedEvent { private MessageEditor messageEditor; private EventWaiter eventWaiter; private AudioManager audioManager; + private RethinkUser rethinkUser; + private RethinkServer rethinkServer; - public CommandEvent(@Nonnull JDA api, long responseNumber, @Nonnull Message message, Rethink rethink, Config config, CommandHandler commandHandler, HelpCommand helpCommand, MessageEditor messageEditor, EventWaiter eventWaiter, AudioManager audioManager) { + public CommandEvent(@Nonnull JDA api, long responseNumber, @Nonnull Message message, Rethink rethink, Config config, + CommandHandler commandHandler, HelpCommand helpCommand, MessageEditor messageEditor, + EventWaiter eventWaiter, AudioManager audioManager, RethinkUser rethinkUser, + RethinkServer rethinkServer) { super(api, responseNumber, message); this.rethink = rethink; this.config = config; @@ -32,17 +40,8 @@ public class CommandEvent extends MessageReceivedEvent { this.messageEditor = messageEditor; this.eventWaiter = eventWaiter; this.audioManager = audioManager; - } - - public CommandEvent(MessageReceivedEvent event, Rethink rethink, Config config, CommandHandler commandHandler, HelpCommand helpCommand, MessageEditor messageEditor, EventWaiter eventWaiter, AudioManager audioManager) { - super(event.getJDA(), event.getResponseNumber(), event.getMessage()); - this.rethink = rethink; - this.config = config; - this.commandHandler = commandHandler; - this.helpCommand = helpCommand; - this.messageEditor = messageEditor; - this.eventWaiter = eventWaiter; - this.audioManager = audioManager; + this.rethinkUser = rethinkUser; + this.rethinkServer = rethinkServer; } public Rethink getRethink() { @@ -72,4 +71,12 @@ public class CommandEvent extends MessageReceivedEvent { public AudioManager getAudioManager() { return audioManager; } + + public RethinkServer getRethinkServer() { + return rethinkServer; + } + + public RethinkUser getRethinkUser() { + return rethinkUser; + } } diff --git a/src/main/java/com/bbn/hadder/commands/fun/ClydeCommand.java b/src/main/java/com/bbn/hadder/commands/fun/ClydeCommand.java index 26d9070..734ed14 100644 --- a/src/main/java/com/bbn/hadder/commands/fun/ClydeCommand.java +++ b/src/main/java/com/bbn/hadder/commands/fun/ClydeCommand.java @@ -28,7 +28,7 @@ public class ClydeCommand implements Command { if (args.length > 0) { if (event.getGuild().getSelfMember().hasPermission(Permission.MANAGE_WEBHOOKS)) { TextChannel channel = event.getMessage().getTextChannel(); - String content = event.getMessage().getContentRaw().replace(event.getRethink().getGuildPrefix(event.getGuild().getId()), "").replace(event.getRethink().getUserPrefix(event.getAuthor().getId()), "").replace("clyde", ""); + String content = event.getMessage().getContentRaw().replace(event.getRethinkServer().getPrefix(), "").replace(event.getRethinkUser().getPrefix(), "").replace("clyde", ""); Webhook webhook = channel.createWebhook(event.getConfig().getClydeName()).complete(); try { diff --git a/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java b/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java index 7322465..45bf4fe 100644 --- a/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java +++ b/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java @@ -63,10 +63,10 @@ public class HelpCommand implements Command { StringBuilder b = new StringBuilder(); b.append(event.getMessageEditor().getTerm("commands.general.help.description")).append(" ").append(event.getMessageEditor().getTerm(cmd.description())).append("\n"); if (cmd.usage() != null) { - b.append(event.getMessageEditor().getTerm("commands.general.help.usage")).append(" ").append(event.getRethink().getGuildPrefix(event.getGuild().getId())).append(name).append(" ").append(cmd.usage()).append("\n"); + b.append(event.getMessageEditor().getTerm("commands.general.help.usage")).append(" ").append(event.getRethinkServer().getPrefix()).append(name).append(" ").append(cmd.usage()).append("\n"); } if (cmd.example() != null) { - b.append(event.getMessageEditor().getTerm("commands.general.help.example")).append(" ").append(event.getRethink().getGuildPrefix(event.getGuild().getId())).append(name).append(" ").append(cmd.example()); + b.append(event.getMessageEditor().getTerm("commands.general.help.example")).append(" ").append(event.getRethinkServer().getPrefix()).append(name).append(" ").append(cmd.example()); } event.getChannel().sendMessage(event.getMessageEditor().getMessage( MessageEditor.MessageType.INFO) diff --git a/src/main/java/com/bbn/hadder/commands/moderation/EditRulesCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/EditRulesCommand.java index e276391..5336836 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/EditRulesCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/EditRulesCommand.java @@ -16,7 +16,7 @@ public class EditRulesCommand implements Command { @Override public void executed(String[] args, CommandEvent event) { - if (event.getRethink().getRulesMID(event.getGuild().getId()).length() == 18) { + if (event.getRethinkServer().getMessage_id().length() == 18) { event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO, "commands.moderation.editrules.message.title", "commands.moderation.editrules.message.description").build()).queue(); @@ -56,13 +56,13 @@ public class EditRulesCommand implements Command { } else { event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR, "commands.moderation.editrules.error.title", "", - "commands.moderation.editrules.error.description", event.getRethink().getGuildPrefix(event.getGuild().getId())).build()).queue(); + "commands.moderation.editrules.error.description", event.getRethinkServer().getPrefix()).build()).queue(); } } public void checkChannel(CommandEvent event, String rules, TextChannel channel) { try { - channel.retrieveMessageById(event.getRethink().getRulesMID(event.getGuild().getId())).queue(); + channel.retrieveMessageById(event.getRethinkServer().getMessage_id()).queue(); setRules(event, rules, channel); event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO, "commands.moderation.editrules.success.title", @@ -75,7 +75,7 @@ public class EditRulesCommand implements Command { } public void setRules(CommandEvent event, String rules, TextChannel channel) { - channel.retrieveMessageById(event.getRethink().getRulesMID(event.getGuild().getId())).complete().editMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO) + channel.retrieveMessageById(event.getRethinkServer().getMessage_id()).complete().editMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO) .setTitle("Rules") .setDescription(rules) .build()).queue(); diff --git a/src/main/java/com/bbn/hadder/commands/moderation/InviteDetectCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/InviteDetectCommand.java index a3b03b0..c470345 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/InviteDetectCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/InviteDetectCommand.java @@ -19,14 +19,15 @@ public class InviteDetectCommand implements Command { String opinion = args[0].toLowerCase(); switch (opinion) { case "on": - if (!event.getRethink().getInviteDetection(event.getGuild().getId())) { - event.getRethink().setInviteDetection(event.getGuild().getId(), true); + if (!event.getRethinkServer().isInvite_detect()) { + event.getRethinkServer().setInvite_detect(true); event.getTextChannel().sendMessage( event.getMessageEditor().getMessage( MessageEditor.MessageType.INFO, "commands.moderation.invitedetect.activate.success.title", "commands.moderation.invitedetect.activate.success.description") .build()).queue(); + event.getRethinkServer().push(); } else { event.getTextChannel().sendMessage(event.getMessageEditor().getMessage( MessageEditor.MessageType.ERROR, @@ -37,13 +38,14 @@ public class InviteDetectCommand implements Command { break; case "off": - if (event.getRethink().getInviteDetection(event.getGuild().getId())) { - event.getRethink().setInviteDetection(event.getGuild().getId(), false); + if (event.getRethinkServer().isInvite_detect()) { + event.getRethinkServer().setInvite_detect(false); event.getTextChannel().sendMessage(event.getMessageEditor().getMessage( MessageEditor.MessageType.INFO, "commands.moderation.invitedetect.deactivate.success.title", "commands.moderation.invitedetect.deactivate.success.description") .build()).queue(); + event.getRethinkServer().push(); } else { event.getTextChannel().sendMessage(event.getMessageEditor().getMessage( MessageEditor.MessageType.ERROR, diff --git a/src/main/java/com/bbn/hadder/commands/moderation/NickCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/NickCommand.java index e15d9f9..97b5525 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/NickCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/NickCommand.java @@ -22,8 +22,8 @@ public class NickCommand implements Command { if (!event.getMessage().getMentionedMembers().get(0).getId().equals(event.getGuild().getSelfMember().getId())) { if (event.getGuild().getSelfMember().canInteract(event.getMessage().getMentionedMembers().get(0))) { if (args.length > 1) { - if (event.getMessage().getContentRaw().startsWith(event.getRethink().getUserPrefix(event.getMember().getId()))) { - event.getGuild().modifyNickname(event.getMessage().getMentionedMembers().get(0), event.getMessage().getContentRaw().replaceFirst(event.getRethink().getUserPrefix(event.getMember().getId()) + "nick " + args[0], "")).reason("Nicked by " + event.getAuthor().getAsTag()).queue(); + if (event.getMessage().getContentRaw().startsWith(event.getRethinkUser().getPrefix())) { + event.getGuild().modifyNickname(event.getMessage().getMentionedMembers().get(0), event.getMessage().getContentRaw().replaceFirst(event.getRethinkUser().getPrefix() + "nick " + args[0], "")).reason("Nicked by " + event.getAuthor().getAsTag()).queue(); event.getTextChannel().sendMessage( event.getMessageEditor().getMessage( MessageEditor.MessageType.INFO, @@ -32,8 +32,8 @@ public class NickCommand implements Command { "commands.moderation.nick.success.description", event.getMessage().getMentionedMembers().get(0).getUser().getAsTag() ).build()).queue(); - } else if (event.getMessage().getContentRaw().startsWith(event.getRethink().getGuildPrefix(event.getGuild().getId()))) { - event.getGuild().modifyNickname(event.getMessage().getMentionedMembers().get(0), event.getMessage().getContentRaw().replaceFirst(event.getRethink().getGuildPrefix(event.getGuild().getId()) + "nick " + args[0], "")).reason("Nicked by " + event.getAuthor().getAsTag()).queue(); + } else if (event.getMessage().getContentRaw().startsWith(event.getRethinkServer().getPrefix())) { + event.getGuild().modifyNickname(event.getMessage().getMentionedMembers().get(0), event.getMessage().getContentRaw().replaceFirst(event.getRethinkServer().getPrefix() + "nick " + args[0], "")).reason("Nicked by " + event.getAuthor().getAsTag()).queue(); event.getTextChannel().sendMessage( event.getMessageEditor().getMessage( MessageEditor.MessageType.INFO, @@ -49,8 +49,8 @@ public class NickCommand implements Command { event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.NO_SELF_PERMISSION).build()).queue(); } } else { - if (event.getMessage().getContentRaw().startsWith(event.getRethink().getUserPrefix(event.getMember().getId()))) { - event.getGuild().getSelfMember().modifyNickname(event.getMessage().getContentRaw().replaceFirst(event.getRethink().getUserPrefix(event.getMember().getId()) + "nick " + args[0], "")).reason("Nicked by " + event.getAuthor().getAsTag()).queue(); + if (event.getMessage().getContentRaw().startsWith(event.getRethinkUser().getPrefix())) { + event.getGuild().getSelfMember().modifyNickname(event.getMessage().getContentRaw().replaceFirst(event.getRethinkUser().getPrefix() + "nick " + args[0], "")).reason("Nicked by " + event.getAuthor().getAsTag()).queue(); event.getTextChannel().sendMessage( event.getMessageEditor().getMessage( MessageEditor.MessageType.INFO, @@ -58,8 +58,8 @@ public class NickCommand implements Command { "✅", "commands.moderation.nick.myself.success.description", "").build()).queue(); - } else if (event.getMessage().getContentRaw().startsWith(event.getRethink().getGuildPrefix(event.getGuild().getId()))) { - event.getGuild().getSelfMember().modifyNickname(event.getMessage().getContentRaw().replaceFirst(event.getRethink().getGuildPrefix(event.getGuild().getId()) + "nick " + args[0], "")).reason("Nicked by " + event.getAuthor().getAsTag()).queue(); + } else if (event.getMessage().getContentRaw().startsWith(event.getRethinkServer().getPrefix())) { + event.getGuild().getSelfMember().modifyNickname(event.getMessage().getContentRaw().replaceFirst(event.getRethinkServer().getPrefix() + "nick " + args[0], "")).reason("Nicked by " + event.getAuthor().getAsTag()).queue(); event.getTextChannel().sendMessage( event.getMessageEditor().getMessage( MessageEditor.MessageType.INFO, diff --git a/src/main/java/com/bbn/hadder/commands/moderation/PrefixCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/PrefixCommand.java index 153e64f..4521183 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/PrefixCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/PrefixCommand.java @@ -13,7 +13,8 @@ public class PrefixCommand implements Command { public void executed(String[] args, CommandEvent event) { if (args.length == 1) { if (!args[0].contains("\"")) { - event.getRethink().setGuildPrefix(args[0], event.getGuild().getId()); + event.getRethinkServer().setPrefix(args[0]); + event.getRethinkServer().push(); event.getTextChannel().sendMessage(event.getMessageEditor().getMessage( MessageEditor.MessageType.INFO, "commands.moderation.prefix.success.title", diff --git a/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java index 48951c5..fdeb831 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java @@ -160,7 +160,8 @@ public class RulesCommand implements Command { .build()).queue(); e.printStackTrace(); } - event.getRethink().updateRules(event.getGuild().getId(), rules.getId(), role.getId(), aemote.toString(), demote.toString()); + event.getRethinkServer().updateRules(rules.getId(), role.getId(), aemote.toString(), demote.toString()); + event.getRethinkServer().push(); } else { event.getTextChannel().sendMessage( event.getMessageEditor().getMessage( @@ -205,7 +206,8 @@ public class RulesCommand implements Command { .build()).queue(); e.printStackTrace(); } - event.getRethink().updateRules(event.getGuild().getId(), rules.getId(), role.getId(), aemote, demote); + event.getRethinkServer().updateRules(rules.getId(), role.getId(), aemote, demote); + event.getRethinkServer().push(); } else { event.getTextChannel().sendMessage( event.getMessageEditor().getMessage( diff --git a/src/main/java/com/bbn/hadder/commands/moderation/StarboardCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/StarboardCommand.java index d3c97ff..c3de52b 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/StarboardCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/StarboardCommand.java @@ -10,7 +10,7 @@ public class StarboardCommand implements Command { @Override public void executed(String[] args, CommandEvent event) { if (event.getMessage().getMentionedChannels().size()==1) { - event.getRethink().setStarboardChannel(event.getGuild().getId(), event.getMessage().getMentionedChannels().get(0).getId()); + event.getRethinkServer().setStarboard(event.getMessage().getMentionedChannels().get(0).getId()); event.getChannel().sendMessage( event.getMessageEditor().getMessage( MessageEditor.MessageType.INFO, @@ -21,7 +21,7 @@ public class StarboardCommand implements Command { if (args.length>0) { TextChannel channel = event.getGuild().getTextChannelById(args[0]); if (channel!=null) { - event.getRethink().setStarboardChannel(event.getGuild().getId(), channel.getId()); + event.getRethinkServer().setStarboard(channel.getId()); } } else { event.getHelpCommand().sendHelp(this, event); @@ -29,8 +29,10 @@ public class StarboardCommand implements Command { } if (args.length==2) { - event.getRethink().setNeededStars(args[1], event.getGuild().getId()); + event.getRethinkServer().setNeededstars(args[1]); } + + event.getRethinkServer().push(); } @Override diff --git a/src/main/java/com/bbn/hadder/commands/music/PlayCommand.java b/src/main/java/com/bbn/hadder/commands/music/PlayCommand.java index 1646769..5f020eb 100644 --- a/src/main/java/com/bbn/hadder/commands/music/PlayCommand.java +++ b/src/main/java/com/bbn/hadder/commands/music/PlayCommand.java @@ -18,7 +18,7 @@ public class PlayCommand implements Command { public void executed(String[] args, CommandEvent event) { if (args.length > 0) { if (event.getMember().getVoiceState().inVoiceChannel()) { - String input = event.getMessage().getContentRaw().replaceFirst(event.getRethink().getGuildPrefix(event.getGuild().getId()) + "play ", "").replaceFirst(event.getRethink().getUserPrefix(event.getAuthor().getId()) + "play ", ""); + String input = event.getMessage().getContentRaw().replaceFirst(event.getRethinkServer().getPrefix() + "play ", "").replaceFirst(event.getRethinkUser().getPrefix() + "play ", ""); try { new URL(input).toURI(); Message msg = event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO, diff --git a/src/main/java/com/bbn/hadder/commands/owner/BlacklistCommand.java b/src/main/java/com/bbn/hadder/commands/owner/BlacklistCommand.java index 5aa61f1..b2831ee 100644 --- a/src/main/java/com/bbn/hadder/commands/owner/BlacklistCommand.java +++ b/src/main/java/com/bbn/hadder/commands/owner/BlacklistCommand.java @@ -29,7 +29,7 @@ public class BlacklistCommand implements Command { case "add": if (args.length == 3) { Member member = event.getMessage().getMentionedMembers().get(0); - String blacklisted = event.getRethink().getBlackListed(member.getId()); + String blacklisted = event.getRethinkUser().getBlacklisted(); List commands = new ArrayList<>(); if (!"none".equals(blacklisted)) commands.addAll(Arrays.asList(blacklisted.split(","))); commands.addAll(Arrays.asList(args[1].split(","))); @@ -37,19 +37,20 @@ public class BlacklistCommand implements Command { ArrayList commandsWithoutDuplicates = new ArrayList<>(hashSet); String newblacklisted = ((commandsWithoutDuplicates.size()!=0) ? String.join(",", commandsWithoutDuplicates) : "none"); - event.getRethink().setBlackListed(member.getId(), newblacklisted); + event.getRethinkUser().setBlacklisted(newblacklisted); event.getTextChannel().sendMessage( event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO) .setTitle("Removed Blacklisted Commands from User") .setDescription("Blacklisted commands: "+newblacklisted) .build()).queue(); + event.getRethinkUser().push(); } break; case "remove": if (args.length == 3) { Member member = event.getMessage().getMentionedMembers().get(0); - String blacklisted = event.getRethink().getBlackListed(member.getId()); + String blacklisted = event.getRethinkUser().getBlacklisted(); List commands = new ArrayList<>(); if (!"none".equals(blacklisted)) commands.addAll(Arrays.asList(blacklisted.split(","))); commands.removeAll(Arrays.asList(args[1].split(","))); @@ -57,12 +58,13 @@ public class BlacklistCommand implements Command { ArrayList commandsWithoutDuplicates = new ArrayList<>(hashSet); String newblacklisted = ((commandsWithoutDuplicates.size()!=0) ? String.join(",", commandsWithoutDuplicates) : "none"); - event.getRethink().setBlackListed(member.getId(), newblacklisted); + event.getRethinkUser().setBlacklisted(newblacklisted); event.getTextChannel().sendMessage( event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO) .setTitle("Removed Blacklisted Commands from User") .setDescription("Blacklisted commands: "+newblacklisted) .build()).queue(); + event.getRethinkUser().push(); } break; @@ -70,7 +72,7 @@ public class BlacklistCommand implements Command { StringBuilder stringBuilder = new StringBuilder(); for (User user : event.getJDA().getUsers()) { if (!user.getId().equals(event.getJDA().getSelfUser().getId())) { - String blacklisted = event.getRethink().getBlackListed(user.getId()); + String blacklisted = event.getRethinkUser().getBlacklisted(); if (!"none".equals(blacklisted)) { stringBuilder.append(user.getAsTag()).append(" (").append(user.getId()).append(") - ").append(blacklisted).append("\n"); } diff --git a/src/main/java/com/bbn/hadder/commands/owner/EchoCommand.java b/src/main/java/com/bbn/hadder/commands/owner/EchoCommand.java new file mode 100644 index 0000000..2420c12 --- /dev/null +++ b/src/main/java/com/bbn/hadder/commands/owner/EchoCommand.java @@ -0,0 +1,85 @@ +/* + * @author Hax / Hax6775 / Schlauer_Hax + */ + +package com.bbn.hadder.commands.owner; + +import com.bbn.hadder.commands.Command; +import com.bbn.hadder.commands.CommandEvent; +import net.dv8tion.jda.api.audio.*; +import net.dv8tion.jda.api.entities.Guild; +import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.managers.AudioManager; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.nio.ByteBuffer; +import java.util.Queue; +import java.util.concurrent.ConcurrentLinkedQueue; + +public class EchoCommand implements Command { + @Override + public void executed(String[] args, CommandEvent event) { + Guild guild = event.getMember().getVoiceState().getChannel().getGuild(); + AudioManager audioManager = guild.getAudioManager(); + EchoHandler handler = new EchoHandler(); + if (!audioManager.isConnected()) { + audioManager.setSendingHandler(handler); + audioManager.setReceivingHandler(handler); + audioManager.openAudioConnection(event.getMember().getVoiceState().getChannel()); + } else { + audioManager.closeAudioConnection(); + } + } + + @Override + public String[] labels() { + return new String[]{"echo"}; + } + + @Override + public String description() { + return null; + } + + @Override + public String usage() { + return null; + } + + @Override + public String example() { + return null; + } + + public static class EchoHandler implements AudioSendHandler, AudioReceiveHandler { + + private final Queue queue = new ConcurrentLinkedQueue<>(); + + @Override + public boolean canProvide() { + return !queue.isEmpty(); + } + + @Nullable + @Override + public ByteBuffer provide20MsAudio() { + byte[] data = queue.poll(); + return data == null ? null : ByteBuffer.wrap(data); // Wrap this in a java.nio.ByteBuffer + } + + @Override + public boolean canReceiveCombined() { + return queue.size() < 10; + } + + @Override + public void handleCombinedAudio(@Nonnull CombinedAudio combinedAudio) { + if (combinedAudio.getUsers().isEmpty()) + return; + + byte[] data = combinedAudio.getAudioData(1.0f); // volume at 100% = 1.0 (50% = 0.5 / 55% = 0.55) + queue.add(data); + } + } +} diff --git a/src/main/java/com/bbn/hadder/commands/settings/LanguageCommand.java b/src/main/java/com/bbn/hadder/commands/settings/LanguageCommand.java index 6a8ca22..0ae5bf3 100644 --- a/src/main/java/com/bbn/hadder/commands/settings/LanguageCommand.java +++ b/src/main/java/com/bbn/hadder/commands/settings/LanguageCommand.java @@ -42,7 +42,7 @@ public class LanguageCommand implements Command { } public void setLanguage(String language_code, String language, CommandEvent event) { - event.getRethink().setLanguage(event.getAuthor().getId(), language_code); + event.getRethinkUser().setLanguage(language_code); event.getTextChannel() .sendMessage( event.getMessageEditor() @@ -50,6 +50,7 @@ public class LanguageCommand implements Command { "", "commands.settings.language.success.description", language) .build()) .queue(); + event.getRethinkUser().push(); } @Override diff --git a/src/main/java/com/bbn/hadder/commands/settings/UserPrefixCommand.java b/src/main/java/com/bbn/hadder/commands/settings/UserPrefixCommand.java index 19d52e9..33061ca 100644 --- a/src/main/java/com/bbn/hadder/commands/settings/UserPrefixCommand.java +++ b/src/main/java/com/bbn/hadder/commands/settings/UserPrefixCommand.java @@ -12,13 +12,14 @@ public class UserPrefixCommand implements Command { public void executed(String[] args, CommandEvent event) { if (args.length == 1) { - event.getRethink().setUserPrefix(args[0], event.getAuthor().getId()); + event.getRethinkUser().setPrefix(args[0]); event.getTextChannel() .sendMessage(event.getMessageEditor() .getMessage(MessageEditor.MessageType.INFO, "commands.settings.prefix.success.title", "", "commands.settings.prefix.success.description", args[0]) .build()) .queue(); + event.getRethinkUser().push(); } else { event.getHelpCommand().sendHelp(this, event); } diff --git a/src/main/java/com/bbn/hadder/core/CommandHandler.java b/src/main/java/com/bbn/hadder/core/CommandHandler.java index c55a4da..7f5b1f1 100644 --- a/src/main/java/com/bbn/hadder/core/CommandHandler.java +++ b/src/main/java/com/bbn/hadder/core/CommandHandler.java @@ -1,6 +1,8 @@ package com.bbn.hadder.core; import com.bbn.hadder.Rethink; +import com.bbn.hadder.RethinkServer; +import com.bbn.hadder.RethinkUser; import com.bbn.hadder.audio.AudioManager; import com.bbn.hadder.commands.Command; import com.bbn.hadder.commands.CommandEvent; @@ -8,6 +10,7 @@ import com.bbn.hadder.commands.general.HelpCommand; import com.bbn.hadder.utils.EventWaiter; import com.bbn.hadder.utils.MessageEditor; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; +import org.json.JSONObject; import java.util.Arrays; import java.util.List; @@ -24,7 +27,7 @@ public class CommandHandler { this.helpCommand = helpCommand; } - public void handle(MessageReceivedEvent event, Rethink rethink, String prefix, AudioManager audioManager) { + public void handle(MessageReceivedEvent event, Rethink rethink, String prefix, AudioManager audioManager, RethinkUser rethinkUser, RethinkServer rethinkServer) { String invoke = event.getMessage().getContentRaw().replaceFirst(prefix, "").split(" ")[0]; for (Command cmd : commandList) { for (String label : cmd.labels()) { @@ -36,7 +39,7 @@ public class CommandHandler { if (args.length > 0 && args[0].equals("")) args = new String[0]; CommandEvent commandEvent = new CommandEvent(event.getJDA(), event.getResponseNumber(), event.getMessage(), rethink, - config, this, helpCommand, new MessageEditor(rethink, event.getAuthor()), new EventWaiter(), audioManager); + config, this, helpCommand, new MessageEditor(rethinkUser, event.getAuthor()), new EventWaiter(), audioManager, rethinkUser, rethinkServer); if (cmd.getClass().getAnnotations().length > 0 && !Arrays.asList(cmd.getClass().getAnnotations()).contains(Perms.class)) { for (Perm perm : cmd.getClass().getAnnotation(Perms.class).value()) { if (!perm.check(commandEvent)) { @@ -50,7 +53,7 @@ public class CommandHandler { } boolean run = true; - String blacklisted = rethink.getBlackListed(event.getAuthor().getId()); + String blacklisted = rethinkUser.getBlacklisted(); if (!"none".equals(blacklisted)) { for (String BLLabel : blacklisted.split(",")) { if (Arrays.asList(cmd.labels()).contains(BLLabel)) { diff --git a/src/main/java/com/bbn/hadder/listener/CommandListener.java b/src/main/java/com/bbn/hadder/listener/CommandListener.java index dff1e8b..c629a6b 100644 --- a/src/main/java/com/bbn/hadder/listener/CommandListener.java +++ b/src/main/java/com/bbn/hadder/listener/CommandListener.java @@ -1,11 +1,14 @@ package com.bbn.hadder.listener; import com.bbn.hadder.Rethink; +import com.bbn.hadder.RethinkServer; +import com.bbn.hadder.RethinkUser; import com.bbn.hadder.audio.AudioManager; import com.bbn.hadder.core.CommandHandler; import net.dv8tion.jda.api.entities.ChannelType; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; +import org.json.JSONObject; /* * @author Skidder / GregTCLTK @@ -26,15 +29,19 @@ public class CommandListener extends ListenerAdapter { @Override public void onMessageReceived(MessageReceivedEvent event) { if (event.isFromType(ChannelType.TEXT) && !event.getAuthor().isBot()) { + RethinkUser rethinkUser = new RethinkUser(rethink.getObjectByID("user", event.getAuthor().getId()), rethink); + RethinkServer rethinkServer = new RethinkServer(rethink.getObjectByID("server", event.getGuild().getId()), rethink); + rethinkUser.push(); + rethinkServer.push(); String[] prefixes = { - rethink.getUserPrefix(event.getAuthor().getId()), rethink.getGuildPrefix(event.getGuild().getId()), + rethinkUser.getPrefix(), rethinkServer.getPrefix(), event.getGuild().getSelfMember().getAsMention() + " ", event.getGuild().getSelfMember().getAsMention(), event.getGuild().getSelfMember().getAsMention().replace("@", "@!") + " ", event.getGuild().getSelfMember().getAsMention().replace("@", "@!") }; for (String prefix : prefixes) { if (event.getMessage().getContentRaw().startsWith(prefix)) { - handler.handle(event, rethink, prefix, audioManager); + handler.handle(event, rethink, prefix, audioManager, rethinkUser, rethinkServer); return; } } diff --git a/src/main/java/com/bbn/hadder/listener/InviteLinkListener.java b/src/main/java/com/bbn/hadder/listener/InviteLinkListener.java index a12fad6..a85ef25 100644 --- a/src/main/java/com/bbn/hadder/listener/InviteLinkListener.java +++ b/src/main/java/com/bbn/hadder/listener/InviteLinkListener.java @@ -5,6 +5,7 @@ package com.bbn.hadder.listener; */ import com.bbn.hadder.Rethink; +import com.bbn.hadder.RethinkServer; import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.ChannelType; import net.dv8tion.jda.api.entities.Message; @@ -28,10 +29,11 @@ public class InviteLinkListener extends ListenerAdapter { @Override public void onMessageReceived(@Nonnull MessageReceivedEvent event) { + RethinkServer rethinkServer = new RethinkServer(rethink.getObjectByID("server", event.getGuild().getId()), rethink); if (event.isFromType(ChannelType.TEXT)) { - if (event.getMessage().getContentRaw().contains("discord.gg/") && (!event.getMember().hasPermission(Permission.ADMINISTRATOR) && rethink.getInviteDetection(event.getGuild().getId()))) { + if (event.getMessage().getContentRaw().contains("discord.gg/") && (!event.getMember().hasPermission(Permission.ADMINISTRATOR) && rethinkServer.isInvite_detect())) { checkInvite(event.getMessage(), "discord.gg/"); - } else if (event.getMessage().getContentRaw().contains("discordapp.com/invite") && (!event.getMember().hasPermission(Permission.ADMINISTRATOR) && rethink.getInviteDetection(event.getGuild().getId()))) { + } else if (event.getMessage().getContentRaw().contains("discordapp.com/invite") && (!event.getMember().hasPermission(Permission.ADMINISTRATOR) && rethinkServer.isInvite_detect())) { checkInvite(event.getMessage(), "discordapp.com/invite/"); } } @@ -55,10 +57,11 @@ public class InviteLinkListener extends ListenerAdapter { @Override public void onMessageUpdate(@Nonnull MessageUpdateEvent event) { + RethinkServer rethinkServer = new RethinkServer(rethink.getObjectByID("server", event.getGuild().getId()), rethink); if (event.isFromType(ChannelType.TEXT)) { - if (event.getMessage().getContentRaw().contains("discord.gg/") && !event.getMember().hasPermission(Permission.ADMINISTRATOR) && rethink.getInviteDetection(event.getGuild().getId())) { + if (event.getMessage().getContentRaw().contains("discord.gg/") && !event.getMember().hasPermission(Permission.ADMINISTRATOR) && rethinkServer.isInvite_detect()) { checkInvite(event.getMessage(), "discord.gg/"); - } else if (event.getMessage().getContentRaw().contains("discordapp.com/invite") && !event.getMember().hasPermission(Permission.ADMINISTRATOR) && rethink.getInviteDetection(event.getGuild().getId())) { + } else if (event.getMessage().getContentRaw().contains("discordapp.com/invite") && !event.getMember().hasPermission(Permission.ADMINISTRATOR) && rethinkServer.isInvite_detect()) { checkInvite(event.getMessage(), "discordapp.com/invite/"); } } diff --git a/src/main/java/com/bbn/hadder/listener/MentionListener.java b/src/main/java/com/bbn/hadder/listener/MentionListener.java index cd14129..2bec984 100644 --- a/src/main/java/com/bbn/hadder/listener/MentionListener.java +++ b/src/main/java/com/bbn/hadder/listener/MentionListener.java @@ -1,6 +1,8 @@ package com.bbn.hadder.listener; import com.bbn.hadder.Rethink; +import com.bbn.hadder.RethinkServer; +import com.bbn.hadder.RethinkUser; import com.bbn.hadder.utils.MessageEditor; import net.dv8tion.jda.api.entities.ChannelType; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; @@ -19,20 +21,24 @@ public class MentionListener extends ListenerAdapter { @Override public void onMessageReceived(@Nonnull MessageReceivedEvent event) { - if (event.isFromType(ChannelType.TEXT) && (event.getMessage().getContentRaw().equals(event.getGuild().getSelfMember().getAsMention())|| - event.getMessage().getContentRaw().equals(event.getGuild().getSelfMember().getAsMention().replace("@", "@!")))) { - event.getChannel().sendMessage(new MessageEditor(rethink, event.getAuthor()).getMessage(MessageEditor.MessageType.INFO) - .setTitle("Hello I'm Hadder.") - .setAuthor(event.getJDA().getSelfUser().getName(), event.getJDA().getSelfUser().getAvatarUrl(), event.getJDA().getSelfUser().getAvatarUrl()) - .addField("Users", String.valueOf(event.getJDA().getUsers().size()), false) - .addField("Guilds", String.valueOf(event.getJDA().getGuilds().size()), false) - .addField("Prefix (User)", rethink.getUserPrefix(event.getAuthor().getId()), false) - .addField("Prefix (Guild)", rethink.getGuildPrefix(event.getGuild().getId()), false) - .build()).queue(); - } else if (event.getMessage().getContentRaw().equalsIgnoreCase("@someone")) { - int member = new Random().nextInt(event.getGuild().getMembers().size()-1); - if (member>0&&member 0 && member < event.getGuild().getMembers().size()) { + event.getChannel().sendMessage(event.getGuild().getMembers().get(member).getAsMention() + " (Executed by: " + event.getAuthor().getAsTag() + ")").queue(); + } } } } diff --git a/src/main/java/com/bbn/hadder/listener/PrivateMessageListener.java b/src/main/java/com/bbn/hadder/listener/PrivateMessageListener.java index b9ab722..83849e2 100644 --- a/src/main/java/com/bbn/hadder/listener/PrivateMessageListener.java +++ b/src/main/java/com/bbn/hadder/listener/PrivateMessageListener.java @@ -5,6 +5,7 @@ package com.bbn.hadder.listener; */ import com.bbn.hadder.Rethink; +import com.bbn.hadder.RethinkUser; import com.bbn.hadder.utils.MessageEditor; import net.dv8tion.jda.api.entities.ChannelType; import net.dv8tion.jda.api.entities.PrivateChannel; @@ -25,14 +26,15 @@ public class PrivateMessageListener extends ListenerAdapter { if (event.isFromType(ChannelType.PRIVATE) && !event.getAuthor().getId().equals(event.getJDA().getSelfUser().getId())) { PrivateChannel Skidder = event.getJDA().getUserById("477141528981012511").openPrivateChannel().complete(); PrivateChannel Hax = event.getJDA().getUserById("261083609148948488").openPrivateChannel().complete(); + RethinkUser rethinkUser = new RethinkUser(rethink.getObjectByID("user", "261083609148948488"), rethink); - Skidder.sendMessage(new MessageEditor(rethink, event.getJDA().getUserById("261083609148948488")).getMessage(MessageEditor.MessageType.INFO) + Skidder.sendMessage(new MessageEditor(rethinkUser, event.getJDA().getUserById("261083609148948488")).getMessage(MessageEditor.MessageType.INFO) .setTitle("New DM by " + event.getAuthor().getAsTag()) .setAuthor(event.getAuthor().getName(), event.getAuthor().getAvatarUrl(), event.getAuthor().getAvatarUrl()) .setDescription(event.getMessage().getContentRaw()) .setTimestamp(Instant.now()) .build()).queue(); - Hax.sendMessage(new MessageEditor(rethink, event.getJDA().getUserById("261083609148948488")).getMessage(MessageEditor.MessageType.INFO) + Hax.sendMessage(new MessageEditor(rethinkUser, event.getJDA().getUserById("261083609148948488")).getMessage(MessageEditor.MessageType.INFO) .setTitle("New DM by " + event.getAuthor().getAsTag()) .setAuthor(event.getAuthor().getName(), event.getAuthor().getAvatarUrl(), event.getAuthor().getAvatarUrl()) .setDescription(event.getMessage().getContentRaw()) diff --git a/src/main/java/com/bbn/hadder/listener/RulesListener.java b/src/main/java/com/bbn/hadder/listener/RulesListener.java index 55f3ef6..a515198 100644 --- a/src/main/java/com/bbn/hadder/listener/RulesListener.java +++ b/src/main/java/com/bbn/hadder/listener/RulesListener.java @@ -5,6 +5,7 @@ package com.bbn.hadder.listener; */ import com.bbn.hadder.Rethink; +import com.bbn.hadder.RethinkServer; import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent; import net.dv8tion.jda.api.events.message.react.MessageReactionRemoveEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; @@ -19,20 +20,21 @@ public class RulesListener extends ListenerAdapter { @Override public void onMessageReactionAdd(MessageReactionAddEvent event) { - if (event.getMessageId().equals(rethink.getRulesMID(event.getGuild().getId())) && !event.getMember().getUser().isBot()) { + RethinkServer rethinkServer = new RethinkServer(rethink.getObjectByID("server", event.getGuild().getId()), rethink); + if (event.getMessageId().equals(rethinkServer.getMessage_id()) && !event.getMember().getUser().isBot()) { if (event.getReactionEmote().isEmote()) { - if (rethink.getRulesAEmote(event.getGuild().getId()).equals(event.getReactionEmote().getId())) { + if (rethinkServer.getAccept_emote().equals(event.getReactionEmote().getId())) { addRole(event); - } else if (rethink.getRulesDEmote(event.getGuild().getId()).equals(event.getReactionEmote().getId())) { + } else if (rethinkServer.getDecline_emote().equals(event.getReactionEmote().getId())) { event.getReaction().removeReaction(event.getUser()).queue(); if (event.getGuild().getSelfMember().canInteract(event.getMember())) { event.getMember().kick().reason("Declined the rules"); } } } else if (event.getReactionEmote().isEmoji()) { - if (rethink.getRulesAEmote(event.getGuild().getId()).equals(event.getReactionEmote().getEmoji())) { + if (rethinkServer.getAccept_emote().equals(event.getReactionEmote().getEmoji())) { addRole(event); - } else if (rethink.getRulesDEmote(event.getGuild().getId()).equals(event.getReactionEmote().getEmoji())) { + } else if (rethinkServer.getDecline_emote().equals(event.getReactionEmote().getEmoji())) { event.getReaction().removeReaction(event.getUser()).queue(); if (event.getGuild().getSelfMember().canInteract(event.getMember())) { event.getMember().kick().reason("Declined the rules"); @@ -43,15 +45,17 @@ public class RulesListener extends ListenerAdapter { } private void addRole(MessageReactionAddEvent event) { - if (event.getMember().getRoles().contains(event.getGuild().getRoleById(rethink.getRulesRID(event.getGuild().getId())))) { - event.getGuild().removeRoleFromMember(event.getMember(), event.getGuild().getRoleById(rethink.getRulesRID(event.getGuild().getId()))).reason("Accepted rules").queue(); - } else event.getGuild().addRoleToMember(event.getMember(), event.getGuild().getRoleById(rethink.getRulesRID(event.getGuild().getId()))).reason("Accepted rules").queue(); + RethinkServer rethinkServer = new RethinkServer(rethink.getObjectByID("server", event.getGuild().getId()), rethink); + if (event.getMember().getRoles().contains(event.getGuild().getRoleById(rethinkServer.getMessage_id()))) { + event.getGuild().removeRoleFromMember(event.getMember(), event.getGuild().getRoleById(rethinkServer.getMessage_id())).reason("Accepted rules").queue(); + } else event.getGuild().addRoleToMember(event.getMember(), event.getGuild().getRoleById(rethinkServer.getRole_id())).reason("Accepted rules").queue(); } @Override public void onMessageReactionRemove(MessageReactionRemoveEvent event) { - if (event.getMessageId().equals(rethink.getRulesMID(event.getGuild().getId())) && !event.getMember().getUser().isBot()) { - event.getGuild().removeRoleFromMember(event.getMember(), event.getGuild().getRoleById(rethink.getRulesRID(event.getGuild().getId()))).reason("Withdrawal of the acceptance of the rules").queue(); + RethinkServer rethinkServer = new RethinkServer(rethink.getObjectByID("server", event.getGuild().getId()), rethink); + if (event.getMessageId().equals(rethinkServer.getMessage_id()) && !event.getMember().getUser().isBot()) { + event.getGuild().removeRoleFromMember(event.getMember(), event.getGuild().getRoleById(rethinkServer.getRole_id())).reason("Withdrawal of the acceptance of the rules").queue(); } } } diff --git a/src/main/java/com/bbn/hadder/listener/StarboardListener.java b/src/main/java/com/bbn/hadder/listener/StarboardListener.java index 38c5c52..a8a3699 100644 --- a/src/main/java/com/bbn/hadder/listener/StarboardListener.java +++ b/src/main/java/com/bbn/hadder/listener/StarboardListener.java @@ -1,6 +1,7 @@ package com.bbn.hadder.listener; import com.bbn.hadder.Rethink; +import com.bbn.hadder.RethinkServer; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.MessageBuilder; import net.dv8tion.jda.api.entities.MessageReaction; @@ -31,9 +32,9 @@ public class StarboardListener extends ListenerAdapter { public void update(GenericMessageReactionEvent event) { if (event.getReaction().getReactionEmote().getName().equals("⭐")) { + RethinkServer rethinkServer = new RethinkServer(rethink.getObjectByID("server", event.getGuild().getId()), rethink); if (!rethink.hasStarboardMessage(event.getMessageId())) { if (rethink.hasStarboardChannel(event.getGuild().getId())) { - event.getTextChannel().retrieveMessageById(event.getMessageId()).queue( msg -> { Integer stars = 0; @@ -43,8 +44,8 @@ public class StarboardListener extends ListenerAdapter { } } - if (Integer.parseInt(rethink.getNeededStars(event.getGuild().getId())) <= stars) { - event.getGuild().getTextChannelById(rethink.getStarboardChannel(event.getGuild().getId())) + if (Integer.parseInt(rethinkServer.getNeededstars()) <= stars) { + event.getGuild().getTextChannelById(rethinkServer.getStarboard()) .sendMessage(new MessageBuilder() .setContent("⭐ 1" + " " + event.getTextChannel().getAsMention()) .setEmbed( @@ -73,11 +74,11 @@ public class StarboardListener extends ListenerAdapter { } Integer finalStars = stars; - event.getGuild().getTextChannelById(rethink.getStarboardChannel(event.getGuild().getId())) + event.getGuild().getTextChannelById(rethinkServer.getStarboard()) .retrieveMessageById(rethink.getStarboardMessage(event.getMessageId())).queue( msg2 -> { - if (Integer.parseInt(rethink.getNeededStars(event.getGuild().getId())) <= finalStars) { + if (Integer.parseInt(rethinkServer.getNeededstars()) <= finalStars) { msg2.editMessage(new MessageBuilder() .setContent("⭐ " + finalStars + " " + event.getTextChannel().getAsMention()) .setEmbed( diff --git a/src/main/java/com/bbn/hadder/utils/MessageEditor.java b/src/main/java/com/bbn/hadder/utils/MessageEditor.java index 4e923ee..0bbfb8a 100644 --- a/src/main/java/com/bbn/hadder/utils/MessageEditor.java +++ b/src/main/java/com/bbn/hadder/utils/MessageEditor.java @@ -1,6 +1,7 @@ package com.bbn.hadder.utils; import com.bbn.hadder.Rethink; +import com.bbn.hadder.RethinkUser; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.entities.User; @@ -11,11 +12,11 @@ import java.util.ResourceBundle; public class MessageEditor { - private Rethink rethink; + private RethinkUser rethinkUser; private User user; - public MessageEditor(Rethink rethink, User user) { - this.rethink = rethink; + public MessageEditor(RethinkUser rethinkUser, User user) { + this.rethinkUser = rethinkUser; this.user = user; } @@ -34,7 +35,7 @@ public class MessageEditor { public EmbedBuilder getMessage(MessageType type, String title, String title_extra, String title_extra_two, String description, String description_extra, String description_extra_two) { - String language = (this.user!=null) ? rethink.getLanguage(this.user.getId()) : null; + String language = (this.user!=null) ? rethinkUser.getLanguage() : null; EmbedBuilder eb = this.getDefaultSettings(type); if (!"".equals(title)) eb.setTitle(this.handle(language, title, title_extra, title_extra_two)); if (!"".equals(description)) eb.setDescription(this.handle(language, description, description_extra, description_extra_two)); @@ -105,11 +106,11 @@ public class MessageEditor { } public String getTerm(String string) { - return this.handle(rethink.getLanguage(user.getId()), string, "", ""); + return this.handle(rethinkUser.getLanguage(), string, "", ""); } public String getTerm(String string, String extra, String extra_two) { - return this.handle(rethink.getLanguage(user.getId()), string, extra, extra_two); + return this.handle(rethinkUser.getLanguage(), string, extra, extra_two); } private String handle(String language_code, String string, String extra, String extra_two) { -- 2.45.3 From 22dacda2813763fb12ade25000677a7b5c3401bf Mon Sep 17 00:00:00 2001 From: Hax Date: Mon, 20 Jan 2020 21:55:10 +0100 Subject: [PATCH 2/2] Added Permissions --- src/main/java/com/bbn/hadder/commands/owner/EchoCommand.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/bbn/hadder/commands/owner/EchoCommand.java b/src/main/java/com/bbn/hadder/commands/owner/EchoCommand.java index 2420c12..2044fa3 100644 --- a/src/main/java/com/bbn/hadder/commands/owner/EchoCommand.java +++ b/src/main/java/com/bbn/hadder/commands/owner/EchoCommand.java @@ -6,6 +6,8 @@ package com.bbn.hadder.commands.owner; import com.bbn.hadder.commands.Command; import com.bbn.hadder.commands.CommandEvent; +import com.bbn.hadder.core.Perm; +import com.bbn.hadder.core.Perms; import net.dv8tion.jda.api.audio.*; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.User; @@ -17,6 +19,7 @@ import java.nio.ByteBuffer; import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; +@Perms(Perm.BOT_OWNER) public class EchoCommand implements Command { @Override public void executed(String[] args, CommandEvent event) { -- 2.45.3