From ae1bd29c81c5f2887d75aa8a2607dd8e9deefc4a Mon Sep 17 00:00:00 2001 From: Alex G Date: Tue, 28 Jun 2022 10:32:05 -0400 Subject: [PATCH 01/12] Update version --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 09039d1..8d5bccc 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,7 @@ plugins { apply plugin: 'io.spring.dependency-management' group 'dev.salmonllama' -version '2.0.5' +version '2.1.1' sourceCompatibility = 16 From d940a61d38670809c064bcefaed570c00ff2b650 Mon Sep 17 00:00:00 2001 From: Alex G Date: Tue, 28 Jun 2022 10:44:50 -0400 Subject: [PATCH 02/12] Update dockerfile for gcp creds. --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 5ba46ce..cf1b1a7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,6 +10,7 @@ FROM openjdk:16 EXPOSE 8080 ENV ENVIRONMENT=PROD +ENV GOOGLE_APPLICATION_CREDENTIALS=/root/.fsbot/google_application_credentials.json RUN mkdir /app From 8d1721e2f106ba5cb5c17eb4e3f7cb6e2c321871 Mon Sep 17 00:00:00 2001 From: Alex G Date: Tue, 28 Jun 2022 10:54:18 -0400 Subject: [PATCH 03/12] Update dockerfile for gcp creds v2 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index cf1b1a7..a869767 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,7 +10,7 @@ FROM openjdk:16 EXPOSE 8080 ENV ENVIRONMENT=PROD -ENV GOOGLE_APPLICATION_CREDENTIALS=/root/.fsbot/google_application_credentials.json +ENV GOOGLE_APPLICATION_CREDENTIALS=~/root/.fsbot/google_application_credentials.json RUN mkdir /app From 38647ef28d94b0bb3dadbc33947268aafeb9d70e Mon Sep 17 00:00:00 2001 From: Alex G Date: Tue, 28 Jun 2022 11:06:52 -0400 Subject: [PATCH 04/12] Update dockerfile/cred url for gcp creds v3 --- Dockerfile | 2 +- src/main/java/dev/salmonllama/fsbot/config/SecretManager.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index a869767..cf1b1a7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,7 +10,7 @@ FROM openjdk:16 EXPOSE 8080 ENV ENVIRONMENT=PROD -ENV GOOGLE_APPLICATION_CREDENTIALS=~/root/.fsbot/google_application_credentials.json +ENV GOOGLE_APPLICATION_CREDENTIALS=/root/.fsbot/google_application_credentials.json RUN mkdir /app diff --git a/src/main/java/dev/salmonllama/fsbot/config/SecretManager.java b/src/main/java/dev/salmonllama/fsbot/config/SecretManager.java index 00226ac..cec40ff 100644 --- a/src/main/java/dev/salmonllama/fsbot/config/SecretManager.java +++ b/src/main/java/dev/salmonllama/fsbot/config/SecretManager.java @@ -5,7 +5,8 @@ import java.io.IOException; import com.google.cloud.secretmanager.v1.SecretManagerServiceClient; public enum SecretManager { - DISCORD_TOKEN ("projects/fashionscapers-212707/secrets/fs_discord_token/versions/1"), + // TODO: Change this to adapt to env + DISCORD_TOKEN ("projects/fashionscapers-212707/secrets/fs_discord_token_prod/versions/1"), IMGUR_ID ("projects/fashionscapers-212707/secrets/fs_imgur_client_id/versions/1"), IMGUR_BEARER ("projects/fashionscapers-212707/secrets/fs_imgur_bearer_token/versions/1") ; From 1f1e5c6cebd306f645eb431999bf321380aef3ab Mon Sep 17 00:00:00 2001 From: Alex G Date: Tue, 28 Jun 2022 11:13:02 -0400 Subject: [PATCH 05/12] Added discord_name to insert statement --- .../fsbot/database/controllers/OutfitController.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 6d0c8ef..f467159 100644 --- a/src/main/java/dev/salmonllama/fsbot/database/controllers/OutfitController.java +++ b/src/main/java/dev/salmonllama/fsbot/database/controllers/OutfitController.java @@ -232,13 +232,14 @@ public class OutfitController { FSDB.get().insert( "INSERT INTO " + - "outfits('id', 'link', 'submitter', 'tag', 'meta', 'created', 'updated', 'deleted', 'featured', 'display_count', 'delete_hash') " + - "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "outfits('id', 'link', 'submitter', 'tag', 'meta', 'discord_name', 'created', 'updated', 'deleted', 'featured', 'display_count', 'delete_hash') " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", outfit.getId(), outfit.getLink(), outfit.getSubmitter(), outfit.getTag(), outfit.getMeta(), + outfit.getDiscordName(), outfit.getCreated(), outfit.getUpdated(), outfit.isDeleted(), From 7c2576623e015d2f82e40345c51c7fe8ef55f403 Mon Sep 17 00:00:00 2001 From: Alex G Date: Sun, 3 Jul 2022 21:34:11 -0400 Subject: [PATCH 06/12] Fix typo preventing zammy restorations logging successfully --- .../salmonllama/fsbot/commands/staff/RestoreOutfitCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/dev/salmonllama/fsbot/commands/staff/RestoreOutfitCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/staff/RestoreOutfitCommand.java index bb8d23c..6ab4e2e 100644 --- a/src/main/java/dev/salmonllama/fsbot/commands/staff/RestoreOutfitCommand.java +++ b/src/main/java/dev/salmonllama/fsbot/commands/staff/RestoreOutfitCommand.java @@ -81,7 +81,7 @@ public class RestoreOutfitCommand extends Command { // TODO: START ZAMMY if (outfit.getTag().equals("zammy")) { - ctx.getApi().getServerTextChannelById(BotConfig.OUTFIT_LOG).ifPresent( + ctx.getApi().getServerTextChannelById(BotConfig.ZAMMY_LOG).ifPresent( chnl -> chnl.sendMessage(log) ); } From bc2193cd6d5da0b3bea9e67cd5503cd8594fea0d Mon Sep 17 00:00:00 2001 From: alexg Date: Sun, 13 Nov 2022 17:11:10 -0500 Subject: [PATCH 07/12] Remove fallback response. --- .../salmonllama/fsbot/commands/staff/AddColorCommand.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/dev/salmonllama/fsbot/commands/staff/AddColorCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/staff/AddColorCommand.java index 6cef239..168f4c0 100644 --- a/src/main/java/dev/salmonllama/fsbot/commands/staff/AddColorCommand.java +++ b/src/main/java/dev/salmonllama/fsbot/commands/staff/AddColorCommand.java @@ -19,8 +19,8 @@ public class AddColorCommand extends Command { @Override public void onCommand(CommandContext ctx) { - ctx.getApi().getOwner().thenAcceptAsync(owner -> { - ctx.reply("This command is no longer active. An alternative is currently being developed. For more information, please contact " + owner.getDiscriminatedName()); - }); +// ctx.getApi().getOwner().thenAcceptAsync(owner -> { +// ctx.reply("This command is no longer active. An alternative is currently being developed. For more information, please contact " + owner.getDiscriminatedName()); +// }); } } From 98d8dc382fafb3ac034b92b68452efd3be84bcb1 Mon Sep 17 00:00:00 2001 From: alexg Date: Sun, 13 Nov 2022 17:11:26 -0500 Subject: [PATCH 08/12] Update javacord to latest --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 8d5bccc..9773472 100644 --- a/build.gradle +++ b/build.gradle @@ -25,7 +25,7 @@ dependencies { implementation 'org.xerial:sqlite-jdbc:3.36.0.2' implementation 'org.postgresql:postgresql:42.2.24' implementation 'com.github.Kaaz:ConfigurationBuilder:0.4' - implementation 'org.javacord:javacord:3.3.2' + implementation 'org.javacord:javacord:3.7.0' implementation 'com.vdurmont:emoji-java:5.1.1' implementation 'com.squareup.okhttp3:okhttp:4.9.1' implementation 'ch.qos.logback:logback-classic:1.2.5' From b0aa137a691651faf4260d414b3e71c5c058f07a Mon Sep 17 00:00:00 2001 From: alexg Date: Sun, 13 Nov 2022 17:11:42 -0500 Subject: [PATCH 09/12] Add message content intent --- src/main/java/dev/salmonllama/fsbot/Main.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/dev/salmonllama/fsbot/Main.java b/src/main/java/dev/salmonllama/fsbot/Main.java index 3a65bf9..5015f44 100644 --- a/src/main/java/dev/salmonllama/fsbot/Main.java +++ b/src/main/java/dev/salmonllama/fsbot/Main.java @@ -12,6 +12,7 @@ import dev.salmonllama.fsbot.listeners.*; import org.javacord.api.DiscordApiBuilder; import dev.salmonllama.fsbot.utilities.Constants; +import org.javacord.api.entity.intent.Intent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; @@ -38,7 +39,7 @@ public class Main { token = SecretManager.DISCORD_TOKEN.getPlainText(); } - new DiscordApiBuilder().setToken(token).login().thenAccept(api -> { + new DiscordApiBuilder().addIntents(Intent.MESSAGE_CONTENT).setToken(token).login().thenAccept(api -> { @SuppressWarnings("unused") Guthix guthix = new Guthix(api); From 81ee89978cbc3cf4b72968e01f40e50eba62b890 Mon Sep 17 00:00:00 2001 From: alexg Date: Sun, 13 Nov 2022 17:15:34 -0500 Subject: [PATCH 10/12] Rework the module to include images in reports. --- .../fsbot/listeners/ReportListener.java | 72 ++++++++++++------- 1 file changed, 45 insertions(+), 27 deletions(-) diff --git a/src/main/java/dev/salmonllama/fsbot/listeners/ReportListener.java b/src/main/java/dev/salmonllama/fsbot/listeners/ReportListener.java index fa69bb3..f275a4d 100644 --- a/src/main/java/dev/salmonllama/fsbot/listeners/ReportListener.java +++ b/src/main/java/dev/salmonllama/fsbot/listeners/ReportListener.java @@ -7,8 +7,8 @@ package dev.salmonllama.fsbot.listeners; import org.javacord.api.DiscordApi; import org.javacord.api.entity.channel.TextChannel; import org.javacord.api.entity.message.Message; +import org.javacord.api.entity.message.MessageAttachment; import org.javacord.api.entity.message.MessageAuthor; -import org.javacord.api.entity.message.MessageBuilder; import org.javacord.api.entity.message.embed.EmbedBuilder; import org.javacord.api.event.message.MessageCreateEvent; import org.javacord.api.listener.message.MessageCreateListener; @@ -23,44 +23,62 @@ public class ReportListener implements MessageCreateListener { public void onMessageCreate(MessageCreateEvent event) { DiscordApi api = event.getApi(); - TextChannel channel = event.getChannel(); + TextChannel reportChannel = event.getChannel(); - if (!channel.getIdAsString().equals(BotConfig.REPORT_CHANNEL)) { + if (!reportChannel.getIdAsString().equals(BotConfig.REPORT_CHANNEL)) { return; } Message message = event.getMessage(); + String content = message.getContent(); MessageAuthor author = message.getAuthor(); if (author.isBotUser()) { return; } - String content = message.getContent(); - message.getAttachments().forEach( - attachment -> attachment.downloadAsImage().thenAcceptAsync( - image -> new MessageBuilder() - .addAttachment(image, "evidence") - .setContent("Report Evidence:") - .send(channel))); + // The report log, also known as the #moderators channel. + Optional modChannel = api.getTextChannelById(BotConfig.REPORT_LOG); + if (message.getAttachments().stream().anyMatch(MessageAttachment::isImage)) { + // Send the images with the content + message.getAttachments().stream().filter(MessageAttachment::isImage).forEach( + messageAttachment -> { + // The messageAttachment is an image, proceed accordingly. + // Upload the image to an embed and send it to the mods channel + // Include any content that was sent with it + messageAttachment.asImage().thenAcceptAsync(bufferedImage -> { + EmbedBuilder embed = new EmbedBuilder() + .setTitle("User Report with Image") + .setColor(Color.GREEN) + .setImage(bufferedImage) + .setFooter("Sent by: " + author.getDiscriminatedName()); + + if (!message.getContent().equals("")) { + embed.setDescription(message.getContent()); + } + + modChannel.ifPresentOrElse( + chnl -> chnl.sendMessage(embed), + () -> reportChannel.sendMessage("An error has occurred. Could not find the proper log channel. Please contact a staff member") + .thenAccept(MessageUtilities.deleteAfter(30, TimeUnit.SECONDS))); + }); + }); + } else { + // Just send the content + EmbedBuilder embed = new EmbedBuilder() + .setTitle("User Report") + .setDescription(content) + .setColor(Color.GREEN) + .setFooter("From: " + author.getDiscriminatedName()); + + modChannel.ifPresentOrElse( + chnl -> chnl.sendMessage(embed), + () -> reportChannel.sendMessage("An error has occurred. Could not find the proper log channel. Please contact a staff member") + .thenAccept(MessageUtilities.deleteAfter(30, TimeUnit.SECONDS))); + } + + // Delete the message from the channel. message.delete().join(); - - EmbedBuilder embed = new EmbedBuilder() - .setTitle("User Report") - .setDescription(content) - .setColor(Color.GREEN) - .setFooter("From: " + author.getDiscriminatedName()); - - Optional logChannel = api.getTextChannelById(BotConfig.REPORT_LOG); - if (logChannel.isPresent()) { - logChannel.get().sendMessage(embed); - } - else { - channel.sendMessage("Could not find proper log channel, please contact a staff member.") - .thenAccept(MessageUtilities.deleteAfter(30, TimeUnit.SECONDS)); - - } - } } From 8c66e94d436c1c647dab7d7acbb1f54857a9aaf3 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 14 Nov 2022 02:49:57 +0000 Subject: [PATCH 11/12] Updated build files for specificity --- Dockerfile | 2 +- build.gradle | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index cf1b1a7..3867f3b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,6 +14,6 @@ ENV GOOGLE_APPLICATION_CREDENTIALS=/root/.fsbot/google_application_credentials.j RUN mkdir /app -COPY --from=build /home/gradle/src/build/libs/*.jar /app/fashionscape-bot.jar +COPY --from=build /home/gradle/src/build/libs/fsbot.jar /app/fashionscape-bot.jar ENTRYPOINT ["java","-jar","-Xmx800m","/app/fashionscape-bot.jar"] diff --git a/build.gradle b/build.gradle index 9773472..ca43bc9 100644 --- a/build.gradle +++ b/build.gradle @@ -7,6 +7,10 @@ plugins { id 'application' } +jar { + archiveName = "fsbot.jar" +} + apply plugin: 'io.spring.dependency-management' group 'dev.salmonllama' From ff0be1a183e39e7c562c98cdbb040002df576788 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 14 Nov 2022 03:40:38 +0000 Subject: [PATCH 12/12] tweak build files for Spring update --- Dockerfile | 2 +- build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3867f3b..f8d80b2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,6 +14,6 @@ ENV GOOGLE_APPLICATION_CREDENTIALS=/root/.fsbot/google_application_credentials.j RUN mkdir /app -COPY --from=build /home/gradle/src/build/libs/fsbot.jar /app/fashionscape-bot.jar +COPY --from=build /home/gradle/src/build/libs/* /app/fashionscape-bot.jar ENTRYPOINT ["java","-jar","-Xmx800m","/app/fashionscape-bot.jar"] diff --git a/build.gradle b/build.gradle index ca43bc9..7206234 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ plugins { } jar { - archiveName = "fsbot.jar" + enabled = false } apply plugin: 'io.spring.dependency-management'