2022-03-28 15:23:10 +00:00
|
|
|
package moe.oko.Kiafumi.command;
|
|
|
|
|
2022-03-28 15:56:45 +00:00
|
|
|
import moe.oko.Kiafumi.Kiafumi;
|
|
|
|
import moe.oko.Kiafumi.model.Server;
|
2022-03-28 15:23:10 +00:00
|
|
|
import moe.oko.Kiafumi.util.CommandInfo;
|
2022-03-28 15:56:45 +00:00
|
|
|
import net.dv8tion.jda.api.EmbedBuilder;
|
2022-03-28 15:23:10 +00:00
|
|
|
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;
|
2022-03-28 15:23:10 +00:00
|
|
|
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;
|
|
|
|
}
|
2022-03-28 15:23:10 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@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;
|
|
|
|
}
|
|
|
|
}
|