Skip to content

Commit 9441ed6

Browse files
committed
Add thread link if submission thread exists already
1 parent 94b36d6 commit 9441ed6

File tree

1 file changed

+17
-8
lines changed

1 file changed

+17
-8
lines changed

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

Lines changed: 17 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,21 @@ 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 a submission thread: " + existingSubmissionThread.get().getJumpUrl()))
189+
.orElse(new CreateSubmissionResult(true, ""));
183190
}
191+
192+
record CreateSubmissionResult(boolean canCreateSubmissions, String errorMessage) {}
184193

185194
/**
186195
* Accepts a submission.

0 commit comments

Comments
 (0)