diff --git a/build.gradle b/build.gradle index 03ce3b2..ac7d1e7 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ plugins { } group 'dev.salmonllama' -version '2.0.0' +version '2.0.1' sourceCompatibility = 11 diff --git a/src/main/java/dev/salmonllama/fsbot/Main.java b/src/main/java/dev/salmonllama/fsbot/Main.java index 3d93c72..544dceb 100644 --- a/src/main/java/dev/salmonllama/fsbot/Main.java +++ b/src/main/java/dev/salmonllama/fsbot/Main.java @@ -37,8 +37,8 @@ public class Main { api.addMessageCreateListener(new AchievementListener()); api.addMessageCreateListener(new ReportListener()); - System.out.println(String.format("Bot invite: %s", api.createBotInvite())); - System.out.println(String.format("Logged in as %s", api.getYourself().getDiscriminatedName())); + System.out.printf("Bot invite: %s%n", api.createBotInvite()); + System.out.printf("Logged in as %s%n", api.getYourself().getDiscriminatedName()); }); } } diff --git a/src/main/java/dev/salmonllama/fsbot/commands/staff/GetOutfitCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/staff/GetOutfitCommand.java index 0354f51..583c043 100644 --- a/src/main/java/dev/salmonllama/fsbot/commands/staff/GetOutfitCommand.java +++ b/src/main/java/dev/salmonllama/fsbot/commands/staff/GetOutfitCommand.java @@ -5,7 +5,6 @@ package dev.salmonllama.fsbot.commands.staff; -import dev.salmonllama.fsbot.config.BotConfig; import dev.salmonllama.fsbot.database.controllers.OutfitController; import dev.salmonllama.fsbot.guthix.Command; import dev.salmonllama.fsbot.guthix.CommandContext; diff --git a/src/main/java/dev/salmonllama/fsbot/commands/staff/RemoveOutfitCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/staff/RemoveOutfitCommand.java index 0508bad..3912aad 100644 --- a/src/main/java/dev/salmonllama/fsbot/commands/staff/RemoveOutfitCommand.java +++ b/src/main/java/dev/salmonllama/fsbot/commands/staff/RemoveOutfitCommand.java @@ -71,8 +71,9 @@ public class RemoveOutfitCommand extends Command { EmbedBuilder response = new EmbedBuilder() .setTitle("Deletion Successful!") .setDescription(String.format("Outfit %s marked as deleted", outfit.getId())); + + msg.delete(); ctx.reply(response); - // TODO: Log the action in FSBot-Log EmbedBuilder log = new EmbedBuilder() .setTitle("Outfit Marked as Deleted") diff --git a/src/main/java/dev/salmonllama/fsbot/commands/staff/RetagCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/staff/RetagCommand.java index 11a72ff..c362e3e 100644 --- a/src/main/java/dev/salmonllama/fsbot/commands/staff/RetagCommand.java +++ b/src/main/java/dev/salmonllama/fsbot/commands/staff/RetagCommand.java @@ -79,7 +79,6 @@ public class RetagCommand extends Command { msg.delete(); ctx.reply(embed); - // TODO: Log the action in FSBot-log EmbedBuilder log = new EmbedBuilder() .setTitle("Outfit Retagged") diff --git a/src/main/java/dev/salmonllama/fsbot/commands/staff/WelcomeMessageCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/staff/WelcomeMessageCommand.java index 0c2904d..997260d 100644 --- a/src/main/java/dev/salmonllama/fsbot/commands/staff/WelcomeMessageCommand.java +++ b/src/main/java/dev/salmonllama/fsbot/commands/staff/WelcomeMessageCommand.java @@ -13,6 +13,7 @@ import dev.salmonllama.fsbot.guthix.CommandContext; import dev.salmonllama.fsbot.guthix.CommandPermission; import dev.salmonllama.fsbot.guthix.PermissionType; import org.javacord.api.entity.message.embed.EmbedBuilder; +import org.javacord.api.util.logging.ExceptionLogger; import java.util.ArrayList; import java.util.Arrays; @@ -42,61 +43,72 @@ public class WelcomeMessageCommand extends Command { switch (args[0]) { case "get": get(ctx); + break; 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) { - ServerConfigController.get(ctx.getServer().get().getIdAsString()).thenAcceptAsync(possibleConf -> { - possibleConf.ifPresentOrElse(conf -> { - EmbedBuilder response = new EmbedBuilder() - .setTitle("Current Welcome Message") - .setDescription(conf.getWelcomeMessage()); + ctx.getServer().ifPresent( // If server is present (not private message) get the server config + server -> ServerConfigController.get(server.getIdAsString()).thenAcceptAsync( + possibleConf -> possibleConf.ifPresentOrElse( // Check for current server config + conf -> ctx.reply(getMsg(conf)), // Fetch and send the current welcome message + () -> ctx.reply(notFound()) // No welcome message exists, sorrynotsorry + ) + )); + } - ctx.reply(response); - }, () -> { - EmbedBuilder response = new EmbedBuilder() - .setTitle("Does not exist!") - .setDescription("No welcome message was found! use `~wmsg set` to set one!"); + private EmbedBuilder getMsg(ServerConfig config) { + return new EmbedBuilder() + .setTitle("Current Welcome Message") + .setDescription(config.getWelcomeMessage()); + } - ctx.reply(response); - }); - }); + private EmbedBuilder notFound() { + return new EmbedBuilder() + .setTitle("Does not exist!") + .setDescription("No welcome message was found! use `~wmsg set` to set one!"); } private void set(CommandContext ctx, String newMsg) { - ServerConfigController.get(ctx.getServer().get().getIdAsString()).thenAcceptAsync(possibleConf -> { - possibleConf.ifPresentOrElse(conf -> { - // Update the config - ServerConfig config = new ServerConfig.ServerConfigBuilder().from(conf) - .setWelcomeMessage(newMsg) - .build(); + ctx.getServer().ifPresent( // If server is present (private msg check) get the server's config + server -> ServerConfigController.get(server.getIdAsString()).thenAcceptAsync( // Check for a current server 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 + } - ServerConfigController.update(config); + private EmbedBuilder updateMsg(ServerConfig conf, String newMsg) { + // Updates a welcome message from an already existing server config + ServerConfig config = new ServerConfig.ServerConfigBuilder().from(conf) + .setWelcomeMessage(newMsg) + .build(); - EmbedBuilder response = new EmbedBuilder() - .setTitle("Welcome Message Set") - .addField("New Welcome Message:", config.getWelcomeMessage()); + ServerConfigController.update(config).exceptionally(ExceptionLogger.get()); // TODO: Write a discord Throwable consumer like this - ctx.reply(response); - }, () -> { - // Create a config and set the welcome message - ServerConfig config = new ServerConfig.ServerConfigBuilder() - .setId(ctx.getServer().get().getIdAsString()) - .setPrefix(BotConfig.DEFAULT_PREFIX) - .setWelcomeMessage(newMsg) - .build(); + return new EmbedBuilder() + .setTitle("Welcome Message Set") + .addField("New Welcome Message:", config.getWelcomeMessage()); + } - ServerConfigController.insert(config); + private EmbedBuilder setNewMsg(String serverId, String newMsg) { + // Creates a new server config and adds a welcome message + ServerConfig config = new ServerConfig.ServerConfigBuilder() + .setId(serverId) + .setPrefix(BotConfig.DEFAULT_PREFIX) + .setWelcomeMessage(newMsg) + .build(); - EmbedBuilder response = new EmbedBuilder() - .setTitle("Welcome Message Set!") - .setDescription("server conf has been created") - .addField("New Welcome Message:", newMsg); + ServerConfigController.insert(config); - ctx.reply(response); - }); - }); + return new EmbedBuilder() + .setTitle("Welcome Message Set!") + .setDescription("server conf has been created") + .addField("New Welcome Message:", newMsg); } } diff --git a/src/main/java/dev/salmonllama/fsbot/database/DatabaseProvider.java b/src/main/java/dev/salmonllama/fsbot/database/DatabaseProvider.java index d898bac..d5fe031 100644 --- a/src/main/java/dev/salmonllama/fsbot/database/DatabaseProvider.java +++ b/src/main/java/dev/salmonllama/fsbot/database/DatabaseProvider.java @@ -28,7 +28,8 @@ public class DatabaseProvider { SQLiteConnectionPoolDataSource dataSource = new SQLiteConnectionPoolDataSource(); dataSource.setDatabaseName(DB_NAME); dataSource.setUrl(DB_ADDR); - return dataSource.getConnection(); + c = dataSource.getConnection(); + return c; } catch (SQLException e) { e.printStackTrace(); System.out.println("Could not connect to database, double check config values"); @@ -58,6 +59,8 @@ public class DatabaseProvider { } else if (p instanceof Timestamp) { query.setTimestamp(index, (Timestamp) p); + } else if (p == null) { + query.setNull(index, Types.NULL); } else { throw new UnknownParameterException(p, index); } diff --git a/src/main/java/dev/salmonllama/fsbot/database/controllers/OutfitController.java b/src/main/java/dev/salmonllama/fsbot/database/controllers/OutfitController.java index b9e4d21..8d6e385 100644 --- a/src/main/java/dev/salmonllama/fsbot/database/controllers/OutfitController.java +++ b/src/main/java/dev/salmonllama/fsbot/database/controllers/OutfitController.java @@ -402,7 +402,7 @@ public class OutfitController { .setTag(rs.getString("tag")) .setMeta(rs.getString("meta")) .setCreated(new Timestamp(rs.getLong("created"))) - .setUpdated(new Timestamp((rs.getLong("updated")))) + .setUpdated(new Timestamp(rs.getLong("updated"))) .setDeleted(rs.getBoolean("deleted")) .setFeatured(rs.getBoolean("featured")) .setDisplayCount(rs.getInt("display_count")) diff --git a/src/main/java/dev/salmonllama/fsbot/database/controllers/ServerConfigController.java b/src/main/java/dev/salmonllama/fsbot/database/controllers/ServerConfigController.java index c88a155..e4f4d52 100644 --- a/src/main/java/dev/salmonllama/fsbot/database/controllers/ServerConfigController.java +++ b/src/main/java/dev/salmonllama/fsbot/database/controllers/ServerConfigController.java @@ -72,7 +72,7 @@ public class ServerConfigController { } private static void updateExec(ServerConfig config) throws SQLException { - FSDB.get().query("UPDATE server_config SET prefix = ?, welcome_message = ?, welcome_channel = ?, WHERE id = ?", + FSDB.get().query("UPDATE server_config SET prefix = ?, welcome_message = ?, welcome_channel = ? WHERE id = ?", config.getPrefix(), config.getWelcomeMessage(), config.getWelcomeChannel(), diff --git a/src/main/java/dev/salmonllama/fsbot/listeners/ImageListener.java b/src/main/java/dev/salmonllama/fsbot/listeners/ImageListener.java index 5a82e6c..f384857 100644 --- a/src/main/java/dev/salmonllama/fsbot/listeners/ImageListener.java +++ b/src/main/java/dev/salmonllama/fsbot/listeners/ImageListener.java @@ -17,8 +17,6 @@ import org.javacord.api.event.message.MessageCreateEvent; import org.javacord.api.listener.message.MessageCreateListener; import org.javacord.api.util.logging.ExceptionLogger; -import java.sql.Timestamp; - public class ImageListener implements MessageCreateListener { @Override @@ -57,8 +55,7 @@ public class ImageListener implements MessageCreateListener { .setMeta(event.getMessageContent()) .setLink(upload.getLink()) .setSubmitter(event.getMessageAuthor().getIdAsString()) - .setDeleteHash(upload.getDeleteHash()) - .setCreated(new Timestamp(upload.getDateTime())); + .setDeleteHash(upload.getDeleteHash()); GalleryController.getTag(channel.getIdAsString()).thenAccept(tag -> { outfitBuilder.setTag(tag); diff --git a/src/main/java/dev/salmonllama/fsbot/listeners/NewMemberListener.java b/src/main/java/dev/salmonllama/fsbot/listeners/NewMemberListener.java index 8ea2737..458b439 100644 --- a/src/main/java/dev/salmonllama/fsbot/listeners/NewMemberListener.java +++ b/src/main/java/dev/salmonllama/fsbot/listeners/NewMemberListener.java @@ -6,6 +6,7 @@ package dev.salmonllama.fsbot.listeners; import dev.salmonllama.fsbot.config.BotConfig; +import dev.salmonllama.fsbot.database.controllers.ServerConfigController; import org.javacord.api.event.server.member.ServerMemberJoinEvent; import org.javacord.api.listener.server.member.ServerMemberJoinListener; @@ -14,11 +15,14 @@ public class NewMemberListener implements ServerMemberJoinListener { public void onServerMemberJoin(ServerMemberJoinEvent event) { if (!event.getServer().getIdAsString().equals(BotConfig.HOME_SERVER)) { + // Only active in the Fashionscape server, currently. return; } -// String logMessage = String.format(welcomeMsg, event.getUser().getMentionTag()); - - event.getApi().getServerTextChannelById(BotConfig.WELCOME_CHANNEL).ifPresent(channel -> channel.sendMessage("Welcome!")); + // TODO: Use the ServerConfig to retrieve the welcome channel as well. + event.getApi().getServerTextChannelById(BotConfig.WELCOME_CHANNEL).ifPresent( // Get the Welcome Channel + channel -> ServerConfigController.get(event.getServer().getIdAsString()).thenAcceptAsync( // Fetch the server config, if set. + possibleConfig -> possibleConfig.ifPresent( // If config exists + config -> channel.sendMessage(String.format(config.getWelcomeMessage(), event.getUser().getMentionTag()))))); // Send the welcome message } }