Skip to content

Commit 4e9e096

Browse files
committed
log thread/forum post deletions
1 parent cf9421d commit 4e9e096

2 files changed

Lines changed: 20 additions & 6 deletions

File tree

src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCache.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import net.dv8tion.jda.api.components.buttons.Button;
1717
import net.dv8tion.jda.api.entities.*;
1818
import net.dv8tion.jda.api.entities.Message.Attachment;
19+
import net.dv8tion.jda.api.entities.channel.Channel;
1920
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
2021
import net.dv8tion.jda.api.requests.restaction.MessageCreateAction;
2122
import net.dv8tion.jda.api.utils.FileUpload;
@@ -146,7 +147,7 @@ public void sendUpdatedMessageToLog(Message updated, CachedMessage before) {
146147
* @param channel The message's {@link MessageChannel}.
147148
* @param message The {@link CachedMessage}.
148149
*/
149-
public void sendDeletedMessageToLog(Guild guild, MessageChannel channel, CachedMessage message) {
150+
public void sendDeletedMessageToLog(Guild guild, Channel channel, CachedMessage message) {
150151
MessageCacheConfig config = botConfig.get(guild).getMessageCacheConfig();
151152
if (config.getMessageCacheLogChannel() == null) return;
152153
guild.getJDA().retrieveUserById(message.getAuthorId()).queue(author -> {
@@ -196,7 +197,7 @@ private void requestMessageAttachments(CachedMessage message) {
196197
* @param contentFieldName the name of the field containing the message content in the embed.
197198
* @return an {@link EmbedBuilder} with information about the message.
198199
*/
199-
public EmbedBuilder buildMessageCacheEmbed(MessageChannel channel, User author, CachedMessage message, String contentFieldName) {
200+
public EmbedBuilder buildMessageCacheEmbed(Channel channel, User author, CachedMessage message, String contentFieldName) {
200201
long epoch = IdCalculatorCommand.getTimestampFromId(message.getMessageId()) / 1000;
201202
return new EmbedBuilder()
202203
.setAuthor(UserUtils.getUserTag(author), null, author.getEffectiveAvatarUrl())
@@ -233,7 +234,7 @@ private MessageEmbed buildMessageEditEmbed(User author, MessageChannel channel,
233234
.build();
234235
}
235236

236-
private MessageEmbed buildMessageDeleteEmbed(User author, MessageChannel channel, CachedMessage message) {
237+
private MessageEmbed buildMessageDeleteEmbed(User author, Channel channel, CachedMessage message) {
237238
EmbedBuilder eb = buildMessageCacheEmbed(channel, author, message, "Message Content")
238239
.setTitle("Message Deleted")
239240
.setColor(Responses.Type.ERROR.getColor());

src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCacheListener.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import net.discordjug.javabot.data.config.guild.MessageCacheConfig;
55
import net.discordjug.javabot.data.h2db.message_cache.model.CachedMessage;
66
import net.dv8tion.jda.api.entities.Message;
7+
import net.dv8tion.jda.api.entities.channel.middleman.GuildChannel;
8+
import net.dv8tion.jda.api.events.channel.ChannelDeleteEvent;
79
import net.dv8tion.jda.api.events.message.MessageDeleteEvent;
810
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
911
import net.dv8tion.jda.api.events.message.MessageUpdateEvent;
@@ -50,13 +52,24 @@ public void onMessageUpdate(@NotNull MessageUpdateEvent event) {
5052

5153
@Override
5254
public void onMessageDelete(@NotNull MessageDeleteEvent event) {
53-
Optional<CachedMessage> optional = messageCache.cache.stream().filter(m -> m.getMessageId() == event.getMessageIdLong()).findFirst();
55+
processMessageDeletion(event.getMessageIdLong(), event.getGuildChannel());
56+
}
57+
58+
@Override
59+
public void onChannelDelete(ChannelDeleteEvent event) {
60+
if (event.getChannelType().isThread()) {
61+
processMessageDeletion(event.getChannel().getIdLong(), event.getChannel().asThreadChannel().getParentChannel());
62+
}
63+
}
64+
65+
private void processMessageDeletion(long messageId, GuildChannel channel) {
66+
Optional<CachedMessage> optional = messageCache.cache.stream().filter(m -> m.getMessageId() == messageId).findFirst();
5467
optional.ifPresent(message -> {
55-
messageCache.sendDeletedMessageToLog(event.getGuild(), event.getChannel(), message);
68+
messageCache.sendDeletedMessageToLog(channel.getGuild(), channel, message);
5669
messageCache.cache.remove(message);
5770
});
5871
}
59-
72+
6073

6174
/**
6275
* Checks whether the given message should be ignored by the cache.

0 commit comments

Comments
 (0)