feat: log discord messages to logger (very simple, just contents ONLY)

This commit is contained in:
ChomeNS
2025-04-11 18:27:37 +07:00
parent a5602d1a01
commit b9207ffb0c
3 changed files with 58 additions and 1 deletions

View File

@@ -1 +1 @@
2653
2659

View File

@@ -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
);
}
}

View File

@@ -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);