From 4e9e0962d8918e1025e9dfdd8b3ad59a311d9f99 Mon Sep 17 00:00:00 2001 From: danthe1st Date: Sat, 11 Jul 2026 17:21:40 +0200 Subject: [PATCH 1/2] log thread/forum post deletions --- .../data/h2db/message_cache/MessageCache.java | 7 ++++--- .../message_cache/MessageCacheListener.java | 19 ++++++++++++++++--- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCache.java b/src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCache.java index e729b7a1e..401f7adab 100644 --- a/src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCache.java +++ b/src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCache.java @@ -16,6 +16,7 @@ import net.dv8tion.jda.api.components.buttons.Button; import net.dv8tion.jda.api.entities.*; import net.dv8tion.jda.api.entities.Message.Attachment; +import net.dv8tion.jda.api.entities.channel.Channel; import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; import net.dv8tion.jda.api.requests.restaction.MessageCreateAction; import net.dv8tion.jda.api.utils.FileUpload; @@ -146,7 +147,7 @@ public void sendUpdatedMessageToLog(Message updated, CachedMessage before) { * @param channel The message's {@link MessageChannel}. * @param message The {@link CachedMessage}. */ - public void sendDeletedMessageToLog(Guild guild, MessageChannel channel, CachedMessage message) { + public void sendDeletedMessageToLog(Guild guild, Channel channel, CachedMessage message) { MessageCacheConfig config = botConfig.get(guild).getMessageCacheConfig(); if (config.getMessageCacheLogChannel() == null) return; guild.getJDA().retrieveUserById(message.getAuthorId()).queue(author -> { @@ -196,7 +197,7 @@ private void requestMessageAttachments(CachedMessage message) { * @param contentFieldName the name of the field containing the message content in the embed. * @return an {@link EmbedBuilder} with information about the message. */ - public EmbedBuilder buildMessageCacheEmbed(MessageChannel channel, User author, CachedMessage message, String contentFieldName) { + public EmbedBuilder buildMessageCacheEmbed(Channel channel, User author, CachedMessage message, String contentFieldName) { long epoch = IdCalculatorCommand.getTimestampFromId(message.getMessageId()) / 1000; return new EmbedBuilder() .setAuthor(UserUtils.getUserTag(author), null, author.getEffectiveAvatarUrl()) @@ -233,7 +234,7 @@ private MessageEmbed buildMessageEditEmbed(User author, MessageChannel channel, .build(); } - private MessageEmbed buildMessageDeleteEmbed(User author, MessageChannel channel, CachedMessage message) { + private MessageEmbed buildMessageDeleteEmbed(User author, Channel channel, CachedMessage message) { EmbedBuilder eb = buildMessageCacheEmbed(channel, author, message, "Message Content") .setTitle("Message Deleted") .setColor(Responses.Type.ERROR.getColor()); diff --git a/src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCacheListener.java b/src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCacheListener.java index 061f1c5be..2dae34880 100644 --- a/src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCacheListener.java +++ b/src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCacheListener.java @@ -4,6 +4,8 @@ import net.discordjug.javabot.data.config.guild.MessageCacheConfig; import net.discordjug.javabot.data.h2db.message_cache.model.CachedMessage; import net.dv8tion.jda.api.entities.Message; +import net.dv8tion.jda.api.entities.channel.middleman.GuildChannel; +import net.dv8tion.jda.api.events.channel.ChannelDeleteEvent; import net.dv8tion.jda.api.events.message.MessageDeleteEvent; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.events.message.MessageUpdateEvent; @@ -50,13 +52,24 @@ public void onMessageUpdate(@NotNull MessageUpdateEvent event) { @Override public void onMessageDelete(@NotNull MessageDeleteEvent event) { - Optional optional = messageCache.cache.stream().filter(m -> m.getMessageId() == event.getMessageIdLong()).findFirst(); + processMessageDeletion(event.getMessageIdLong(), event.getGuildChannel()); + } + + @Override + public void onChannelDelete(ChannelDeleteEvent event) { + if (event.getChannelType().isThread()) { + processMessageDeletion(event.getChannel().getIdLong(), event.getChannel().asThreadChannel().getParentChannel()); + } + } + + private void processMessageDeletion(long messageId, GuildChannel channel) { + Optional optional = messageCache.cache.stream().filter(m -> m.getMessageId() == messageId).findFirst(); optional.ifPresent(message -> { - messageCache.sendDeletedMessageToLog(event.getGuild(), event.getChannel(), message); + messageCache.sendDeletedMessageToLog(channel.getGuild(), channel, message); messageCache.cache.remove(message); }); } - + /** * Checks whether the given message should be ignored by the cache. From 26c0028e74613a69021ca535dbe257d3f96e870a Mon Sep 17 00:00:00 2001 From: danthe1st Date: Sat, 11 Jul 2026 18:02:18 +0200 Subject: [PATCH 2/2] remove unnecessary line --- .../javabot/data/h2db/message_cache/MessageCacheListener.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCacheListener.java b/src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCacheListener.java index 2dae34880..838f9533f 100644 --- a/src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCacheListener.java +++ b/src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCacheListener.java @@ -69,7 +69,6 @@ private void processMessageDeletion(long messageId, GuildChannel channel) { messageCache.cache.remove(message); }); } - /** * Checks whether the given message should be ignored by the cache.