From def00258d44f52f0ce6cb0620ccd0e4dfe706529 Mon Sep 17 00:00:00 2001 From: Savvy Date: Tue, 3 Oct 2017 08:57:35 -0400 Subject: [PATCH] Added Modules Command, Features command and made config sub commands more consistent (Issue #6) --- src/main/java/me/savvy/rixa/Rixa.java | 3 +- .../rixa/commands/admin/ConfigCommand.java | 84 +++++++++---------- .../commands/general/FeaturesCommand.java | 28 +++++++ .../rixa/commands/general/ModulesCommand.java | 24 ++++++ .../commands/handlers/RixaPermission.java | 2 +- .../rixa/commands/mod/UnmuteCommand.java | 63 ++++++++++++++ .../database/sql/other/DatabaseTables.java | 3 +- .../java/me/savvy/rixa/guild/RixaGuild.java | 1 + 8 files changed, 162 insertions(+), 46 deletions(-) create mode 100644 src/main/java/me/savvy/rixa/commands/general/FeaturesCommand.java create mode 100644 src/main/java/me/savvy/rixa/commands/general/ModulesCommand.java create mode 100644 src/main/java/me/savvy/rixa/commands/mod/UnmuteCommand.java diff --git a/src/main/java/me/savvy/rixa/Rixa.java b/src/main/java/me/savvy/rixa/Rixa.java index 7070a73..897818a 100644 --- a/src/main/java/me/savvy/rixa/Rixa.java +++ b/src/main/java/me/savvy/rixa/Rixa.java @@ -136,7 +136,8 @@ public class Rixa { new BatchMoveCommand(), new MuteCommand(), new MusicCommand(), new ConfigCommand(), new UrbanDictionaryCommand(), new YoutubeCommand(), new AddRoleCommand(), new RemoveRoleCommand(), new LevelsCommand(), - new LeaderboardCommand(), new RaidModeCommand(), new OwnerCommand(), new ColorCommand()); + new LeaderboardCommand(), new RaidModeCommand(), new OwnerCommand(), + new ColorCommand(), new ModulesCommand()); register(new HelpReaction(), new ConfigReaction(), new LeaderboardReaction()); } 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 957121d..53337b7 100644 --- a/src/main/java/me/savvy/rixa/commands/admin/ConfigCommand.java +++ b/src/main/java/me/savvy/rixa/commands/admin/ConfigCommand.java @@ -40,10 +40,10 @@ public class ConfigCommand implements CommandExec { "%pconfig set twitterASecret ; Set Twitter Access Secret!", "%config set twitterChannel ; Set the channel for Twitter feed updates!", - "%pconfig joinMessage ; Set the greetings message for when a user joins the server!", - "%pconfig quitMessage ; Set the quit message for when a user leaves the server!", - "%pconfig joinPm ; Set the message to be private messaged when a user joins!", - "%pconfig description ; Set your server description!", + "%pconfig set tjoinMessage ; Set the greetings message for when a user joins the server!", + "%pconfig set quitMessage ; Set the quit message for when a user leaves the server!", + "%pconfig set joinPm ; Set the message to be private messaged when a user joins!", + "%pconfig set description ; Set your server description!", "%pconfig addPerm ; Give a role permission to access a command!", "%pconfig removePerm ; Remove a role's permission to access a command!", "%pconfig enable ; Enabled a Rixa Module!", @@ -87,43 +87,43 @@ public class ConfigCommand implements CommandExec { return; } String message; - if (messages[1].equalsIgnoreCase("joinmessage")) { - message = getMessage(messages); - if(event.getMessage().getMentionedChannels().size() > 0) { - for (TextChannel messageChannel : event.getMessage().getMentionedChannels()) { - message = message.replace(messageChannel.getAsMention(), "<#" + messageChannel.getId() + ">"); + if (messages[1].equalsIgnoreCase("set")) { + if (messages[2].equalsIgnoreCase("joinpm")) { + message = getMessage(messages); + if(event.getMessage().getMentionedChannels().size() > 0) { + for (TextChannel messageChannel : event.getMessage().getMentionedChannels()) { + message = message.replace(messageChannel.getAsMention(), "<#" + messageChannel.getId() + ">"); + } } - } - rixaGuild.getGuildSettings().setJoinMessage(message); - new MessageBuilder("Successfully set Join Message to\n" + message.replace("{0}", event.getMember().getUser().getName()) - .replace("{1}", event.getGuild().getName())).setColor(event.getMember().getColor()).queue(event.getChannel()); - } else if (messages[1].equalsIgnoreCase("quitmessage")) { - message = getMessage(messages); - if(event.getMessage().getMentionedChannels().size() > 0) { - for (TextChannel messageChannel : event.getMessage().getMentionedChannels()) { - message = message.replace(messageChannel.getAsMention(), "<#" + messageChannel.getId() + ">"); - } - } - rixaGuild.getGuildSettings().setQuitMessage(message); - new MessageBuilder("Successfully set Quit Message to\n" + message.replace("{0}", event.getMember().getUser().getName()) - .replace("{1}", event.getGuild().getName())).setColor(event.getMember().getColor()).queue(event.getChannel()); - } else if (messages[1].equalsIgnoreCase("joinpm")) { - message = getMessage(messages); - if(event.getMessage().getMentionedChannels().size() > 0) { - for (TextChannel messageChannel : event.getMessage().getMentionedChannels()) { - message = message.replace(messageChannel.getAsMention(), "<#" + messageChannel.getId() + ">"); - } - } - rixaGuild.getGuildSettings().setJoinPrivateMessage(message); - new MessageBuilder("Successfully set Private Join Message to\n" + message.replace("{0}", event.getMember().getUser().getName()) - .replace("{1}", event.getGuild().getName())).setColor(event.getMember().getColor()).queue(event.getChannel()); - } else if (messages[1].equalsIgnoreCase("description")) { - message = getMessage(messages); - rixaGuild.getGuildSettings().setDescription(message); - new MessageBuilder("Successfully set Server Description to\n" + message.replace("{0}", event.getMember().getUser().getName()) - .replace("{1}", event.getGuild().getName())).setColor(event.getMember().getColor()).queue(event.getChannel()); - } else if (messages[1].equalsIgnoreCase("set")) { - if (messages[2].equalsIgnoreCase("greetings")) { + rixaGuild.getGuildSettings().setJoinPrivateMessage(message); + new MessageBuilder("Successfully set Private Join Message to\n" + message.replace("{0}", event.getMember().getUser().getName()) + .replace("{1}", event.getGuild().getName())).setColor(event.getMember().getColor()).queue(event.getChannel()); + } else if (messages[2].equalsIgnoreCase("description")) { + message = getMessage(messages); + rixaGuild.getGuildSettings().setDescription(message); + new MessageBuilder("Successfully set Server Description to\n" + message.replace("{0}", event.getMember().getUser().getName()) + .replace("{1}", event.getGuild().getName())).setColor(event.getMember().getColor()).queue(event.getChannel()); + } else if (messages[2].equalsIgnoreCase("joinmessage")) { + message = getMessage(messages); + if(event.getMessage().getMentionedChannels().size() > 0) { + for (TextChannel messageChannel : event.getMessage().getMentionedChannels()) { + message = message.replace(messageChannel.getAsMention(), "<#" + messageChannel.getId() + ">"); + } + } + rixaGuild.getGuildSettings().setJoinMessage(message); + new MessageBuilder("Successfully set Join Message to\n" + message.replace("{0}", event.getMember().getUser().getName()) + .replace("{1}", event.getGuild().getName())).setColor(event.getMember().getColor()).queue(event.getChannel()); + } else if (messages[2].equalsIgnoreCase("quitmessage")) { + message = getMessage(messages); + if(event.getMessage().getMentionedChannels().size() > 0) { + for (TextChannel messageChannel : event.getMessage().getMentionedChannels()) { + message = message.replace(messageChannel.getAsMention(), "<#" + messageChannel.getId() + ">"); + } + } + rixaGuild.getGuildSettings().setQuitMessage(message); + new MessageBuilder("Successfully set Quit Message to\n" + message.replace("{0}", event.getMember().getUser().getName()) + .replace("{1}", event.getGuild().getName())).setColor(event.getMember().getColor()).queue(event.getChannel()); + } else if (messages[2].equalsIgnoreCase("greetings")) { rixaGuild.getGuildSettings().setJoinMessageChannel(event.getChannel()); new MessageBuilder("Successfully updated Greetings channel!").setColor(event.getMember().getColor()).queue(event.getChannel()); } else if (messages[2].equalsIgnoreCase("farewell")) { @@ -287,7 +287,7 @@ public class ConfigCommand implements CommandExec { private String getMessage(String[] messages) { StringBuilder builder = new StringBuilder(); - for(int i = 2; i < messages.length; i++) { + for(int i = 3; i < messages.length; i++) { builder.append(messages[i]).append(" "); } return builder.toString().trim(); @@ -296,4 +296,4 @@ public class ConfigCommand implements CommandExec { public static ConfigCommand getInstance() { return instance; } -} +} \ No newline at end of file diff --git a/src/main/java/me/savvy/rixa/commands/general/FeaturesCommand.java b/src/main/java/me/savvy/rixa/commands/general/FeaturesCommand.java new file mode 100644 index 0000000..9996e51 --- /dev/null +++ b/src/main/java/me/savvy/rixa/commands/general/FeaturesCommand.java @@ -0,0 +1,28 @@ +package me.savvy.rixa.commands.general; + +import me.savvy.rixa.commands.handlers.Command; +import me.savvy.rixa.commands.handlers.CommandExec; +import me.savvy.rixa.guild.RixaGuild; +import me.savvy.rixa.guild.management.Guilds; +import me.savvy.rixa.utils.MessageBuilder; +import net.dv8tion.jda.core.entities.ChannelType; +import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent; + +/** + * Created by Timber on 5/23/2017. + */ +public class FeaturesCommand implements CommandExec { + + @Override + @Command(mainCommand = "features", + description = "List Rixa Features!", + channelType = ChannelType.TEXT) + public void execute(GuildMessageReceivedEvent event) { + RixaGuild rixaGuild = Guilds.getGuild(event.getGuild()); + String[] features = {}; + new MessageBuilder( + features.length == 0 ? "There are currently no features listed." : + "Rixa Features: " + String.join("\n", features + )).setColor(event.getMember().getColor()).complete(event.getChannel()); + } +} diff --git a/src/main/java/me/savvy/rixa/commands/general/ModulesCommand.java b/src/main/java/me/savvy/rixa/commands/general/ModulesCommand.java new file mode 100644 index 0000000..f626eac --- /dev/null +++ b/src/main/java/me/savvy/rixa/commands/general/ModulesCommand.java @@ -0,0 +1,24 @@ +package me.savvy.rixa.commands.general; + +import me.savvy.rixa.commands.handlers.Command; +import me.savvy.rixa.commands.handlers.CommandExec; +import me.savvy.rixa.guild.RixaGuild; +import me.savvy.rixa.guild.management.Guilds; +import me.savvy.rixa.utils.MessageBuilder; +import net.dv8tion.jda.core.entities.ChannelType; +import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent; + +/** + * Created by Timber on 5/23/2017. + */ +public class ModulesCommand implements CommandExec { + + @Override + @Command(mainCommand = "modules", + description = "List Rixa Modules!", + channelType = ChannelType.TEXT) + public void execute(GuildMessageReceivedEvent event) { + RixaGuild rixaGuild = Guilds.getGuild(event.getGuild()); + new MessageBuilder("Available Rixa Modules: " + String.join(",", rixaGuild.getModules().keySet())).setColor(event.getMember().getColor()).complete(event.getChannel()); + } +} diff --git a/src/main/java/me/savvy/rixa/commands/handlers/RixaPermission.java b/src/main/java/me/savvy/rixa/commands/handlers/RixaPermission.java index fbba36b..1365ed5 100644 --- a/src/main/java/me/savvy/rixa/commands/handlers/RixaPermission.java +++ b/src/main/java/me/savvy/rixa/commands/handlers/RixaPermission.java @@ -5,6 +5,6 @@ package me.savvy.rixa.commands.handlers; */ public enum RixaPermission { - MUTE, ADD_ROLE, REMOVE_ROLE, CLEAR_CHAT, ACCESS_CONFIG, PM_MESSAGE, KICK_MEMBER, BAN_MEMBER, BATCH_MOVE, TOGGLE_RAIDMODE + MUTE, ADD_ROLE, REMOVE_ROLE, CLEAR_CHAT, ACCESS_CONFIG, PM_MESSAGE, KICK_MEMBER, BAN_MEMBER, BATCH_MOVE, UNMUTE, TOGGLE_RAIDMODE } diff --git a/src/main/java/me/savvy/rixa/commands/mod/UnmuteCommand.java b/src/main/java/me/savvy/rixa/commands/mod/UnmuteCommand.java new file mode 100644 index 0000000..de6ffbc --- /dev/null +++ b/src/main/java/me/savvy/rixa/commands/mod/UnmuteCommand.java @@ -0,0 +1,63 @@ +package me.savvy.rixa.commands.mod; + +import me.savvy.rixa.commands.handlers.Command; +import me.savvy.rixa.commands.handlers.CommandExec; +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.utils.MessageBuilder; +import net.dv8tion.jda.core.entities.ChannelType; +import net.dv8tion.jda.core.entities.Member; +import net.dv8tion.jda.core.entities.Role; +import net.dv8tion.jda.core.entities.User; +import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent; +import net.dv8tion.jda.core.exceptions.PermissionException; + +import java.util.Collections; + +/** + * Created by Timber on 6/5/2017. + */ +public class UnmuteCommand implements CommandExec { + @Override + @Command(mainCommand = "unmute", + description = "Unmute a member.", + type = CommandType.MOD, + channelType = ChannelType.TEXT) + public void execute(GuildMessageReceivedEvent event) { + RixaGuild rixaGuild = Guilds.getGuild(event.getGuild()); + if(!rixaGuild.hasPermission(event.getMember(), RixaPermission.UNMUTE)) { + new MessageBuilder(event.getMember().getAsMention() + ", you do not have permission for this command.").setColor(event.getMember().getColor()).queue(event.getChannel()); + return; + } + + if(rixaGuild.getGuildSettings().getMuteRole() == null || rixaGuild.getGuildSettings().getMuteRole().equalsIgnoreCase("default_value")) { + new MessageBuilder(event.getMember().getAsMention() + ", could not find appropriate role for muting!").setColor(event.getMember().getColor()).queue(event.getChannel()); + return; + } + + String[] messages = event.getMessage().getContent().split(" "); + if(event.getMessage().getMentionedUsers().size() < 1) { + new MessageBuilder(event.getMember().getAsMention() + ", incorrect usage try [" + messages[0] + " ].").setColor(event.getMember().getColor()).queue(event.getChannel()); + return; + } + try { + for(User user: event.getMessage().getMentionedUsers()) { + Member muted = rixaGuild.getGuild().getMember(user); + if (rixaGuild.isUserMuted(muted.getUser())) { + Role muteRole = event.getGuild().getRoleById(rixaGuild.getGuildSettings().getMuteRole()); + if(muteRole != null) { + rixaGuild.getGuild().getController().removeRolesFromMember(muted, Collections.singleton(muteRole)).queue(); + } + rixaGuild.unmuteMember(muted.getUser()); + new MessageBuilder("Successfully unmuted `" + muted.getEffectiveName() + "`.").setColor(event.getMember().getColor()).queue(event.getChannel()); + } else { + new MessageBuilder( muted.getEffectiveName() + ", is not muted.").setColor(event.getMember().getColor()).queue(event.getChannel()); + } + } + } catch (PermissionException ex) { + new MessageBuilder(event.getMember().getAsMention() + ", sorry I do not have permission for this!").setColor(event.getMember().getColor()).queue(event.getChannel()); + } + } +} \ No newline at end of file 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 5b02d09..f04dae8 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 @@ -21,8 +21,7 @@ public enum DatabaseTables { PERMISSIONS("CREATE TABLE IF NOT EXISTS `permissions` ( `role_id` varchar(255) NOT NULL, `guild_id` varchar(255) NOT NULL, `MUTE` tinyint(1) NOT NULL DEFAULT '0'," + " `ADD_ROLE` tinyint(1) NOT NULL DEFAULT '0', `REMOVE_ROLE` tinyint(1) NOT NULL DEFAULT '0', `CLEAR_CHAT` tinyint(1) NOT NULL DEFAULT '0'," + " `ACCESS_CONFIG` tinyint(1) NOT NULL DEFAULT '0', `PM_MESSAGE` tinyint(1) NOT NULL DEFAULT '0', `KICK_MEMBER` tinyint(1) NOT NULL DEFAULT '0'," + - " `BAN_MEMBER` tinyint(1) NOT NULL DEFAULT '0', `TOGGLE_RAIDMODE` tinyint(4) NOT NULL DEFAULT '0'\n" + - ");"), + " `BAN_MEMBER` tinyint(1) NOT NULL DEFAULT '0', `TOGGLE_RAIDMODE` tinyint(4) NOT NULL DEFAULT '0, `UNMUTE` tinyint(1) NOT NULL DEFAULT '0');"), POLLS("CREATE TABLE IF NOT EXISTS `polls` ( `id` int(9) NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` varchar(255) NOT NULL, `description` text," + " `option_1` varchar(255) DEFAULT NULL, `option_2` varchar(255) DEFAULT NULL, `option_3` varchar(255) DEFAULT NULL," + diff --git a/src/main/java/me/savvy/rixa/guild/RixaGuild.java b/src/main/java/me/savvy/rixa/guild/RixaGuild.java index 4b17314..f9284da 100644 --- a/src/main/java/me/savvy/rixa/guild/RixaGuild.java +++ b/src/main/java/me/savvy/rixa/guild/RixaGuild.java @@ -165,6 +165,7 @@ public class RixaGuild { } public void unmuteMember(User user) { + if (mutedMembers.contains(user.getId())) mutedMembers.remove(user.getId()); }