Refactored welcome message command
This commit is contained in:
parent
8d6be312b3
commit
c598d4b5c4
@ -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);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user