package pl.shockah.shocky.cmds;
import pl.shockah.Config;
import pl.shockah.shocky.Data;
public class CmdSet extends Command {
public String command() {return "set";}
public String help(Parameters params) {
return "[r:controller] set {key} {value} - sets a bot option value";
}
public void doCommand(Parameters params, CommandCallback callback) {
callback.type = EType.Notice;
if (!params.hasMoreParams()) {
callback.append(help(params));
return;
}
String key = params.nextParam();
boolean global = false;
if (key.equals(".")) {
global = true;
if (!params.hasMoreParams()) {
callback.append(help(params));
return;
}
key = params.nextParam();
}
String value = params.getParams(0);
if (global) params.checkController();
else params.checkAny();
Config config;
if (global)
config = Data.config;
else {
if (key != null && Data.protectedKeys.contains(key)) {
callback.append("Key "+key+" is protected");
return;
}
config = Data.forChannel(params.channel);
}
if (key != null && !value.isEmpty()) {
config.set(key,value);
callback.append("Set ").append(key).append(" to ").append(value);
return;
} else if (!global && key != null) {
value = config.getString(key);
config.remove(key);
callback.append("Unset ").append(key).append(". Was ").append(value);
return;
}
callback.append(help(params));
}
}