kiafumi/src/main/java/moe/oko/Kiafumi/command/SettingCommand.java

121 lines
5.3 KiB
Java
Raw Normal View History

package moe.oko.Kiafumi.command;
2022-03-28 15:56:45 +00:00
import moe.oko.Kiafumi.Kiafumi;
import moe.oko.Kiafumi.model.Server;
import moe.oko.Kiafumi.util.CommandInfo;
2022-03-28 15:56:45 +00:00
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;
2022-03-28 15:56:45 +00:00
import java.awt.*;
import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class SettingCommand extends CommandClass {
@Override
public boolean isEnabled() {
return true; //Another non-disable command
}
@Override
public String getName() {
return "Settings";
}
@Override
public void legacyCommand(String[] args, MessageReceivedEvent e, boolean prefix) {
}
@Override
public void newCommand(String name, SlashCommandInteractionEvent e) {
2022-03-28 15:56:45 +00:00
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;
}
}
}
@Override
public List<String> getCommandsAsList() {
List<String> cmds = new ArrayList<>();
cmds.add("settings - displays all available settings for the current guild.");
cmds.add("setting - views the current value for the setting.");
cmds.add("setting set - sets a setting for the guild you are in.");
cmds.add("setting clear - reverts a setting back to its default value.");
return null;
}
@Override
public List<CommandInfo> getSlashCommandInfo() {
List<CommandInfo> si = new ArrayList<>();
CommandInfo ci = new CommandInfo("setting", "displays all available settings for the current guild");
si.add(ci);
CommandInfo ci2 = new CommandInfo("setting", "views the current value for the setting");
ci2.addOption("Setting Name", "The name of the setting to view", OptionType.STRING, true);
si.add(ci2);
CommandInfo ci3 = new CommandInfo("setting set", "sets a setting for the guild you are in");
ci3.addOption("Setting Name", "The name of the setting to modify", OptionType.STRING, true);
ci3.addOption("Setting Value", "The value to set the setting to", OptionType.STRING, true);
si.add(ci3);
CommandInfo ci4 = new CommandInfo("setting clear", "reverts a setting back to its default value");
ci4.addOption("Setting Name", "Name of the setting to clear", OptionType.STRING, true);
si.add(ci4);
return si;
}
}