Update VacationCommand add 'Abwesenheitsnotiz'

Closes: #144
This commit is contained in:
2025-09-29 08:06:15 +02:00
parent 3685d662fb
commit 524ce0c579
@@ -27,6 +27,7 @@ import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEve
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import net.dv8tion.jda.api.interactions.InteractionHook;
import net.dv8tion.jda.api.interactions.commands.Command;
import net.dv8tion.jda.api.interactions.commands.OptionMapping;
import net.dv8tion.jda.api.interactions.commands.OptionType;
import net.dv8tion.jda.api.interactions.commands.build.OptionData;
import net.dv8tion.jda.api.interactions.commands.build.SubcommandData;
@@ -52,7 +53,8 @@ public class VacationCommand extends ListenerAdapter {
public VacationCommand() {
COMMAND.addSubcommands(new SubcommandData("create", "Erstelle deinen Urlaub")
.addOptions(new OptionData(OptionType.STRING, "from", "Datum (TT.MM.JJJJ)", true),
new OptionData(OptionType.STRING, "to", "Datum (TT.MM.JJJJ)", true)));
new OptionData(OptionType.STRING, "to", "Datum (TT.MM.JJJJ)", true),
new OptionData(OptionType.STRING, "reason", "Abwesenheitsnotiz", false)));
COMMAND.addSubcommands(new SubcommandData("delete", "Lösche deinen Urlaub")
.addOptions(new OptionData(OptionType.STRING, "vacation", "Dein Urlaub", true, true)));
}
@@ -78,6 +80,7 @@ public class VacationCommand extends ListenerAdapter {
InteractionHook interactionHook = event.deferReply(true).complete();
String from = event.getOption("from").getAsString();
String to = event.getOption("to").getAsString();
String reason = event.getOption("reason", "", OptionMapping::getAsString);
LocalDateTime fromDate;
try {
@@ -115,12 +118,19 @@ public class VacationCommand extends ListenerAdapter {
return;
}
if (reason.length() > 1000) {
interactionHook.editOriginal("Die Abwesenheitsnotiz darf nicht länger als 1000 Zeichen sein!").queue();
return;
}
guild.createScheduledEvent(
"Urlaub " + event.getMember().getEffectiveName(),
event.getMember().getId(),
OffsetDateTime.of(fromDate, ZoneId.of("Europe/Berlin").getRules().getOffset(fromDate)),
OffsetDateTime.of(toDate, ZoneId.of("Europe/Berlin").getRules().getOffset(toDate))
).onSuccess(scheduledEvent -> {
)
.setDescription(reason)
.onSuccess(scheduledEvent -> {
interactionHook.editOriginal("Urlaub erstellt!").queue();
})
.onErrorMap(throwable -> {