Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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 -> {
Expand Down Expand Up @@ -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())
Expand Down Expand Up @@ -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());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -50,14 +52,24 @@ public void onMessageUpdate(@NotNull MessageUpdateEvent event) {

@Override
public void onMessageDelete(@NotNull MessageDeleteEvent event) {
Optional<CachedMessage> 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<CachedMessage> 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.
* <p>
Expand Down