@@ -125,15 +125,20 @@ private static boolean shouldBeArchived(MessageChannel channel, Instant archiveA
125
125
}
126
126
127
127
private void handleArchiveFlow (ThreadChannel threadChannel , MessageEmbed embed ) {
128
+ helper .getAuthorByHelpThreadId (threadChannel .getIdLong ())
129
+ .ifPresentOrElse (authorId -> triggerArchiveFlow (threadChannel , authorId , embed ),
130
+ () -> triggerAuthorIdNotFoundArchiveFlow (threadChannel , embed ));
131
+ }
132
+
133
+ private void triggerArchiveFlow (ThreadChannel threadChannel , long authorId ,
134
+ MessageEmbed embed ) {
128
135
129
136
Function <Member , RestAction <Message >> sendEmbedWithMention =
130
137
member -> threadChannel .sendMessage (member .getAsMention ()).addEmbeds (embed );
131
138
132
139
Supplier <RestAction <Message >> sendEmbedWithoutMention =
133
140
() -> threadChannel .sendMessageEmbeds (embed );
134
141
135
- long authorId = helper .getAuthorByHelpThreadId (threadChannel .getIdLong ()).orElseThrow ();
136
-
137
142
threadChannel .getGuild ()
138
143
.retrieveMemberById (authorId )
139
144
.mapToResult ()
@@ -151,4 +156,15 @@ private void handleArchiveFlow(ThreadChannel threadChannel, MessageEmbed embed)
151
156
.flatMap (any -> threadChannel .getManager ().setArchived (true ))
152
157
.queue ();
153
158
}
159
+
160
+ private void triggerAuthorIdNotFoundArchiveFlow (ThreadChannel threadChannel ,
161
+ MessageEmbed embed ) {
162
+
163
+ logger .info (
164
+ "Was unable to find a matching thread for id: {} in DB, archiving thread without mentioning OP" ,
165
+ threadChannel .getId ());
166
+ threadChannel .sendMessageEmbeds (embed )
167
+ .flatMap (sentEmbed -> threadChannel .getManager ().setArchived (true ))
168
+ .queue ();
169
+ }
154
170
}
0 commit comments