Skip to content

Commit 694c2b9

Browse files
committed
Use Responses#error where possible in forms commands
1 parent 0a0c877 commit 694c2b9

13 files changed

+52
-45
lines changed

src/main/java/net/discordjug/javabot/systems/staff_commands/forms/FormInteractionManager.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import net.discordjug.javabot.systems.staff_commands.forms.model.FormData;
1818
import net.discordjug.javabot.systems.staff_commands.forms.model.FormField;
1919
import net.discordjug.javabot.util.ExceptionLogger;
20+
import net.discordjug.javabot.util.Responses;
2021
import net.dv8tion.jda.api.EmbedBuilder;
2122
import net.dv8tion.jda.api.components.actionrow.ActionRow;
2223
import net.dv8tion.jda.api.components.actionrow.ActionRowChildComponent;
@@ -101,7 +102,7 @@ public void handleButton(ButtonInteractionEvent event, Button button) {
101102
long formId = Long.parseLong(ComponentIdBuilder.split(button.getCustomId())[1]);
102103
Optional<FormData> formOpt = formsRepo.getForm(formId);
103104
if (!formOpt.isPresent()) {
104-
event.reply(FORM_NOT_FOUND_MSG).setEphemeral(true).queue();
105+
Responses.error(event, FORM_NOT_FOUND_MSG).queue();
105106
return;
106107
}
107108
FormData form = formOpt.get();

src/main/java/net/discordjug/javabot/systems/staff_commands/forms/commands/AttachFormSubcommand.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
import java.util.List;
55
import java.util.Optional;
66
import java.util.Set;
7-
87
import net.discordjug.javabot.data.config.BotConfig;
98
import net.discordjug.javabot.systems.staff_commands.forms.FormInteractionManager;
109
import net.discordjug.javabot.systems.staff_commands.forms.dao.FormsRepository;
1110
import net.discordjug.javabot.systems.staff_commands.forms.model.FormData;
11+
import net.discordjug.javabot.util.Responses;
1212
import net.dv8tion.jda.api.components.Component.Type;
1313
import net.dv8tion.jda.api.components.MessageTopLevelComponentUnion;
1414
import net.dv8tion.jda.api.components.actionrow.ActionRow;
@@ -72,24 +72,22 @@ public AttachFormSubcommand(FormsRepository formsRepo, BotConfig botConfig) {
7272
@Override
7373
public void execute(SlashCommandInteractionEvent event) {
7474
if (!checkForStaffRole(event)) return;
75-
event.deferReply().setEphemeral(true).queue();
7675

7776
Optional<FormData> formOpt = formsRepo.getForm(event.getOption(FORM_ID_FIELD, OptionMapping::getAsLong));
7877
if (formOpt.isEmpty()) {
79-
event.getHook().sendMessage("A form with this ID was not found.").queue();
78+
Responses.error(event, "A form with this ID was not found.").queue();
8079
return;
8180
}
8281
FormData form = formOpt.get();
8382

8483
if (form.getAttachmentInfo().isPresent()) {
85-
event.getHook()
86-
.sendMessage("The form seems to already be attached to a message. Detach it before continuing.")
84+
Responses.error(event, "The form seems to already be attached to a message. Detach it before continuing.")
8785
.queue();
8886
return;
8987
}
9088

9189
if (form.fields().isEmpty()) {
92-
event.getHook().sendMessage("You can't attach a form with no fields.").queue();
90+
Responses.error(event, "You can't attach a form with no fields.").queue();
9391
return;
9492
}
9593

@@ -98,12 +96,12 @@ public void execute(SlashCommandInteractionEvent event) {
9896
OptionMapping::getAsChannel);
9997

10098
if (channel == null) {
101-
event.getHook().sendMessage("A channel with this ID was not found.").setEphemeral(true).queue();
99+
Responses.error(event, "A channel with this ID was not found.").queue();
102100
return;
103101
}
104102

105103
if (!(channel instanceof MessageChannel msgChannel)) {
106-
event.getHook().sendMessage("You must specify a message channel").setEphemeral(true).queue();
104+
Responses.error(event, "You must specify a message channel").queue();
107105
return;
108106
}
109107

@@ -119,10 +117,9 @@ public void execute(SlashCommandInteractionEvent event) {
119117
msgChannel.retrieveMessageById(messageId).queue(message -> {
120118
attachFormToMessage(message, buttonLabel, style, form);
121119
formsRepo.attachForm(form, msgChannel, message);
122-
event.getHook()
123-
.sendMessage("Successfully attached the form to the [message](" + message.getJumpUrl() + ")!")
124-
.queue();
125-
}, _ -> event.getHook().sendMessage("A message with this ID was not found").queue());
120+
event.reply("Successfully attached the form to the [message](" + message.getJumpUrl() + ")!")
121+
.setEphemeral(true).queue();
122+
}, _ -> Responses.error(event, "A message with this ID was not found").queue());
126123
}
127124

128125
@Override

src/main/java/net/discordjug/javabot/systems/staff_commands/forms/commands/CloseFormSubcommand.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import net.discordjug.javabot.systems.staff_commands.forms.FormInteractionManager;
77
import net.discordjug.javabot.systems.staff_commands.forms.dao.FormsRepository;
88
import net.discordjug.javabot.systems.staff_commands.forms.model.FormData;
9+
import net.discordjug.javabot.util.Responses;
910
import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent;
1011
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
1112
import net.dv8tion.jda.api.interactions.AutoCompleteQuery;
@@ -49,13 +50,13 @@ public void execute(SlashCommandInteractionEvent event) {
4950
long id = event.getOption(FORM_ID_FIELD, OptionMapping::getAsLong);
5051
Optional<FormData> formOpt = formsRepo.getForm(id);
5152
if (formOpt.isEmpty()) {
52-
event.reply("A form with this ID was not found.").setEphemeral(true).queue();
53+
Responses.error(event, "A form with this ID was not found.").queue();
5354
return;
5455
}
5556
FormData form = formOpt.get();
5657

5758
if (form.closed()) {
58-
event.reply("This form is already closed").setEphemeral(true).queue();
59+
Responses.error(event, "This form is already closed").queue();
5960
return;
6061
}
6162

src/main/java/net/discordjug/javabot/systems/staff_commands/forms/commands/CreateFormSubcommand.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import net.discordjug.javabot.systems.staff_commands.forms.FormInteractionManager;
99
import net.discordjug.javabot.systems.staff_commands.forms.dao.FormsRepository;
1010
import net.discordjug.javabot.systems.staff_commands.forms.model.FormData;
11+
import net.discordjug.javabot.util.Responses;
1112
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
1213
import net.dv8tion.jda.api.interactions.commands.OptionMapping;
1314
import net.dv8tion.jda.api.interactions.commands.OptionType;
@@ -51,15 +52,15 @@ public CreateFormSubcommand(FormsRepository formsRepo, BotConfig botConfig) {
5152
@Override
5253
public void execute(SlashCommandInteractionEvent event) {
5354
if (!checkForStaffRole(event)) return;
54-
event.deferReply().setEphemeral(true).queue();
5555
Optional<Instant> expirationOpt;
5656
try {
5757
expirationOpt = FormInteractionManager.parseExpiration(event);
5858
} catch (IllegalArgumentException e) {
59-
event.getHook().sendMessage(e.getMessage()).queue();
59+
Responses.error(event, e.getMessage()).queue();
6060
return;
6161
}
6262

63+
event.deferReply().setEphemeral(true).queue();
6364
Instant expiration = expirationOpt.orElse(null);
6465

6566
FormData form = new FormData(0, List.of(), event.getOption(FORM_TITLE_FIELD, OptionMapping::getAsString),

src/main/java/net/discordjug/javabot/systems/staff_commands/forms/commands/DeleteFormSubcommand.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package net.discordjug.javabot.systems.staff_commands.forms.commands;
22

33
import java.util.Optional;
4-
54
import net.discordjug.javabot.data.config.BotConfig;
65
import net.discordjug.javabot.systems.staff_commands.forms.dao.FormsRepository;
76
import net.discordjug.javabot.systems.staff_commands.forms.model.FormData;
7+
import net.discordjug.javabot.util.Responses;
88
import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent;
99
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
1010
import net.dv8tion.jda.api.interactions.AutoCompleteQuery;
@@ -16,8 +16,8 @@
1616

1717
/**
1818
* The `/form delete` command. Deletes an existing form. This command also does
19-
* delete submission records from the database. This command won't work if the form
20-
* is attached to a message, see {@link DetachFormSubcommand}
19+
* delete submission records from the database. This command won't work if the
20+
* form is attached to a message, see {@link DetachFormSubcommand}
2121
*
2222
* @see FormData
2323
*/
@@ -44,22 +44,21 @@ public void execute(SlashCommandInteractionEvent event) {
4444
long id = event.getOption(FORM_ID_FIELD, OptionMapping::getAsLong);
4545
Optional<FormData> formOpt = formsRepo.getForm(id);
4646
if (formOpt.isEmpty()) {
47-
event.reply("A form with this ID was not found.").setEphemeral(true).queue();
47+
Responses.error(event, "A form with this ID was not found.").queue();
4848
return;
4949
}
5050

51-
event.deferReply(true).queue();
5251
FormData form = formOpt.get();
5352

5453
if (form.getAttachmentInfo().isPresent()) {
55-
event.getHook().sendMessage(
54+
Responses.error(event,
5655
"This form is attached to a message. Use `details` subcommand to check the message this form is attached to, or `detach` subcommand to detach the message before deleting.")
5756
.queue();
5857
return;
5958
}
6059

60+
event.deferReply(true).queue();
6161
formsRepo.deleteForm(form);
62-
6362
event.getHook().sendMessage("Form deleted!").queue();
6463
}
6564

src/main/java/net/discordjug/javabot/systems/staff_commands/forms/commands/DetachFormSubcommand.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import net.discordjug.javabot.systems.staff_commands.forms.dao.FormsRepository;
1010
import net.discordjug.javabot.systems.staff_commands.forms.model.FormData;
1111
import net.discordjug.javabot.util.ExceptionLogger;
12+
import net.discordjug.javabot.util.Responses;
1213
import net.dv8tion.jda.api.components.actionrow.ActionRow;
1314
import net.dv8tion.jda.api.components.actionrow.ActionRowChildComponentUnion;
1415
import net.dv8tion.jda.api.components.buttons.Button;
@@ -53,20 +54,20 @@ public DetachFormSubcommand(FormsRepository formsRepo, BotConfig botConfig) {
5354
@Override
5455
public void execute(SlashCommandInteractionEvent event) {
5556
if (!checkForStaffRole(event)) return;
56-
event.deferReply().setEphemeral(true).queue();
5757

5858
Optional<FormData> formOpt = formsRepo.getForm(event.getOption(FORM_ID_FIELD, OptionMapping::getAsLong));
5959
if (formOpt.isEmpty()) {
60-
event.getHook().sendMessage("A form with this ID was not found.").queue();
60+
Responses.error(event, "A form with this ID was not found.").queue();
6161
return;
6262
}
6363
FormData form = formOpt.get();
6464

6565
if (form.getAttachmentInfo().isEmpty()) {
66-
event.getHook().sendMessage("This form doesn't seem to be attached to a message").queue();
66+
Responses.error(event, "This form doesn't seem to be attached to a message").queue();
6767
return;
6868
}
6969

70+
event.deferReply().setEphemeral(true).queue();
7071
detachFromMessage(form, event.getGuild());
7172
formsRepo.detachForm(form);
7273

src/main/java/net/discordjug/javabot/systems/staff_commands/forms/commands/DetailsFormSubcommand.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import net.discordjug.javabot.systems.staff_commands.forms.dao.FormsRepository;
77
import net.discordjug.javabot.systems.staff_commands.forms.model.FormAttachmentInfo;
88
import net.discordjug.javabot.systems.staff_commands.forms.model.FormData;
9+
import net.discordjug.javabot.util.Responses;
910
import net.dv8tion.jda.api.EmbedBuilder;
1011
import net.dv8tion.jda.api.entities.Guild;
1112
import net.dv8tion.jda.api.entities.Message;
@@ -48,13 +49,13 @@ public DetailsFormSubcommand(FormsRepository formsRepo, BotConfig botConfig) {
4849
@Override
4950
public void execute(SlashCommandInteractionEvent event) {
5051
if (!checkForStaffRole(event)) return;
51-
event.deferReply().setEphemeral(false).queue();
5252
Optional<FormData> formOpt = formsRepo.getForm(event.getOption(FORM_ID_FIELD, OptionMapping::getAsLong));
5353
if (formOpt.isEmpty()) {
54-
event.getHook().sendMessage("Couldn't find a form with this id").queue();
54+
Responses.error(event, "Couldn't find a form with this id").queue();
5555
return;
5656
}
5757

58+
event.deferReply().setEphemeral(false).queue();
5859
FormData form = formOpt.get();
5960
EmbedBuilder embedBuilder = createFormDetailsEmbed(form, event.getGuild());
6061
embedBuilder.setAuthor(event.getMember().getEffectiveName(), null, event.getMember().getEffectiveAvatarUrl());
@@ -73,7 +74,7 @@ private EmbedBuilder createFormDetailsEmbed(FormData form, Guild guild) {
7374
long id = form.id();
7475

7576
addCodeblockField(builder, "ID", id, true);
76-
builder.addField("Created at", String.format("<t:%s>", id / 1000L), true);
77+
builder.addField("Created at", String.format("<t:%s>", id / 1000L), true); // TODO i forgot to fix
7778

7879
builder.addField("Expires at",
7980
form.hasExpirationTime() ? TimeFormat.DATE_TIME_LONG.format(form.expiration().toEpochMilli())

src/main/java/net/discordjug/javabot/systems/staff_commands/forms/commands/ModifyFormSubcommand.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import net.discordjug.javabot.systems.staff_commands.forms.dao.FormsRepository;
99
import net.discordjug.javabot.systems.staff_commands.forms.model.FormAttachmentInfo;
1010
import net.discordjug.javabot.systems.staff_commands.forms.model.FormData;
11+
import net.discordjug.javabot.util.Responses;
1112
import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent;
1213
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
1314
import net.dv8tion.jda.api.interactions.AutoCompleteQuery;
@@ -55,12 +56,12 @@ public ModifyFormSubcommand(FormsRepository formsRepo, BotConfig botConfig) {
5556
@Override
5657
public void execute(SlashCommandInteractionEvent event) {
5758
if (!checkForStaffRole(event)) return;
58-
event.deferReply(true).queue();
5959
Optional<FormData> formOpt = formsRepo.getForm(event.getOption(FORM_ID_FIELD, OptionMapping::getAsLong));
6060
if (formOpt.isEmpty()) {
61-
event.getHook().sendMessage("Couldn't find a form with this ID").queue();
61+
Responses.error(event, "Couldn't find a form with this ID").queue();
6262
return;
6363
}
64+
event.deferReply(true).queue();
6465
FormData oldForm = formOpt.get();
6566

6667
String title = event.getOption(FORM_TITLE_FIELD, oldForm.title(), OptionMapping::getAsString);

src/main/java/net/discordjug/javabot/systems/staff_commands/forms/commands/RemoveFieldFormSubcommand.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import net.discordjug.javabot.systems.staff_commands.forms.dao.FormsRepository;
99
import net.discordjug.javabot.systems.staff_commands.forms.model.FormData;
1010
import net.discordjug.javabot.systems.staff_commands.forms.model.FormField;
11+
import net.discordjug.javabot.util.Responses;
1112
import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent;
1213
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
1314
import net.dv8tion.jda.api.interactions.AutoCompleteQuery;
@@ -46,28 +47,28 @@ public RemoveFieldFormSubcommand(FormsRepository formsRepo, BotConfig botConfig)
4647
@Override
4748
public void execute(SlashCommandInteractionEvent event) {
4849
if (!checkForStaffRole(event)) return;
49-
event.deferReply(true).queue();
5050
Optional<FormData> formOpt = formsRepo.getForm(event.getOption(FORM_ID_FIELD, OptionMapping::getAsLong));
5151
int index = event.getOption(FORM_FIELD_INDEX_FIELD, OptionMapping::getAsInt);
5252
if (formOpt.isEmpty()) {
53-
event.getHook().sendMessage("A form with this ID was not found.").queue();
53+
Responses.error(event, "A form with this ID was not found.").queue();
5454
return;
5555
}
5656
FormData form = formOpt.get();
5757

5858
if (form.getAttachmentInfo().isPresent() && form.fields().size() <= 1) {
59-
event.getHook().sendMessage(
59+
Responses.error(event,
6060
"Can't remove the last field from an attached form. Detach the form before removing the field")
6161
.queue();
6262
return;
6363
}
6464

6565
if (!formsRepo.removeField(form, index)) {
66-
event.getHook().sendMessage("A field on this index was not found.").queue();
66+
Responses.error(event, "A field on this index was not found.").queue();
6767
return;
6868
}
6969

70-
event.getHook().sendMessage("Removed field `" + form.fields().get(index).label() + "` from the form.").queue();
70+
event.reply("Removed field `" + form.fields().get(index).label() + "` from the form.")
71+
.setEphemeral(true).queue();
7172
}
7273

7374
@Override

src/main/java/net/discordjug/javabot/systems/staff_commands/forms/commands/ReopenFormSubcommand.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import net.discordjug.javabot.systems.staff_commands.forms.FormInteractionManager;
77
import net.discordjug.javabot.systems.staff_commands.forms.dao.FormsRepository;
88
import net.discordjug.javabot.systems.staff_commands.forms.model.FormData;
9+
import net.discordjug.javabot.util.Responses;
910
import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent;
1011
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
1112
import net.dv8tion.jda.api.interactions.AutoCompleteQuery;
@@ -49,13 +50,13 @@ public void execute(SlashCommandInteractionEvent event) {
4950
long id = event.getOption(FORM_ID_FIELD, OptionMapping::getAsLong);
5051
Optional<FormData> formOpt = formsRepo.getForm(id);
5152
if (formOpt.isEmpty()) {
52-
event.reply("A form with this ID was not found.").setEphemeral(true).queue();
53+
Responses.error(event, "A form with this ID was not found.").queue();
5354
return;
5455
}
5556
FormData form = formOpt.get();
5657

5758
if (!form.closed()) {
58-
event.reply("This form is already opened").setEphemeral(true).queue();
59+
Responses.error(event, "This form is already opened").queue();
5960
return;
6061
}
6162

0 commit comments

Comments
 (0)