|
4 | 4 | import net.discordjug.javabot.data.config.guild.MessageCacheConfig; |
5 | 5 | import net.discordjug.javabot.data.h2db.message_cache.model.CachedMessage; |
6 | 6 | 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; |
7 | 9 | import net.dv8tion.jda.api.events.message.MessageDeleteEvent; |
8 | 10 | import net.dv8tion.jda.api.events.message.MessageReceivedEvent; |
9 | 11 | import net.dv8tion.jda.api.events.message.MessageUpdateEvent; |
@@ -39,25 +41,35 @@ public void onMessageUpdate(@NotNull MessageUpdateEvent event) { |
39 | 41 | CachedMessage before; |
40 | 42 | if (optional.isPresent()) { |
41 | 43 | CachedMessage inCache= optional.get(); |
42 | | - before = new CachedMessage(inCache.getMessageId(), inCache.getAuthorId(), inCache.getMessageContent(), inCache.getAttachments()); |
| 44 | + before = new CachedMessage(inCache.getMessageId(), inCache.getAuthorId(), inCache.getChannelId(),inCache.getMessageContent(), inCache.getAttachments()); |
43 | 45 | inCache.init(event.getMessage()); |
44 | 46 | } else { |
45 | | - before = new CachedMessage(event.getMessageIdLong(), event.getAuthor().getIdLong(), "[unknown content]", List.of()); |
| 47 | + before = new CachedMessage(event.getMessageIdLong(), event.getAuthor().getIdLong(), event.getChannel().getIdLong(),"[unknown content]", List.of()); |
46 | 48 | messageCache.cache(event.getMessage()); |
47 | 49 | } |
48 | 50 | messageCache.sendUpdatedMessageToLog(event.getMessage(), before); |
49 | 51 | } |
50 | 52 |
|
51 | 53 | @Override |
52 | 54 | 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(); |
54 | 67 | optional.ifPresent(message -> { |
55 | | - messageCache.sendDeletedMessageToLog(event.getGuild(), event.getChannel(), message); |
| 68 | + messageCache.sendDeletedMessageToLog(channel.getGuild(), channel, message); |
56 | 69 | messageCache.cache.remove(message); |
57 | 70 | }); |
58 | 71 | } |
59 | 72 |
|
60 | | - |
61 | 73 | /** |
62 | 74 | * Checks whether the given message should be ignored by the cache. |
63 | 75 | * <p> |
|
0 commit comments