diff --git a/application/src/main/java/org/togetherjava/tjbot/features/help/HelpThreadCreatedListener.java b/application/src/main/java/org/togetherjava/tjbot/features/help/HelpThreadCreatedListener.java index 8988f305d9..02a959e5e4 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/help/HelpThreadCreatedListener.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/help/HelpThreadCreatedListener.java @@ -60,9 +60,9 @@ public HelpThreadCreatedListener(HelpSystemHelper helper) { @Override public void onMessageReceived(@NotNull MessageReceivedEvent event) { if (event.isFromThread()) { - Channel parentChannel = event.getChannel().asThreadChannel().getParentChannel(); + ThreadChannel threadChannel = event.getChannel().asThreadChannel(); + Channel parentChannel = threadChannel.getParentChannel(); if (helper.isHelpForumName(parentChannel.getName())) { - ThreadChannel threadChannel = event.getChannel().asThreadChannel(); int messageCount = threadChannel.getMessageCount(); if (messageCount > 1 || wasThreadAlreadyHandled(threadChannel.getIdLong())) { return; @@ -84,8 +84,11 @@ private boolean wasThreadAlreadyHandled(long threadChannelId) { private void handleHelpThreadCreated(ThreadChannel threadChannel) { threadChannel.retrieveStartMessage().flatMap(message -> { registerThreadDataInDB(message, threadChannel); - return generateAutomatedResponse(threadChannel); - }).flatMap(message -> pinOriginalQuestion(threadChannel)).queue(); + return sendHelperHeadsUp(threadChannel) + .flatMap(any -> HelpThreadCreatedListener.isContextSufficient(message), + any -> createAIResponse(threadChannel, message)) + .flatMap(any -> pinOriginalQuestion(message)); + }).queue(); } private static User getMentionedAuthorByMessage(Message message) { @@ -96,11 +99,9 @@ private static boolean isPostedBySelfUser(Message message) { return message.getJDA().getSelfUser().equals(message.getAuthor()); } - private RestAction createAIResponse(ThreadChannel threadChannel) { - RestAction originalQuestion = threadChannel.retrieveStartMessage(); - return originalQuestion.flatMap(HelpThreadCreatedListener::isContextSufficient, - message -> helper.constructChatGptAttempt(threadChannel, getMessageContent(message), - componentIdInteractor)); + private RestAction createAIResponse(ThreadChannel threadChannel, Message message) { + return helper.constructChatGptAttempt(threadChannel, getMessageContent(message), + componentIdInteractor); } private static boolean isContextSufficient(Message message) { @@ -108,12 +109,8 @@ private static boolean isContextSufficient(Message message) { && !LinkDetection.containsLink(message.getContentRaw()); } - private RestAction pinOriginalQuestion(ThreadChannel threadChannel) { - return threadChannel.retrieveStartMessage().flatMap(Message::pin); - } - - private RestAction generateAutomatedResponse(ThreadChannel threadChannel) { - return sendHelperHeadsUp(threadChannel).flatMap(any -> createAIResponse(threadChannel)); + private RestAction pinOriginalQuestion(Message message) { + return message.pin(); } private RestAction sendHelperHeadsUp(ThreadChannel threadChannel) {