Refactored welcome message command

This commit is contained in:
Salmonllama 2020-07-30 18:01:52 -04:00
parent 8d6be312b3
commit c598d4b5c4

View File

@ -13,6 +13,7 @@ import dev.salmonllama.fsbot.guthix.CommandContext;
import dev.salmonllama.fsbot.guthix.CommandPermission; import dev.salmonllama.fsbot.guthix.CommandPermission;
import dev.salmonllama.fsbot.guthix.PermissionType; import dev.salmonllama.fsbot.guthix.PermissionType;
import org.javacord.api.entity.message.embed.EmbedBuilder; import org.javacord.api.entity.message.embed.EmbedBuilder;
import org.javacord.api.util.logging.ExceptionLogger;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
@ -42,61 +43,72 @@ public class WelcomeMessageCommand extends Command {
switch (args[0]) { switch (args[0]) {
case "get": case "get":
get(ctx); get(ctx);
break;
case "set": // TODO: check for args here case "set": // TODO: check for args here
set(ctx, args[1]); String newMsg = String.join(" ", Arrays.copyOfRange(args, 1, args.length));
set(ctx, newMsg);
break;
default:
ctx.reply("You used this command incorrectly.");
} }
} }
private void get(CommandContext ctx) { private void get(CommandContext ctx) {
ServerConfigController.get(ctx.getServer().get().getIdAsString()).thenAcceptAsync(possibleConf -> { ctx.getServer().ifPresent( // If server is present (not private message) get the server config
possibleConf.ifPresentOrElse(conf -> { server -> ServerConfigController.get(server.getIdAsString()).thenAcceptAsync(
EmbedBuilder response = new EmbedBuilder() possibleConf -> possibleConf.ifPresentOrElse( // Check for current server config
.setTitle("Current Welcome Message") conf -> ctx.reply(getMsg(conf)), // Fetch and send the current welcome message
.setDescription(conf.getWelcomeMessage()); () -> ctx.reply(notFound()) // No welcome message exists, sorrynotsorry
)
));
}
ctx.reply(response); private EmbedBuilder getMsg(ServerConfig config) {
}, () -> { return new EmbedBuilder()
EmbedBuilder response = new EmbedBuilder() .setTitle("Current Welcome Message")
.setDescription(config.getWelcomeMessage());
}
private EmbedBuilder notFound() {
return new EmbedBuilder()
.setTitle("Does not exist!") .setTitle("Does not exist!")
.setDescription("No welcome message was found! use `~wmsg set` to set one!"); .setDescription("No welcome message was found! use `~wmsg set` to set one!");
ctx.reply(response);
});
});
} }
private void set(CommandContext ctx, String newMsg) { private void set(CommandContext ctx, String newMsg) {
ServerConfigController.get(ctx.getServer().get().getIdAsString()).thenAcceptAsync(possibleConf -> { ctx.getServer().ifPresent( // If server is present (private msg check) get the server's config
possibleConf.ifPresentOrElse(conf -> { server -> ServerConfigController.get(server.getIdAsString()).thenAcceptAsync( // Check for a current server config
// Update the config possibleConf -> possibleConf.ifPresentOrElse(
conf -> ctx.reply(updateMsg(conf, newMsg)), // Config exists, update with new welcome message
() -> ctx.reply(setNewMsg(server.getIdAsString(), newMsg))))); // Config does not exist, init and add new welcome message
}
private EmbedBuilder updateMsg(ServerConfig conf, String newMsg) {
// Updates a welcome message from an already existing server config
ServerConfig config = new ServerConfig.ServerConfigBuilder().from(conf) ServerConfig config = new ServerConfig.ServerConfigBuilder().from(conf)
.setWelcomeMessage(newMsg) .setWelcomeMessage(newMsg)
.build(); .build();
ServerConfigController.update(config); ServerConfigController.update(config).exceptionally(ExceptionLogger.get()); // TODO: Write a discord Throwable consumer like this
EmbedBuilder response = new EmbedBuilder() return new EmbedBuilder()
.setTitle("Welcome Message Set") .setTitle("Welcome Message Set")
.addField("New Welcome Message:", config.getWelcomeMessage()); .addField("New Welcome Message:", config.getWelcomeMessage());
}
ctx.reply(response); private EmbedBuilder setNewMsg(String serverId, String newMsg) {
}, () -> { // Creates a new server config and adds a welcome message
// Create a config and set the welcome message
ServerConfig config = new ServerConfig.ServerConfigBuilder() ServerConfig config = new ServerConfig.ServerConfigBuilder()
.setId(ctx.getServer().get().getIdAsString()) .setId(serverId)
.setPrefix(BotConfig.DEFAULT_PREFIX) .setPrefix(BotConfig.DEFAULT_PREFIX)
.setWelcomeMessage(newMsg) .setWelcomeMessage(newMsg)
.build(); .build();
ServerConfigController.insert(config); ServerConfigController.insert(config);
EmbedBuilder response = new EmbedBuilder() return new EmbedBuilder()
.setTitle("Welcome Message Set!") .setTitle("Welcome Message Set!")
.setDescription("server conf has been created") .setDescription("server conf has been created")
.addField("New Welcome Message:", newMsg); .addField("New Welcome Message:", newMsg);
ctx.reply(response);
});
});
} }
} }