Skip to content

Commit f2623e8

Browse files
committed
handle thread channel no longer exists
1 parent f49d430 commit f2623e8

File tree

2 files changed

+22
-17
lines changed

2 files changed

+22
-17
lines changed

application/src/main/java/org/togetherjava/tjbot/features/help/HelpThreadLifecycleListener.java

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.togetherjava.tjbot.features.help;
22

3+
import net.dv8tion.jda.api.JDA;
34
import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel;
45
import net.dv8tion.jda.api.entities.channel.forums.ForumTag;
56
import net.dv8tion.jda.api.events.channel.update.ChannelUpdateAppliedTagsEvent;
@@ -75,27 +76,39 @@ private void handleThreadStatus(ThreadChannel threadChannel) {
7576
boolean isArchived = threadChannel.isArchived();
7677

7778
if (isArchived) {
78-
handleArchiveStatus(closedAt, threadChannel);
79+
handleArchiveStatus(closedAt, threadId, threadChannel.getJDA());
7980
return;
8081
}
8182

8283
updateThreadStatusToActive(threadId);
8384
}
8485

85-
void handleArchiveStatus(Instant closedAt, ThreadChannel threadChannel) {
86+
void handleArchiveStatus(Instant closedAt, long id, JDA jda) {
87+
ThreadChannel threadChannel = jda.getThreadChannelById(id);
88+
if (threadChannel == null) {
89+
logger.info("thread with id: {} no longer exists, marking archived in records", id);
90+
database.write(context -> context.update(HELP_THREADS)
91+
.set(HELP_THREADS.CLOSED_AT, closedAt)
92+
.set(HELP_THREADS.TICKET_STATUS, HelpSystemHelper.TicketStatus.ARCHIVED.val)
93+
.where(HELP_THREADS.CHANNEL_ID.eq(id))
94+
.execute());
95+
return;
96+
}
97+
8698
long threadId = threadChannel.getIdLong();
8799
int messageCount = threadChannel.getMessageCount();
88100
int participantsExceptAuthor = threadChannel.getMemberCount() - 1;
89101

90102
database.write(context -> context.update(HELP_THREADS)
91-
.set(HELP_THREADS.CLOSED_AT, closedAt)
92-
.set(HELP_THREADS.TICKET_STATUS, HelpSystemHelper.TicketStatus.ARCHIVED.val)
93-
.set(HELP_THREADS.MESSAGE_COUNT, messageCount)
94-
.set(HELP_THREADS.PARTICIPANTS, participantsExceptAuthor)
95-
.where(HELP_THREADS.CHANNEL_ID.eq(threadId))
96-
.execute());
103+
.set(HELP_THREADS.CLOSED_AT, closedAt)
104+
.set(HELP_THREADS.TICKET_STATUS, HelpSystemHelper.TicketStatus.ARCHIVED.val)
105+
.set(HELP_THREADS.MESSAGE_COUNT, messageCount)
106+
.set(HELP_THREADS.PARTICIPANTS, participantsExceptAuthor)
107+
.where(HELP_THREADS.CHANNEL_ID.eq(threadId))
108+
.execute());
97109

98110
logger.info("Thread with id: {}, updated to archived status in database", threadId);
111+
99112
}
100113

101114
private void updateThreadStatusToActive(long threadId) {

application/src/main/java/org/togetherjava/tjbot/features/help/MarkHelpThreadCloseInDBRoutine.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,6 @@ private void updateTicketStatus(JDA jda) {
5959
.map(HelpThreadsRecord::getChannelId)
6060
.toList());
6161

62-
63-
threadIdsToClose.forEach(id -> {
64-
try {
65-
ThreadChannel threadChannel = jda.getThreadChannelById(id);
66-
helpThreadLifecycleListener.handleArchiveStatus(now, threadChannel);
67-
} catch (Exception exception) {
68-
logger.warn("unable to mark thread as close with id :{}", id, exception);
69-
}
70-
});
62+
threadIdsToClose.forEach(id -> helpThreadLifecycleListener.handleArchiveStatus(now, id, jda));
7163
}
7264
}

0 commit comments

Comments
 (0)