diff --git a/src/main/java/moe/oko/Kiafumi/Kiafumi.java b/src/main/java/moe/oko/Kiafumi/Kiafumi.java index 87b17a6..b6cb3db 100644 --- a/src/main/java/moe/oko/Kiafumi/Kiafumi.java +++ b/src/main/java/moe/oko/Kiafumi/Kiafumi.java @@ -2,6 +2,7 @@ package moe.oko.Kiafumi; import moe.oko.Kiafumi.command.CommandClass; import moe.oko.Kiafumi.command.PingCommand; +import moe.oko.Kiafumi.command.SettingCommand; import moe.oko.Kiafumi.listener.MainListener; import moe.oko.Kiafumi.model.KiafumiDB; import moe.oko.Kiafumi.model.ServerManager; @@ -78,6 +79,7 @@ public class Kiafumi { //All commands to be loaded on startup! activeCommands = new ArrayList<>(); activeCommands.add(new PingCommand()); + activeCommands.add(new SettingCommand()); instance = this; diff --git a/src/main/java/moe/oko/Kiafumi/command/SettingCommand.java b/src/main/java/moe/oko/Kiafumi/command/SettingCommand.java index 53e07a7..df04359 100644 --- a/src/main/java/moe/oko/Kiafumi/command/SettingCommand.java +++ b/src/main/java/moe/oko/Kiafumi/command/SettingCommand.java @@ -1,10 +1,15 @@ package moe.oko.Kiafumi.command; +import moe.oko.Kiafumi.Kiafumi; +import moe.oko.Kiafumi.model.Server; import moe.oko.Kiafumi.util.CommandInfo; +import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.interactions.commands.OptionType; +import java.awt.*; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -27,11 +32,58 @@ public class SettingCommand extends CommandClass { @Override public void newCommand(String name, SlashCommandInteractionEvent e) { - switch (name) { - case "settings": - case "setting": - case "setting set": - case "setting clear": + if(e.getGuild() == null) { + e.getChannel().sendMessage("This is a guild only command.").queue(); + Server server = Kiafumi.instance.getServerManager().getOrCreateServer(e.getGuild()); + switch (name) { + case "settings": + e.deferReply().queue(); + //No options, just fire an embed off... + EmbedBuilder eb = new EmbedBuilder() + .setColor(Color.PINK) + .setTitle("Server Settings") + .setFooter("Kiafumi - Maintained by oko.moe") + .setTimestamp(ZonedDateTime.now()) + .setDescription(server.getOpts()); + e.getHook().sendMessageEmbeds(eb.build()).queue(); + return; + case "setting": + e.deferReply().queue(); + String opt = e.getOption("Setting Name").getAsString(); + EmbedBuilder eb1 = new EmbedBuilder() + .setColor(Color.PINK) + .setTitle(opt + " Value") + .setFooter("Kiafumi - Maintained by oko.moe") + .setTimestamp(ZonedDateTime.now()) + .setDescription(server.getOptionByString(opt)); + e.getHook().sendMessageEmbeds(eb1.build()).queue(); + return; + case "setting set": + e.deferReply().queue(); + String opt1 = e.getOption("Setting Name").getAsString(); + String opt2 = e.getOption("Setting Value").getAsString(); + String response = server.setOptionByString(opt1, opt2); + EmbedBuilder eb2 = new EmbedBuilder() + .setColor(Color.PINK) + .setTitle("Setting Modification - " + opt1) + .setFooter("Kiafumi - Maintained by oko.moe") + .setTimestamp(ZonedDateTime.now()) + .setDescription(response); + e.getHook().sendMessageEmbeds(eb2.build()).queue(); + return; + case "setting clear": + e.deferReply().queue(); + String opt3 = e.getOption("Setting Name").getAsString(); + String response1 = server.resetOptionByString(opt3); + EmbedBuilder eb3 = new EmbedBuilder() + .setColor(Color.PINK) + .setTitle("Setting Reset - " + opt3) + .setFooter("Kiafumi - Maintained by oko.moe") + .setTimestamp(ZonedDateTime.now()) + .setDescription(response1); + e.getHook().sendMessageEmbeds(eb3.build()).queue(); + return; + } } } diff --git a/src/main/java/moe/oko/Kiafumi/model/Server.java b/src/main/java/moe/oko/Kiafumi/model/Server.java index a0eec8b..e17e440 100644 --- a/src/main/java/moe/oko/Kiafumi/model/Server.java +++ b/src/main/java/moe/oko/Kiafumi/model/Server.java @@ -1,5 +1,7 @@ package moe.oko.Kiafumi.model; +import moe.oko.Kiafumi.Kiafumi; + import javax.annotation.Nullable; /** @@ -87,6 +89,96 @@ public class Server { return modified; } + public String getOpts() { + return "welcomeEnabled - whether or not join/leave logs are enabled" + + "\nwelcomeChannel - the channel to send welcome messages to" + + "\njoinRole - the role to apply to new members who join this guild" + + "\nserverProtected - Determines whether or not server protections are enabled."; + } + + public String getOptionByString(String string) { + switch(string.toLowerCase()) { + case "welcomeenabled": + if(!welcomeEnabled) { + return "False"; + } else { + return "True"; + } + case "joinrole": + return joinRole; + case "welcomechannel": + return welcomeChannel; + case "serverprotected": + if(!serverProtected) { + return "False"; + } else { + return "True"; + } + default: + return "INVALID"; + } + } + + public String resetOptionByString(String name) { + switch(name.toLowerCase()) { + case "welcomeenabled": + welcomeEnabled = false; + return "Reset Join/Leave logs to default."; + case "joinrole": + joinRole = null; + return "Auto-role on join is now set to disabled (Default)."; + case "welcomechannel": + welcomeChannel = null; + return "Welcome channel is now unset."; + case "serverprotected": + serverProtected = true; + return "Server protection set to default."; + default: + return "INVALID SETTING"; + } + } + + public String setOptionByString(String name, String value) { + switch (name.toLowerCase()) { + case "welcomeenabled": + if(value.equalsIgnoreCase("false")) { + welcomeEnabled = false; + return "Join/Leave logs are now disabled."; + } else if(value.equalsIgnoreCase("true")) { + welcomeEnabled = true; + return "Join/Leave logs are now enabled. Make sure you set the `welcomeChannel` setting."; + } else { + return "Bad Value, use either true or false"; + } + case "joinrole": + if(Kiafumi.JDA.getRoleById(value) == null) { + return "That role ID is invalid."; + } else { + joinRole = value; + return "Successfully set joinRole ID to " + value; + } + case "welcomechannel": + if(Kiafumi.JDA.getTextChannelById(value) == null) { + return "That channel ID is invalid."; + } else { + welcomeChannel = value; + return "Successfully set welcomeChannel ID to " + value; + } + case "serverprotected": + if(value.equalsIgnoreCase("false")) { + serverProtected = false; + return "Server protection is now disabled."; + } else if(value.equalsIgnoreCase("true")) { + serverProtected = true; + return "Server protection is now enabled."; + } else { + return "Bad Value, use either true or false"; + } + default: + return "INVALID setting name."; + } + } + @Override public String toString() { return "Server{id=" + this.id + ",welcomeEnabled=" + welcomeEnabled + ",welcomeChannel="+welcomeChannel+