|
1 | 1 | package org.togetherjava.tjbot.features.help;
|
2 | 2 |
|
| 3 | +import net.dv8tion.jda.api.JDA; |
3 | 4 | import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel;
|
4 | 5 | import net.dv8tion.jda.api.entities.channel.forums.ForumTag;
|
5 | 6 | import net.dv8tion.jda.api.events.channel.update.ChannelUpdateAppliedTagsEvent;
|
@@ -75,27 +76,39 @@ private void handleThreadStatus(ThreadChannel threadChannel) {
|
75 | 76 | boolean isArchived = threadChannel.isArchived();
|
76 | 77 |
|
77 | 78 | if (isArchived) {
|
78 |
| - handleArchiveStatus(closedAt, threadChannel); |
| 79 | + handleArchiveStatus(closedAt, threadId, threadChannel.getJDA()); |
79 | 80 | return;
|
80 | 81 | }
|
81 | 82 |
|
82 | 83 | updateThreadStatusToActive(threadId);
|
83 | 84 | }
|
84 | 85 |
|
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 | + |
86 | 98 | long threadId = threadChannel.getIdLong();
|
87 | 99 | int messageCount = threadChannel.getMessageCount();
|
88 | 100 | int participantsExceptAuthor = threadChannel.getMemberCount() - 1;
|
89 | 101 |
|
90 | 102 | 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()); |
97 | 109 |
|
98 | 110 | logger.info("Thread with id: {}, updated to archived status in database", threadId);
|
| 111 | + |
99 | 112 | }
|
100 | 113 |
|
101 | 114 | private void updateThreadStatusToActive(long threadId) {
|
|
0 commit comments