Skip to content

Commit 375ae45

Browse files
committed
refactor: make cooldown minutes check into separate method
1 parent dcb241c commit 375ae45

File tree

2 files changed

+28
-24
lines changed

2 files changed

+28
-24
lines changed

application/src/main/java/org/togetherjava/tjbot/features/roleapplication/ApplicationApplyHandler.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,14 @@ public class ApplicationApplyHandler {
3737
/**
3838
* Constructs a new {@code ApplicationApplyHandler} instance.
3939
*
40-
* @param roleApplicationSystemConfig the configuration that contains the details for the application form
41-
* including the cooldown duration and channel pattern.
40+
* @param roleApplicationSystemConfig the configuration that contains the details for the
41+
* application form including the cooldown duration and channel pattern.
4242
*/
4343
public ApplicationApplyHandler(RoleApplicationSystemConfig roleApplicationSystemConfig) {
4444
this.roleApplicationSystemConfig = roleApplicationSystemConfig;
4545
this.applicationChannelPattern =
46-
Pattern.compile(roleApplicationSystemConfig.submissionsChannelPattern()).asMatchPredicate();
46+
Pattern.compile(roleApplicationSystemConfig.submissionsChannelPattern())
47+
.asMatchPredicate();
4748

4849
final Duration applicationSubmitCooldownDuration =
4950
Duration.ofMinutes(roleApplicationSystemConfig.applicationSubmitCooldownMinutes());
@@ -85,8 +86,8 @@ protected void sendApplicationResult(final ModalInteractionEvent event, List<Str
8586
MessageEmbed.Field roleField = new MessageEmbed.Field("Role", roleString, false);
8687
embed.addField(roleField);
8788

88-
MessageEmbed.Field answerField =
89-
new MessageEmbed.Field(roleApplicationSystemConfig.defaultQuestion(), answer, false);
89+
MessageEmbed.Field answerField = new MessageEmbed.Field(
90+
roleApplicationSystemConfig.defaultQuestion(), answer, false);
9091
embed.addField(answerField);
9192

9293
applicationChannel.get().sendMessageEmbeds(embed.build()).queue();
@@ -129,4 +130,14 @@ protected void submitApplicationFromModalInteraction(ModalInteractionEvent event
129130

130131
applicationSubmitCooldown.put(event.getMember(), OffsetDateTime.now());
131132
}
133+
134+
protected long getMemberCooldownMinutes(Member member) {
135+
OffsetDateTime timeSentCache = getApplicationSubmitCooldown().getIfPresent(member);
136+
if (timeSentCache != null) {
137+
Duration duration = Duration.between(timeSentCache, OffsetDateTime.now());
138+
return roleApplicationSystemConfig.applicationSubmitCooldownMinutes()
139+
- duration.toMinutes();
140+
}
141+
return 0L;
142+
}
132143
}

application/src/main/java/org/togetherjava/tjbot/features/roleapplication/ApplicationCreateCommand.java

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@
3232
import javax.annotation.Nullable;
3333

3434
import java.awt.Color;
35-
import java.time.Duration;
36-
import java.time.OffsetDateTime;
3735
import java.util.HashMap;
3836
import java.util.List;
3937
import java.util.Map;
@@ -120,26 +118,20 @@ public void onSlashCommand(SlashCommandInteractionEvent event) {
120118
@Override
121119
public void onStringSelectSelection(StringSelectInteractionEvent event, List<String> args) {
122120
SelectOption selectOption = event.getSelectedOptions().getFirst();
121+
Member member = event.getMember();
123122

124-
if (selectOption == null) {
123+
if (selectOption == null || member == null) {
125124
return;
126125
}
127126

128-
OffsetDateTime timeSentCache = applicationApplyHandler.getApplicationSubmitCooldown()
129-
.getIfPresent(event.getMember());
130-
if (timeSentCache != null) {
131-
Duration duration = Duration.between(timeSentCache, OffsetDateTime.now());
132-
long remainingMinutes =
133-
roleApplicationSystemConfig.applicationSubmitCooldownMinutes() - duration.toMinutes();
134-
135-
if (duration.toMinutes() < roleApplicationSystemConfig.applicationSubmitCooldownMinutes()) {
136-
event
137-
.reply("Please wait %d minutes before sending a new application form."
138-
.formatted(remainingMinutes))
139-
.setEphemeral(true)
140-
.queue();
141-
return;
142-
}
127+
long remainingMinutes = applicationApplyHandler.getMemberCooldownMinutes(member);
128+
if (remainingMinutes > 0) {
129+
event
130+
.reply("Please wait %d minutes before sending a new application form."
131+
.formatted(remainingMinutes))
132+
.setEphemeral(true)
133+
.queue();
134+
return;
143135
}
144136

145137
String questionLabel = roleApplicationSystemConfig.defaultQuestion();
@@ -151,7 +143,8 @@ public void onStringSelectSelection(StringSelectInteractionEvent event, List<Str
151143
.create(generateComponentId(event.getUser().getId()), questionLabel,
152144
TextInputStyle.PARAGRAPH)
153145
.setRequired(true)
154-
.setRequiredRange(roleApplicationSystemConfig.minimumAnswerLength(), roleApplicationSystemConfig.maximumAnswerLength())
146+
.setRequiredRange(roleApplicationSystemConfig.minimumAnswerLength(),
147+
roleApplicationSystemConfig.maximumAnswerLength())
155148
.setPlaceholder("Enter your answer here")
156149
.build();
157150

0 commit comments

Comments
 (0)