From 001ddf5d307d3b71f82c64f23255a994dfea6267 Mon Sep 17 00:00:00 2001 From: Savvy Date: Sat, 30 Sep 2017 23:43:48 -0400 Subject: [PATCH] Fixed more bugs, allowed for conversations with rixa to be toggled --- .../rixa/commands/admin/ConfigCommand.java | 32 ++++++++++--------- .../database/sql/other/DatabaseTables.java | 3 +- .../me/savvy/rixa/events/MessageEvent.java | 4 ++- .../java/me/savvy/rixa/guild/RixaGuild.java | 4 +-- .../rixa/guild/management/GuildSettings.java | 10 ++---- .../me/savvy/rixa/modules/RixaModule.java | 2 ++ .../conversations/ConversationModule.java | 19 +++++++++-- .../me/savvy/rixa/utils/DatabaseUtils.java | 1 + 8 files changed, 45 insertions(+), 30 deletions(-) diff --git a/src/main/java/me/savvy/rixa/commands/admin/ConfigCommand.java b/src/main/java/me/savvy/rixa/commands/admin/ConfigCommand.java index a7006ad..957121d 100644 --- a/src/main/java/me/savvy/rixa/commands/admin/ConfigCommand.java +++ b/src/main/java/me/savvy/rixa/commands/admin/ConfigCommand.java @@ -6,7 +6,6 @@ import me.savvy.rixa.commands.handlers.CommandType; import me.savvy.rixa.commands.handlers.RixaPermission; import me.savvy.rixa.guild.RixaGuild; import me.savvy.rixa.guild.management.Guilds; -import me.savvy.rixa.modules.levels.LevelsModule; import me.savvy.rixa.modules.music.MusicModule; import me.savvy.rixa.utils.MessageBuilder; import net.dv8tion.jda.core.entities.ChannelType; @@ -172,30 +171,33 @@ public class ConfigCommand implements CommandExec { new MessageBuilder("Successfully set music role to " + role.getName() + "!").setColor(event.getMember().getColor()).queue(event.getChannel()); } } else if (messages[1].equalsIgnoreCase("enable")) { - if (messages[2].equalsIgnoreCase("music")) { - ((MusicModule) rixaGuild.getModule("Music")).setEnabled(true); - new MessageBuilder("Successfully enabled the music module!").setColor(event.getMember().getColor()).queue(event.getChannel()); - } else if (messages[2].equalsIgnoreCase("levels")) { - ((LevelsModule) rixaGuild.getModule("Levels")).setEnabled(true); - event.getChannel().sendMessage("Successfully enabled the levels module").queue(); - } else if (messages[2].equalsIgnoreCase("joinverification")) { + rixaGuild.getModules().keySet().forEach(moduleName -> { + if (messages[2].equalsIgnoreCase(moduleName)) { + rixaGuild.getModule(moduleName).setEnabled(true); + new MessageBuilder("Successfully enabled the `" + moduleName + "` module!").setColor(event.getMember().getColor()).queue(event.getChannel()); + } + }); + if (messages[2].equalsIgnoreCase("joinverification")) { Guilds.getGuild(event.getGuild()).getGuildSettings().setJoinVerification(true); new MessageBuilder("Successfully enabled Join Verification!").setColor(event.getMember().getColor()).queue(event.getChannel()); } } else if (messages[1].equalsIgnoreCase("disable")) { - if (messages[2].equalsIgnoreCase("music")) { - ((MusicModule) rixaGuild.getModule("Music")).setEnabled(false); - new MessageBuilder("Successfully disabled the music module!").setColor(event.getMember().getColor()).queue(event.getChannel()); - } else if (messages[2].equalsIgnoreCase("levels")) { - ((MusicModule) rixaGuild.getModule("Music")).setEnabled(false); - event.getChannel().sendMessage("Successfully disabled the levels module").queue(); - } else if (messages[2].equalsIgnoreCase("joinverification")) { + + rixaGuild.getModules().keySet().forEach(moduleName -> { + if (messages[2].equalsIgnoreCase(moduleName)) { + rixaGuild.getModule(moduleName).setEnabled(false); + new MessageBuilder("Successfully disabled the `" + moduleName + "` module!").setColor(event.getMember().getColor()).queue(event.getChannel()); + } + }); + if (messages[2].equalsIgnoreCase("joinverification")) { Guilds.getGuild(event.getGuild()).getGuildSettings().setJoinVerification(false); new MessageBuilder("Successfully disabled Join Verification!").setColor(event.getMember().getColor()).queue(event.getChannel()); } else if (messages[2].equalsIgnoreCase("joinmessage")) { Guilds.getGuild(event.getGuild()).getGuildSettings().setJoinMessageChannel("default_value"); + new MessageBuilder("Successfully disabled Join messages!").setColor(event.getMember().getColor()).queue(event.getChannel()); } else if (messages[2].equalsIgnoreCase("quitmessage")) { Guilds.getGuild(event.getGuild()).getGuildSettings().setQuitMessageChannel("default_value"); + new MessageBuilder("Successfully disabled Quit messages!").setColor(event.getMember().getColor()).queue(event.getChannel()); } } else if (messages[1].equalsIgnoreCase("addperm") || messages[1].equalsIgnoreCase("addpermission") || messages[1].equalsIgnoreCase("aperm")) { String permission = "notFound"; diff --git a/src/main/java/me/savvy/rixa/data/database/sql/other/DatabaseTables.java b/src/main/java/me/savvy/rixa/data/database/sql/other/DatabaseTables.java index 3c2aab2..5b02d09 100644 --- a/src/main/java/me/savvy/rixa/data/database/sql/other/DatabaseTables.java +++ b/src/main/java/me/savvy/rixa/data/database/sql/other/DatabaseTables.java @@ -12,8 +12,7 @@ public enum DatabaseTables { " `experience` int(90) NOT NULL\n" + ");"), - MODULES("CREATE TABLE IF NOT EXISTS `modules` ( `guild_id` varchar(255) DEFAULT NULL, `levels` tinyint(1) NOT NULL DEFAULT '1'\n" + - ")"), + MODULES("CREATE TABLE IF NOT EXISTS `modules` (`guild_id` varchar(255) DEFAULT NULL, `levels` tinyint(1) NOT NULL DEFAULT '1', `conversations` tinyint(1) NOT NULL DEFAULT '1');"), MUSIC("CREATE TABLE IF NOT EXISTS `music` ( `guild_id` varchar(255) NOT NULL UNIQUE PRIMARY KEY, `music_role` varchar(255) NOT NULL DEFAULT 'default_value'," + " `skip_amount` int(5) NOT NULL DEFAULT '0', `max_playlist_amount` int(5) NOT NULL DEFAULT '100', `enabled` tinyint(1) NOT NULL DEFAULT '0'\n" + diff --git a/src/main/java/me/savvy/rixa/events/MessageEvent.java b/src/main/java/me/savvy/rixa/events/MessageEvent.java index db83798..156e190 100644 --- a/src/main/java/me/savvy/rixa/events/MessageEvent.java +++ b/src/main/java/me/savvy/rixa/events/MessageEvent.java @@ -56,7 +56,9 @@ public class MessageEvent { new MessageBuilder(event.getGuild().getName() + "'s server prefix is `" + rixaGuild.getGuildSettings().getPrefix() + "`.").queue(event.getChannel()); return; } - s = ((ConversationModule) rixaGuild.getModule("Conversations")).getChatBotSession().think(s); + ConversationModule conversationModule = (ConversationModule) rixaGuild.getModule("Conversations"); + if (!conversationModule.isEnabled()) return; + s = conversationModule.getChatBotSession().think(s); if (s.isEmpty()) return; event.getChannel().sendMessage(s).queue(); return; diff --git a/src/main/java/me/savvy/rixa/guild/RixaGuild.java b/src/main/java/me/savvy/rixa/guild/RixaGuild.java index 785ac86..e3d609e 100644 --- a/src/main/java/me/savvy/rixa/guild/RixaGuild.java +++ b/src/main/java/me/savvy/rixa/guild/RixaGuild.java @@ -185,7 +185,7 @@ public class RixaGuild { } } - public RixaModule getModule(String levels) { - return this.modules.get(levels); + public RixaModule getModule(String module) { + return this.modules.get(module); } } diff --git a/src/main/java/me/savvy/rixa/guild/management/GuildSettings.java b/src/main/java/me/savvy/rixa/guild/management/GuildSettings.java index ca49886..6941d48 100644 --- a/src/main/java/me/savvy/rixa/guild/management/GuildSettings.java +++ b/src/main/java/me/savvy/rixa/guild/management/GuildSettings.java @@ -5,6 +5,7 @@ import lombok.Setter; import me.savvy.rixa.Rixa; import me.savvy.rixa.data.database.sql.SQLBuilder; import me.savvy.rixa.enums.Result; +import me.savvy.rixa.utils.DatabaseUtils; import net.dv8tion.jda.core.entities.Guild; import net.dv8tion.jda.core.entities.TextChannel; @@ -153,14 +154,7 @@ public class GuildSettings { } private void update(String table, String setting, String key, Object placeholder, Object placeholder2) throws SQLException { - PreparedStatement statement = db.getPreparedStatement("UPDATE ? SET ? = ? WHERE ? = ?;"); - statement.setString(1, table); - statement.setString(2, setting); - statement.setObject(3, placeholder); - statement.setString(4, key); - statement.setObject(5, placeholder2); - statement.executeUpdate(); - statement.close(); + DatabaseUtils.update(table, setting, key, placeholder, placeholder2); } public void setQuitMessageChannel(TextChannel quitMessageChannel) { diff --git a/src/main/java/me/savvy/rixa/modules/RixaModule.java b/src/main/java/me/savvy/rixa/modules/RixaModule.java index f5f5f13..51a3f80 100644 --- a/src/main/java/me/savvy/rixa/modules/RixaModule.java +++ b/src/main/java/me/savvy/rixa/modules/RixaModule.java @@ -13,5 +13,7 @@ public interface RixaModule { void load(); + void setEnabled(boolean b); + void save(); } diff --git a/src/main/java/me/savvy/rixa/modules/conversations/ConversationModule.java b/src/main/java/me/savvy/rixa/modules/conversations/ConversationModule.java index fa897d5..00ceeba 100644 --- a/src/main/java/me/savvy/rixa/modules/conversations/ConversationModule.java +++ b/src/main/java/me/savvy/rixa/modules/conversations/ConversationModule.java @@ -1,8 +1,14 @@ package me.savvy.rixa.modules.conversations; import com.google.code.chatterbotapi.*; +import lombok.Getter; +import lombok.Setter; +import me.savvy.rixa.Rixa; import me.savvy.rixa.guild.RixaGuild; import me.savvy.rixa.modules.RixaModule; +import me.savvy.rixa.utils.DatabaseUtils; + +import java.sql.PreparedStatement; public class ConversationModule implements RixaModule { @@ -10,6 +16,10 @@ public class ConversationModule implements RixaModule { private ChatterBotFactory factory; private ChatterBotSession chatBotSession; private ChatterBot chatBot; + @Getter + @Setter + private boolean enabled; + public ConversationModule(RixaGuild rixaGuild) { this.rixaGuild = rixaGuild; @@ -27,12 +37,15 @@ public class ConversationModule implements RixaModule { @Override public boolean isEnabled() { - return true; + return enabled; } @Override public void load() { try { + PreparedStatement ps = Rixa.getDatabase().getPreparedStatement("SELECT `conversations` FROM `modules` WHERE `guild_id` = ?"); + ps.setString(1, rixaGuild.getGuild().getId()); + this.enabled = Rixa.getDatabase().getBoolean(ps, "enabled"); factory = new ChatterBotFactory(); chatBot = factory.create(ChatterBotType.PANDORABOTS, "b0dafd24ee35a477"); chatBotSession = chatBot.createSession(); @@ -42,7 +55,9 @@ public class ConversationModule implements RixaModule { } @Override - public void save() {} + public void save() { + DatabaseUtils.update("modules", "conversations", "guild_id", enabled, rixaGuild.getGuild().getId()); + } public ChatterBotSession getChatBotSession() { return chatBotSession; diff --git a/src/main/java/me/savvy/rixa/utils/DatabaseUtils.java b/src/main/java/me/savvy/rixa/utils/DatabaseUtils.java index 9e98c12..6f023ff 100644 --- a/src/main/java/me/savvy/rixa/utils/DatabaseUtils.java +++ b/src/main/java/me/savvy/rixa/utils/DatabaseUtils.java @@ -18,6 +18,7 @@ public class DatabaseUtils { statement.setObject(2, placeholder); statement.setObject(3, placeholder2); statement.executeUpdate(); + statement.close(); } catch (SQLException e) { e.printStackTrace(); return Result.FALSE;