Skip to content

Commit d3a19aa

Browse files
authored
Refactor help thread creation workflow (#1112)
Thread creation flow is more clear and optimized by removing unnecessary calls to discord API
1 parent 10718cb commit d3a19aa

File tree

1 file changed

+12
-15
lines changed

1 file changed

+12
-15
lines changed

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

+12-15
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ public HelpThreadCreatedListener(HelpSystemHelper helper) {
6060
@Override
6161
public void onMessageReceived(@NotNull MessageReceivedEvent event) {
6262
if (event.isFromThread()) {
63-
Channel parentChannel = event.getChannel().asThreadChannel().getParentChannel();
63+
ThreadChannel threadChannel = event.getChannel().asThreadChannel();
64+
Channel parentChannel = threadChannel.getParentChannel();
6465
if (helper.isHelpForumName(parentChannel.getName())) {
65-
ThreadChannel threadChannel = event.getChannel().asThreadChannel();
6666
int messageCount = threadChannel.getMessageCount();
6767
if (messageCount > 1 || wasThreadAlreadyHandled(threadChannel.getIdLong())) {
6868
return;
@@ -84,8 +84,11 @@ private boolean wasThreadAlreadyHandled(long threadChannelId) {
8484
private void handleHelpThreadCreated(ThreadChannel threadChannel) {
8585
threadChannel.retrieveStartMessage().flatMap(message -> {
8686
registerThreadDataInDB(message, threadChannel);
87-
return generateAutomatedResponse(threadChannel);
88-
}).flatMap(message -> pinOriginalQuestion(threadChannel)).queue();
87+
return sendHelperHeadsUp(threadChannel)
88+
.flatMap(any -> HelpThreadCreatedListener.isContextSufficient(message),
89+
any -> createAIResponse(threadChannel, message))
90+
.flatMap(any -> pinOriginalQuestion(message));
91+
}).queue();
8992
}
9093

9194
private static User getMentionedAuthorByMessage(Message message) {
@@ -96,24 +99,18 @@ private static boolean isPostedBySelfUser(Message message) {
9699
return message.getJDA().getSelfUser().equals(message.getAuthor());
97100
}
98101

99-
private RestAction<Message> createAIResponse(ThreadChannel threadChannel) {
100-
RestAction<Message> originalQuestion = threadChannel.retrieveStartMessage();
101-
return originalQuestion.flatMap(HelpThreadCreatedListener::isContextSufficient,
102-
message -> helper.constructChatGptAttempt(threadChannel, getMessageContent(message),
103-
componentIdInteractor));
102+
private RestAction<Message> createAIResponse(ThreadChannel threadChannel, Message message) {
103+
return helper.constructChatGptAttempt(threadChannel, getMessageContent(message),
104+
componentIdInteractor);
104105
}
105106

106107
private static boolean isContextSufficient(Message message) {
107108
return !MessageUtils.containsImage(message)
108109
&& !LinkDetection.containsLink(message.getContentRaw());
109110
}
110111

111-
private RestAction<Void> pinOriginalQuestion(ThreadChannel threadChannel) {
112-
return threadChannel.retrieveStartMessage().flatMap(Message::pin);
113-
}
114-
115-
private RestAction<Message> generateAutomatedResponse(ThreadChannel threadChannel) {
116-
return sendHelperHeadsUp(threadChannel).flatMap(any -> createAIResponse(threadChannel));
112+
private RestAction<Void> pinOriginalQuestion(Message message) {
113+
return message.pin();
117114
}
118115

119116
private RestAction<Message> sendHelperHeadsUp(ThreadChannel threadChannel) {

0 commit comments

Comments
 (0)