diff --git a/src/main/java/org/togetherjava/discordbot/events/free/LastMessageInChannelListener.java b/src/main/java/org/togetherjava/discordbot/events/free/LastMessageInChannelListener.java index 0590212..da3b646 100644 --- a/src/main/java/org/togetherjava/discordbot/events/free/LastMessageInChannelListener.java +++ b/src/main/java/org/togetherjava/discordbot/events/free/LastMessageInChannelListener.java @@ -8,6 +8,7 @@ import java.util.concurrent.ConcurrentHashMap; import javax.annotation.Nonnull; import net.dv8tion.jda.api.JDA; +import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; @@ -25,7 +26,11 @@ public LastMessageInChannelListener(JDA jda) { // Prime cache jda.getGuilds() .stream() - .flatMap(guild -> guild.getTextChannels().stream()) + // Only return channels we are allowed to monitor (exclude moderator channels and so on) + .flatMap(guild -> guild.getTextChannels() + .stream() + .filter(chan -> guild.getSelfMember().hasPermission(chan, Permission.MESSAGE_HISTORY)) + ) .forEach(it -> it.getIterableHistory().limit(1).queue(messages -> { if (!messages.isEmpty()) { Message message = messages.get(0);