Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -126,13 +126,12 @@ public void onMessageContext(MessageContextInteractionEvent event) {

@Override
public void onModalSubmitted(ModalInteractionEvent event, List<String> args) {
event.deferEdit().queue();
event.deferReply(true).queue();

String authorId = args.get(0);
String messageId = args.get(1);
String channelId = args.get(2);
ForumChannel helperForum = getHelperForum(event.getJDA());
TextChannel sourceChannel = event.getChannel().asTextChannel();

// Has been handled if original message was deleted by now.
// Deleted messages cause retrieveMessageById to fail.
Expand All @@ -142,7 +141,7 @@ public void onModalSubmitted(ModalInteractionEvent event, List<String> args) {
Consumer<Throwable> handledAction = failure -> {
if (failure instanceof ErrorResponseException errorResponseException
&& errorResponseException.getErrorResponse() == ErrorResponse.UNKNOWN_MESSAGE) {
alreadyHandled(sourceChannel, helperForum);
alreadyHandled(event, helperForum);
return;
}
logger.warn("Unknown error occurred on modal submission during question transfer.",
Expand All @@ -154,20 +153,22 @@ public void onModalSubmitted(ModalInteractionEvent event, List<String> args) {

private void transferFlow(ModalInteractionEvent event, String channelId, String authorId,
String messageId) {

event.getJDA()
.retrieveUserById(authorId)
.flatMap(fetchedUser -> createForumPost(event, fetchedUser))
.flatMap(createdforumPost -> dmUser(event.getChannel(), createdforumPost,
event.getGuild()))
.flatMap(dmSent -> deleteOriginalMessage(event.getJDA(), channelId, messageId))
.queue();

event.getHook().sendMessage("Transferred 👍").queue();
}

private void alreadyHandled(TextChannel sourceChannel, ForumChannel helperForum) {
sourceChannel.sendMessage(
"It appears that someone else has already transferred this question. Kindly see %s for details."
.formatted(helperForum.getAsMention()))
private void alreadyHandled(ModalInteractionEvent event, ForumChannel helperForum) {
event.getHook()
.sendMessage(
"It appears that someone else has already transferred this question. Kindly see %s for details."
.formatted(helperForum.getAsMention()))
.queue();
}

Expand Down