From b9207ffb0c457b6e43f273ef99c97e9fb8e3310c Mon Sep 17 00:00:00 2001 From: ChomeNS <95471003+ChomeNS@users.noreply.github.com> Date: Fri, 11 Apr 2025 18:27:37 +0700 Subject: [PATCH] feat: log discord messages to logger (very simple, just contents ONLY) --- build-number.txt | 2 +- .../chomens_bot/discord/MessageLogger.java | 55 +++++++++++++++++++ .../chomens_bot/plugins/DiscordPlugin.java | 2 + 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 src/main/java/me/chayapak1/chomens_bot/discord/MessageLogger.java diff --git a/build-number.txt b/build-number.txt index 3215a975..7488bc05 100644 --- a/build-number.txt +++ b/build-number.txt @@ -1 +1 @@ -2653 \ No newline at end of file +2659 \ No newline at end of file diff --git a/src/main/java/me/chayapak1/chomens_bot/discord/MessageLogger.java b/src/main/java/me/chayapak1/chomens_bot/discord/MessageLogger.java new file mode 100644 index 00000000..02cf36eb --- /dev/null +++ b/src/main/java/me/chayapak1/chomens_bot/discord/MessageLogger.java @@ -0,0 +1,55 @@ +package me.chayapak1.chomens_bot.discord; + +import me.chayapak1.chomens_bot.data.logging.LogType; +import me.chayapak1.chomens_bot.util.LoggerUtilities; +import net.dv8tion.jda.api.JDA; +import net.dv8tion.jda.api.entities.Message; +import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; +import net.dv8tion.jda.api.hooks.ListenerAdapter; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import org.jetbrains.annotations.NotNull; + +public class MessageLogger extends ListenerAdapter { + private final JDA jda; + + public MessageLogger (final JDA jda) { + this.jda = jda; + + jda.addEventListener(this); + } + + @Override + public void onMessageReceived (@NotNull final MessageReceivedEvent event) { + final User author = event.getAuthor(); + + if (author.getId().equals(jda.getSelfUser().getId())) return; + + final Message message = event.getMessage(); + + final String source = event.isFromGuild() + ? String.format( + "%s - %s (%s)", + event.getGuild().getName(), + event.getGuildChannel().getName(), + event.getGuildChannel().getId() + ) + : event.getChannelType().name(); + + // very simple, just the contents, no reply, forward, attachment, embeds, nothing but the raw contents + final Component component = Component + .translatable( + "[%s] %s › %s", + Component.text(source, NamedTextColor.GRAY), + Component.text(author.getName(), NamedTextColor.RED), + Component.text(message.getContentRaw(), NamedTextColor.GRAY) + ) + .color(NamedTextColor.DARK_GRAY); + + LoggerUtilities.log( + LogType.DISCORD, + component + ); + } +} diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/DiscordPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/DiscordPlugin.java index f4a1bce0..019617a7 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/DiscordPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/DiscordPlugin.java @@ -5,6 +5,7 @@ import me.chayapak1.chomens_bot.Configuration; import me.chayapak1.chomens_bot.Main; import me.chayapak1.chomens_bot.discord.DirectMessageEventHandler; import me.chayapak1.chomens_bot.discord.GuildMessageEventHandler; +import me.chayapak1.chomens_bot.discord.MessageLogger; import me.chayapak1.chomens_bot.util.CodeBlockUtilities; import me.chayapak1.chomens_bot.util.ComponentUtilities; import me.chayapak1.chomens_bot.util.LoggerUtilities; @@ -74,6 +75,7 @@ public class DiscordPlugin { new GuildMessageEventHandler(jda, prefix, messagePrefix); new DirectMessageEventHandler(jda, options); + new MessageLogger(jda); Main.EXECUTOR.scheduleAtFixedRate(this::onDiscordTick, 0, 50, TimeUnit.MILLISECONDS);