Skip to content

Commit fd5403c

Browse files
authored
Merge pull request #515 from danthe1st/fix-create-submission-errors
Add thread link if submission thread exists already
2 parents 94b36d6 + f6490f8 commit fd5403c

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

src/main/java/net/discordjug/javabot/systems/qotw/submissions/SubmissionManager.java

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,9 @@ public class SubmissionManager {
6969
public WebhookMessageCreateAction<?> handleSubmission(@NotNull ButtonInteractionEvent event, int questionNumber) {
7070
event.deferEdit().queue();
7171
Member member = event.getMember();
72-
if (!canCreateSubmissions(member)) {
73-
return Responses.warning(event.getHook(), "You're not eligible to create a new submission thread.");
72+
CreateSubmissionResult createSubmissionCheckResult = canCreateSubmissions(member);
73+
if (!createSubmissionCheckResult.canCreateSubmissions()) {
74+
return Responses.warning(event.getHook(), "You're not eligible to create a new submission thread because " + createSubmissionCheckResult.errorMessage());
7475
}
7576
config.getSubmissionChannel().createThreadChannel(
7677
String.format(THREAD_NAME, questionNumber, member.getId()), true).queue(
@@ -174,13 +175,20 @@ public void handleThreadDeletion(@NotNull ButtonInteractionEvent event) {
174175
});
175176
}
176177

177-
private boolean canCreateSubmissions(Member member) {
178-
if (member == null) return false;
179-
if (member.getUser().isBot() || member.getUser().isSystem()) return false;
180-
if (member.isTimedOut() || member.isPending()) return false;
181-
return config.getSubmissionChannel().getThreadChannels()
182-
.stream().noneMatch(p -> p.getName().contains(member.getId()));
178+
private CreateSubmissionResult canCreateSubmissions(Member member) {
179+
if (member == null) return new CreateSubmissionResult(false, "your user cannot be found in this server - please try again later or contact staff members.");
180+
if (member.getUser().isBot() || member.getUser().isSystem()) return new CreateSubmissionResult(false, "your account seems to be marked as a bot.");
181+
if (member.isTimedOut() || member.isPending()) return new CreateSubmissionResult(false, "you are timed out or have not accepted the rules");
182+
183+
Optional<ThreadChannel> existingSubmissionThread = config.getSubmissionChannel().getThreadChannels()
184+
.stream().filter(p -> p.getName().contains(member.getId())).findAny();
185+
186+
return existingSubmissionThread
187+
.map(thread -> new CreateSubmissionResult(false,
188+
"you already have one: " + existingSubmissionThread.get().getJumpUrl()))
189+
.orElse(new CreateSubmissionResult(true, ""));
183190
}
191+
184192

185193
/**
186194
* Accepts a submission.
@@ -292,4 +300,6 @@ private CompletableFuture<List<Message>> getMessagesByUser(@NotNull ThreadChanne
292300
.setTimestamp(Instant.now())
293301
.build();
294302
}
303+
304+
private record CreateSubmissionResult(boolean canCreateSubmissions, String errorMessage) {}
295305
}

0 commit comments

Comments
 (0)