From 8fbb2c2dd1c2a9f3f49249e5a5f61142f839be26 Mon Sep 17 00:00:00 2001 From: Budbomber Date: Thu, 13 Jan 2022 20:12:53 +0000 Subject: [PATCH 01/26] Added: MAX_AGE_DURATION - This converts seconds to days (7) Being maximum. Added: .setRequiredRange(1, TimeUnit.DAYS.toSeconds(MAX_AGE_DURATION))); sets required range between 1 and 7 days. --- .../tjbot/commands/basic/VcActivityCommand.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index 0f56fb4fbd..a84e8da2a9 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -24,6 +24,7 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; +import java.util.concurrent.TimeUnit; /** * Implements the {@code vc-activity} command. Creates VC activities. @@ -45,6 +46,9 @@ public final class VcActivityCommand extends SlashCommandAdapter { private static final String MAX_USES_OPTION = "max-uses"; private static final String MAX_AGE_OPTION = "max-age"; + // sets the Max_age duration of the voice channel in seconds - converts to days. + private static final long MAX_AGE_DURATION = TimeUnit.SECONDS.toDays(7); + public static final String YOUTUBE_TOGETHER_NAME = "YouTube Together"; public static final String POKER_NAME = "Poker"; public static final String BETRAYAL_IO_NAME = "Betrayal.io"; @@ -86,8 +90,8 @@ public final class VcActivityCommand extends SlashCommandAdapter { new OptionData(OptionType.STRING, MAX_USES_OPTION, "The amount of times the invite can be used, default is infinity", false), new OptionData(OptionType.INTEGER, MAX_AGE_OPTION, - "Max age in seconds. Set this to 0 to never expire, default is 1 day", false)); - + "Max age in seconds. Set this to 0 to never expire, default is 1 day", false) + .setRequiredRange(1, TimeUnit.DAYS.toSeconds(MAX_AGE_DURATION))); /** * Constructs an instance From 3e718a7a5c15337dcd366b377841f46e6a3e3fab Mon Sep 17 00:00:00 2001 From: Budbomber Date: Fri, 14 Jan 2022 13:32:51 +0000 Subject: [PATCH 02/26] Added: MAX_AGE_DURATION_ONE_WEEK sets the duration the max duration in seconds. Added to option MAX_AGE_OPTION: .setRequiredRange(1,NAX_DURATION_ONE_WEEK)); sets required range between 1 and 7 days in seconds --- .../tjbot/commands/basic/VcActivityCommand.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index a84e8da2a9..45b18e96f7 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -24,7 +24,6 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; -import java.util.concurrent.TimeUnit; /** * Implements the {@code vc-activity} command. Creates VC activities. @@ -46,8 +45,8 @@ public final class VcActivityCommand extends SlashCommandAdapter { private static final String MAX_USES_OPTION = "max-uses"; private static final String MAX_AGE_OPTION = "max-age"; - // sets the Max_age duration of the voice channel in seconds - converts to days. - private static final long MAX_AGE_DURATION = TimeUnit.SECONDS.toDays(7); + //The amount of seconds in one week. + private static final int MAX_AGE_DURATION_ONE_WEEK = 60 * 60 * 24; public static final String YOUTUBE_TOGETHER_NAME = "YouTube Together"; public static final String POKER_NAME = "Poker"; @@ -91,7 +90,7 @@ public final class VcActivityCommand extends SlashCommandAdapter { "The amount of times the invite can be used, default is infinity", false), new OptionData(OptionType.INTEGER, MAX_AGE_OPTION, "Max age in seconds. Set this to 0 to never expire, default is 1 day", false) - .setRequiredRange(1, TimeUnit.DAYS.toSeconds(MAX_AGE_DURATION))); + .setRequiredRange(0, MAX_AGE_DURATION_ONE_WEEK)); // Max duration 0 - 7 days in seconds. /** * Constructs an instance From 903fcf60a84dd1168b89f02f2c96da5f2d9b3980 Mon Sep 17 00:00:00 2001 From: Budbomber <71235266+Budbomber@users.noreply.github.com> Date: Fri, 14 Jan 2022 13:56:12 +0000 Subject: [PATCH 03/26] Update application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java Changed, MAX_DURATION_ONE_WEEK to more readable, MAX_VALUE_MAX_AGE, and used ChronoUnit to convert seconds to days. Co-authored-by: Tais993 <49957334+Tais993@users.noreply.github.com> --- .../togetherjava/tjbot/commands/basic/VcActivityCommand.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index 45b18e96f7..96f93885c7 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -45,8 +45,7 @@ public final class VcActivityCommand extends SlashCommandAdapter { private static final String MAX_USES_OPTION = "max-uses"; private static final String MAX_AGE_OPTION = "max-age"; - //The amount of seconds in one week. - private static final int MAX_AGE_DURATION_ONE_WEEK = 60 * 60 * 24; + private static final int MAX_VALUE_MAX_AGE = ChronoUnit.SECONDS.fromDays(7); public static final String YOUTUBE_TOGETHER_NAME = "YouTube Together"; public static final String POKER_NAME = "Poker"; From 2e97edac17dbb27f4d2a58b76d524063782cca19 Mon Sep 17 00:00:00 2001 From: Budbomber <71235266+Budbomber@users.noreply.github.com> Date: Fri, 14 Jan 2022 13:56:47 +0000 Subject: [PATCH 04/26] Update application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java More readable, removed irrelevant comment Co-authored-by: Tais993 <49957334+Tais993@users.noreply.github.com> --- .../togetherjava/tjbot/commands/basic/VcActivityCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index 96f93885c7..29c94202b6 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -89,7 +89,7 @@ public final class VcActivityCommand extends SlashCommandAdapter { "The amount of times the invite can be used, default is infinity", false), new OptionData(OptionType.INTEGER, MAX_AGE_OPTION, "Max age in seconds. Set this to 0 to never expire, default is 1 day", false) - .setRequiredRange(0, MAX_AGE_DURATION_ONE_WEEK)); // Max duration 0 - 7 days in seconds. + .setRequiredRange(0, MAX_VALUE_MAX_AGE)); /** * Constructs an instance From ff8f11c695ebf67a2e8de50698d604f0564fa940 Mon Sep 17 00:00:00 2001 From: Budbomber Date: Fri, 14 Jan 2022 13:32:51 +0000 Subject: [PATCH 05/26] Added: MAX_AGE_DURATION_ONE_WEEK sets the duration the max duration in seconds. Added to option MAX_AGE_OPTION: .setRequiredRange(1,NAX_DURATION_ONE_WEEK)); sets required range between 1 and 7 days in seconds --- .../commands/basic/VcActivityCommand.java | 90 +++---------------- 1 file changed, 10 insertions(+), 80 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index a84e8da2a9..57c05daf53 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -12,7 +12,6 @@ import net.dv8tion.jda.api.interactions.commands.build.OptionData; import net.dv8tion.jda.api.interactions.commands.build.SubcommandData; import net.dv8tion.jda.api.requests.restaction.interactions.ReplyAction; -import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; @@ -26,6 +25,8 @@ import java.util.Optional; import java.util.concurrent.TimeUnit; + + /** * Implements the {@code vc-activity} command. Creates VC activities. * @@ -46,8 +47,8 @@ public final class VcActivityCommand extends SlashCommandAdapter { private static final String MAX_USES_OPTION = "max-uses"; private static final String MAX_AGE_OPTION = "max-age"; - // sets the Max_age duration of the voice channel in seconds - converts to days. - private static final long MAX_AGE_DURATION = TimeUnit.SECONDS.toDays(7); + private static final long MAX_VALUE_MAX_AGE = TimeUnit.DAYS.toSeconds(7); + private static final long MAX_VALUE_MAX_USES = 100; public static final String YOUTUBE_TOGETHER_NAME = "YouTube Together"; public static final String POKER_NAME = "Poker"; @@ -87,11 +88,12 @@ public final class VcActivityCommand extends SlashCommandAdapter { "879863976006127627", LETTERTILE_NAME, "879863686565621790"); private static final List inviteOptions = List.of( - new OptionData(OptionType.STRING, MAX_USES_OPTION, - "The amount of times the invite can be used, default is infinity", false), + new OptionData(OptionType.INTEGER, MAX_USES_OPTION, + "Max uses, set to 0 for infinite, 100 for maximum", false) + .setRequiredRange(0, MAX_VALUE_MAX_USES), new OptionData(OptionType.INTEGER, MAX_AGE_OPTION, "Max age in seconds. Set this to 0 to never expire, default is 1 day", false) - .setRequiredRange(1, TimeUnit.DAYS.toSeconds(MAX_AGE_DURATION))); + .setRequiredRange(0, MAX_VALUE_MAX_AGE)); /** * Constructs an instance @@ -149,28 +151,6 @@ public void onSlashCommand(@NotNull SlashCommandEvent event) { OptionMapping applicationOption = event.getOption(APPLICATION_OPTION); OptionMapping idOption = event.getOption(ID_OPTION); - OptionMapping maxUsesOption = event.getOption(MAX_USES_OPTION); - OptionMapping maxAgeOption = event.getOption(MAX_AGE_OPTION); - - Integer maxUses; - - // the user already received the error in the handleIntegerTypeOption method - // it still throws to tell us to return this method and stop the proceeding code - try { - maxUses = handleIntegerTypeOption(event, maxUsesOption); - } catch (IllegalArgumentException ignore) { - return; - } - - Integer maxAge; - - // the user already received the error in the handleIntegerTypeOption method - // it still throws to tell us to return this method and stop the proceeding code - try { - maxAge = handleIntegerTypeOption(event, maxAgeOption); - } catch (IllegalArgumentException ignore) { - return; - } String applicationId; @@ -186,7 +166,7 @@ public void onSlashCommand(@NotNull SlashCommandEvent event) { getKeyByValue(VC_APPLICATION_TO_ID, applicationId).orElse("an activity"); } - handleSubcommand(event, voiceChannel, applicationId, maxUses, maxAge, applicationName); + handleSubcommand(event, voiceChannel, applicationId, applicationName); } private static @NotNull Optional getKeyByValue(@NotNull Map map, @@ -202,12 +182,10 @@ public void onSlashCommand(@NotNull SlashCommandEvent event) { private static void handleSubcommand(@NotNull SlashCommandEvent event, @NotNull VoiceChannel voiceChannel, @NotNull String applicationId, - @Nullable Integer maxUses, @Nullable Integer maxAge, @NotNull String applicationName) { + @NotNull String applicationName) { voiceChannel.createInvite() .setTargetApplication(applicationId) - .setMaxUses(maxUses) - .setMaxAge(maxAge) .flatMap(invite -> replyInvite(event, invite, applicationName)) .queue(null, throwable -> handleErrors(event, throwable)); } @@ -226,52 +204,4 @@ private static void handleErrors(@NotNull SlashCommandEvent event, event.reply("Something went wrong :/").queue(); logger.warn("Something went wrong in the VcActivityCommand", throwable); } - - - /** - * This grabs the OptionMapping, after this it
- * - validates whenever it's within an {@link Integer Integer's} range
- * - validates whenever it's positive
- * - *

- *

- * - * @param event the {@link SlashCommandEvent} - * @param optionMapping the {@link OptionMapping} - * @return nullable {@link Integer} - * @throws java.lang.IllegalArgumentException if the option's value is - outside of - * {@link Integer#MAX_VALUE} - negative - */ - @Contract("_, null -> null") - private static @Nullable Integer handleIntegerTypeOption(@NotNull SlashCommandEvent event, - @Nullable OptionMapping optionMapping) { - - int optionValue; - - if (optionMapping == null) { - return null; - } - - try { - optionValue = Math.toIntExact(optionMapping.getAsLong()); - } catch (ArithmeticException e) { - event - .reply("The " + optionMapping.getName() + " is above `" + Integer.MAX_VALUE - + "`, which is too high") - .setEphemeral(true) - .queue(); - throw new IllegalArgumentException( - optionMapping.getName() + " can't be above " + Integer.MAX_VALUE); - } - - if (optionValue < 0) { - event.reply("The " + optionMapping.getName() + " is negative, which isn't supported") - .setEphemeral(true) - .queue(); - throw new IllegalArgumentException(optionMapping.getName() + " can't be negative"); - } - - - return optionValue; - } } From 9ccf518823cbb944e9c957e43dba978f508383d0 Mon Sep 17 00:00:00 2001 From: Budbomber Date: Fri, 14 Jan 2022 15:37:39 +0000 Subject: [PATCH 06/26] Cleaned up code, Added MAX_USES_MAX VALUE, reformatted MAX_AGE_MAX_VALUE to more readable TimeUnit --- .../commands/basic/VcActivityCommand.java | 93 ++----------------- 1 file changed, 10 insertions(+), 83 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index 73e2d231b8..8a78d56020 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -12,7 +12,6 @@ import net.dv8tion.jda.api.interactions.commands.build.OptionData; import net.dv8tion.jda.api.interactions.commands.build.SubcommandData; import net.dv8tion.jda.api.requests.restaction.interactions.ReplyAction; -import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; @@ -46,9 +45,9 @@ public final class VcActivityCommand extends SlashCommandAdapter { private static final String MAX_USES_OPTION = "max-uses"; private static final String MAX_AGE_OPTION = "max-age"; - - private static final long MAX_VALUE_MAX_AGE = TimeUnit.DAYS.toSeconds(7); - private static final long MAX_VALUE_MAX_USES = 100; + // sets the Max_age duration of the voice channel in seconds - converts to days. + private static final long MAX_AGE_MAX_VALUE = TimeUnit.SECONDS.toDays(7); + private static final long MAX_USES_MAX_VALUE = 100; public static final String YOUTUBE_TOGETHER_NAME = "YouTube Together"; public static final String POKER_NAME = "Poker"; @@ -88,11 +87,12 @@ public final class VcActivityCommand extends SlashCommandAdapter { "879863976006127627", LETTERTILE_NAME, "879863686565621790"); private static final List inviteOptions = List.of( - new OptionData(OptionType.STRING, MAX_USES_OPTION, - "The amount of times the invite can be used, default is infinity", false), + new OptionData(OptionType.INTEGER, MAX_USES_OPTION, + "The amount of times the invite can be used, default is infinity", false) + .setRequiredRange(0, MAX_USES_MAX_VALUE), new OptionData(OptionType.INTEGER, MAX_AGE_OPTION, "Max age in seconds. Set this to 0 to never expire, default is 1 day", false) - .setRequiredRange(1, TimeUnit.DAYS.toSeconds(MAX_AGE_DURATION))); + .setRequiredRange(1, MAX_AGE_MAX_VALUE)); /** * Constructs an instance @@ -150,29 +150,6 @@ public void onSlashCommand(@NotNull SlashCommandEvent event) { OptionMapping applicationOption = event.getOption(APPLICATION_OPTION); OptionMapping idOption = event.getOption(ID_OPTION); - OptionMapping maxUsesOption = event.getOption(MAX_USES_OPTION); - OptionMapping maxAgeOption = event.getOption(MAX_AGE_OPTION); - - Integer maxUses; - - // the user already received the error in the handleIntegerTypeOption method - // it still throws to tell us to return this method and stop the proceeding code - try { - maxUses = handleIntegerTypeOption(event, maxUsesOption); - } catch (IllegalArgumentException ignore) { - return; - } - - Integer maxAge; - - // the user already received the error in the handleIntegerTypeOption method - // it still throws to tell us to return this method and stop the proceeding code - try { - maxAge = handleIntegerTypeOption(event, maxAgeOption); - } catch (IllegalArgumentException ignore) { - return; - } - String applicationId; String applicationName; @@ -187,7 +164,7 @@ public void onSlashCommand(@NotNull SlashCommandEvent event) { getKeyByValue(VC_APPLICATION_TO_ID, applicationId).orElse("an activity"); } - handleSubcommand(event, voiceChannel, applicationId, maxUses, maxAge, applicationName); + handleSubcommand(event, voiceChannel, applicationId, applicationName); } private static @NotNull Optional getKeyByValue(@NotNull Map map, @@ -202,13 +179,11 @@ public void onSlashCommand(@NotNull SlashCommandEvent event) { } private static void handleSubcommand(@NotNull SlashCommandEvent event, - @NotNull VoiceChannel voiceChannel, @NotNull String applicationId, - @Nullable Integer maxUses, @Nullable Integer maxAge, @NotNull String applicationName) { + @NotNull VoiceChannel voiceChannel, @NotNull String applicationId, + @NotNull String applicationName) { voiceChannel.createInvite() .setTargetApplication(applicationId) - .setMaxUses(maxUses) - .setMaxAge(maxAge) .flatMap(invite -> replyInvite(event, invite, applicationName)) .queue(null, throwable -> handleErrors(event, throwable)); } @@ -227,52 +202,4 @@ private static void handleErrors(@NotNull SlashCommandEvent event, event.reply("Something went wrong :/").queue(); logger.warn("Something went wrong in the VcActivityCommand", throwable); } - - - /** - * This grabs the OptionMapping, after this it
- * - validates whenever it's within an {@link Integer Integer's} range
- * - validates whenever it's positive
- * - *

- *

- * - * @param event the {@link SlashCommandEvent} - * @param optionMapping the {@link OptionMapping} - * @return nullable {@link Integer} - * @throws java.lang.IllegalArgumentException if the option's value is - outside of - * {@link Integer#MAX_VALUE} - negative - */ - @Contract("_, null -> null") - private static @Nullable Integer handleIntegerTypeOption(@NotNull SlashCommandEvent event, - @Nullable OptionMapping optionMapping) { - - int optionValue; - - if (optionMapping == null) { - return null; - } - - try { - optionValue = Math.toIntExact(optionMapping.getAsLong()); - } catch (ArithmeticException e) { - event - .reply("The " + optionMapping.getName() + " is above `" + Integer.MAX_VALUE - + "`, which is too high") - .setEphemeral(true) - .queue(); - throw new IllegalArgumentException( - optionMapping.getName() + " can't be above " + Integer.MAX_VALUE); - } - - if (optionValue < 0) { - event.reply("The " + optionMapping.getName() + " is negative, which isn't supported") - .setEphemeral(true) - .queue(); - throw new IllegalArgumentException(optionMapping.getName() + " can't be negative"); - } - - - return optionValue; - } } From 4d015aaf75d03defa80dcbf0c23879be48e55e0b Mon Sep 17 00:00:00 2001 From: Budbomber Date: Fri, 14 Jan 2022 15:40:23 +0000 Subject: [PATCH 07/26] Cleaned up code, Added MAX_VALUE_MAX_USES, reformatted MAX_VALUE_MAX_AGE to more readable TimeUnit. --- .../tjbot/commands/basic/VcActivityCommand.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index 8a78d56020..0017fdeaa6 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -46,8 +46,8 @@ public final class VcActivityCommand extends SlashCommandAdapter { private static final String MAX_AGE_OPTION = "max-age"; // sets the Max_age duration of the voice channel in seconds - converts to days. - private static final long MAX_AGE_MAX_VALUE = TimeUnit.SECONDS.toDays(7); - private static final long MAX_USES_MAX_VALUE = 100; + private static final long MAX_VALUE_MAX_AGE = TimeUnit.SECONDS.toDays(7); + private static final long MAX_VALE_MAX_USES = 100; public static final String YOUTUBE_TOGETHER_NAME = "YouTube Together"; public static final String POKER_NAME = "Poker"; @@ -89,10 +89,10 @@ public final class VcActivityCommand extends SlashCommandAdapter { private static final List inviteOptions = List.of( new OptionData(OptionType.INTEGER, MAX_USES_OPTION, "The amount of times the invite can be used, default is infinity", false) - .setRequiredRange(0, MAX_USES_MAX_VALUE), + .setRequiredRange(0, MAX_VALE_MAX_USES), new OptionData(OptionType.INTEGER, MAX_AGE_OPTION, "Max age in seconds. Set this to 0 to never expire, default is 1 day", false) - .setRequiredRange(1, MAX_AGE_MAX_VALUE)); + .setRequiredRange(1, MAX_VALUE_MAX_AGE)); /** * Constructs an instance From 93b9927c7e40dae968c488387236a88bbb5c59f3 Mon Sep 17 00:00:00 2001 From: Budbomber <71235266+Budbomber@users.noreply.github.com> Date: Fri, 14 Jan 2022 16:24:07 +0000 Subject: [PATCH 08/26] Update application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java wrong values (oops) Co-authored-by: Jonas --- .../togetherjava/tjbot/commands/basic/VcActivityCommand.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index 0017fdeaa6..5243c90017 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -45,7 +45,9 @@ public final class VcActivityCommand extends SlashCommandAdapter { private static final String MAX_USES_OPTION = "max-uses"; private static final String MAX_AGE_OPTION = "max-age"; - // sets the Max_age duration of the voice channel in seconds - converts to days. + /** + * Sets the MAX_AGE duration of the voice channel in seconds - converts to days. + */ private static final long MAX_VALUE_MAX_AGE = TimeUnit.SECONDS.toDays(7); private static final long MAX_VALE_MAX_USES = 100; From d760bc0d6615bca30767159f3eb1521bd6979549 Mon Sep 17 00:00:00 2001 From: Budbomber Date: Sat, 15 Jan 2022 00:58:11 +0000 Subject: [PATCH 09/26] Taken into account, all the suggestions cleaned up code --- .../commands/basic/VcActivityCommand.java | 74 +++++++++++++++---- 1 file changed, 58 insertions(+), 16 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index 0017fdeaa6..3ebcb5cf2f 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -12,6 +12,7 @@ import net.dv8tion.jda.api.interactions.commands.build.OptionData; import net.dv8tion.jda.api.interactions.commands.build.SubcommandData; import net.dv8tion.jda.api.requests.restaction.interactions.ReplyAction; +import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; @@ -46,7 +47,7 @@ public final class VcActivityCommand extends SlashCommandAdapter { private static final String MAX_AGE_OPTION = "max-age"; // sets the Max_age duration of the voice channel in seconds - converts to days. - private static final long MAX_VALUE_MAX_AGE = TimeUnit.SECONDS.toDays(7); + private static final long MAX_VALUE_MAX_AGE = TimeUnit.SECONDS.toDays(604800); private static final long MAX_VALE_MAX_USES = 100; public static final String YOUTUBE_TOGETHER_NAME = "YouTube Together"; @@ -89,10 +90,10 @@ public final class VcActivityCommand extends SlashCommandAdapter { private static final List inviteOptions = List.of( new OptionData(OptionType.INTEGER, MAX_USES_OPTION, "The amount of times the invite can be used, default is infinity", false) - .setRequiredRange(0, MAX_VALE_MAX_USES), + .setRequiredRange(0, MAX_VALE_MAX_USES), new OptionData(OptionType.INTEGER, MAX_AGE_OPTION, "Max age in seconds. Set this to 0 to never expire, default is 1 day", false) - .setRequiredRange(1, MAX_VALUE_MAX_AGE)); + .setRequiredRange(0, MAX_VALUE_MAX_AGE)); /** * Constructs an instance @@ -105,17 +106,19 @@ public VcActivityCommand() { SlashCommandVisibility.GUILD); - SubcommandData applicationSubCommand = + SubcommandData applicationSubCommand = Objects.requireNonNull( new SubcommandData(APPLICATION_SUBCOMMAND, "Choose an application from our list") .addOptions(new OptionData(OptionType.STRING, APPLICATION_OPTION, "the application", true).addChoices(VC_APPLICATIONS)) - .addOptions(inviteOptions); + .addOptions(inviteOptions)); - SubcommandData idSubCommand = - new SubcommandData("id", "specify the ID for the application manually") - .addOption(OptionType.STRING, ID_OPTION, "the ID of the application", true) - .addOptions(inviteOptions); + + SubcommandData idSubCommand = Objects + .requireNonNull(new SubcommandData("id", "specify the ID for the application manually") + .addOption(OptionType.STRING, ID_OPTION, "the ID of the application", true) + .addOptions(inviteOptions)); + getData().addSubcommands(applicationSubCommand, idSubCommand); @@ -150,23 +153,43 @@ public void onSlashCommand(@NotNull SlashCommandEvent event) { OptionMapping applicationOption = event.getOption(APPLICATION_OPTION); OptionMapping idOption = event.getOption(ID_OPTION); + OptionMapping maxUsesOption = event.getOption(MAX_USES_OPTION); + OptionMapping maxAgeOption = event.getOption(MAX_AGE_OPTION); String applicationId; String applicationName; + Integer maxUses; + Integer maxAge; + + try { + maxUses = handleIntegerTypeOption(maxUsesOption); + } catch (IllegalArgumentException ignored) { + return; + } + + try { + maxAge = handleIntegerTypeOption(maxAgeOption); + } catch (IllegalArgumentException ignored) { + return; + } if (applicationOption != null) { applicationName = applicationOption.getAsString(); - applicationId = VC_APPLICATION_TO_ID.get(applicationName); + applicationId = Objects.requireNonNull(VC_APPLICATION_TO_ID.get(applicationName)); } else { - applicationId = idOption.getAsString(); - applicationName = - getKeyByValue(VC_APPLICATION_TO_ID, applicationId).orElse("an activity"); + applicationId = (Objects.requireNonNull(idOption.getAsString())); + + applicationName = (Objects.requireNonNull( + getKeyByValue(VC_APPLICATION_TO_ID, applicationId).orElse("an activity"))); } - handleSubcommand(event, voiceChannel, applicationId, applicationName); + + handleSubcommand(event, voiceChannel, applicationId, maxUses, maxAge, applicationName); } + + private static @NotNull Optional getKeyByValue(@NotNull Map map, @NotNull V value) { for (Map.Entry entry : map.entrySet()) { @@ -179,11 +202,14 @@ public void onSlashCommand(@NotNull SlashCommandEvent event) { } private static void handleSubcommand(@NotNull SlashCommandEvent event, - @NotNull VoiceChannel voiceChannel, @NotNull String applicationId, - @NotNull String applicationName) { + @NotNull VoiceChannel voiceChannel, @NotNull String applicationId, + @Nullable Integer maxUses, @Nullable Integer maxAge, @NotNull String applicationName) { + voiceChannel.createInvite() .setTargetApplication(applicationId) + .setMaxUses(maxUses) + .setMaxAge(maxAge) .flatMap(invite -> replyInvite(event, invite, applicationName)) .queue(null, throwable -> handleErrors(event, throwable)); } @@ -202,4 +228,20 @@ private static void handleErrors(@NotNull SlashCommandEvent event, event.reply("Something went wrong :/").queue(); logger.warn("Something went wrong in the VcActivityCommand", throwable); } + + @Contract("null -> null") + private static @Nullable Integer handleIntegerTypeOption( + @Nullable OptionMapping optionMapping) { + + int optionValue; + + if (optionMapping == null) { + return null; + } else { + + optionValue = Math.toIntExact(optionMapping.getAsLong()); + + } + return optionValue; + } } From 2c7567cccc3b1defe57175ef810093d4fd68ae7f Mon Sep 17 00:00:00 2001 From: Budbomber <71235266+Budbomber@users.noreply.github.com> Date: Sat, 15 Jan 2022 01:01:07 +0000 Subject: [PATCH 10/26] Update VcActivityCommand.java Removed useless comment --- .../org/togetherjava/tjbot/commands/basic/VcActivityCommand.java | 1 - 1 file changed, 1 deletion(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index 3ebcb5cf2f..fd67287bf1 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -46,7 +46,6 @@ public final class VcActivityCommand extends SlashCommandAdapter { private static final String MAX_USES_OPTION = "max-uses"; private static final String MAX_AGE_OPTION = "max-age"; - // sets the Max_age duration of the voice channel in seconds - converts to days. private static final long MAX_VALUE_MAX_AGE = TimeUnit.SECONDS.toDays(604800); private static final long MAX_VALE_MAX_USES = 100; From f26b4f275a5349bbaf49a3cc67f948b3f34554ff Mon Sep 17 00:00:00 2001 From: Budbomber <71235266+Budbomber@users.noreply.github.com> Date: Sat, 15 Jan 2022 01:19:24 +0000 Subject: [PATCH 11/26] Update application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java TimeUnit fixed Co-authored-by: Tais993 <49957334+Tais993@users.noreply.github.com> --- .../togetherjava/tjbot/commands/basic/VcActivityCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index fd67287bf1..304b58e617 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -46,7 +46,7 @@ public final class VcActivityCommand extends SlashCommandAdapter { private static final String MAX_USES_OPTION = "max-uses"; private static final String MAX_AGE_OPTION = "max-age"; - private static final long MAX_VALUE_MAX_AGE = TimeUnit.SECONDS.toDays(604800); + private static final long MAX_VALUE_MAX_AGE = TimeUnit.DAYS.toSeconds(7); private static final long MAX_VALE_MAX_USES = 100; public static final String YOUTUBE_TOGETHER_NAME = "YouTube Together"; From 6f5cbbd345bd6e502db2c0475fc143d0fa280ee4 Mon Sep 17 00:00:00 2001 From: Budbomber <71235266+Budbomber@users.noreply.github.com> Date: Sat, 15 Jan 2022 01:23:45 +0000 Subject: [PATCH 12/26] Update VcActivityCommand.java Some fixes, (got overhappy with RequiredNonNull) --- .../commands/basic/VcActivityCommand.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index 304b58e617..d2c10fe4e2 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -105,18 +105,18 @@ public VcActivityCommand() { SlashCommandVisibility.GUILD); - SubcommandData applicationSubCommand = Objects.requireNonNull( + SubcommandData applicationSubCommand = new SubcommandData(APPLICATION_SUBCOMMAND, "Choose an application from our list") .addOptions(new OptionData(OptionType.STRING, APPLICATION_OPTION, "the application", true).addChoices(VC_APPLICATIONS)) - .addOptions(inviteOptions)); + .addOptions(inviteOptions); - SubcommandData idSubCommand = Objects - .requireNonNull(new SubcommandData("id", "specify the ID for the application manually") + SubcommandData idSubCommand = + new SubcommandData("id", "specify the ID for the application manually") .addOption(OptionType.STRING, ID_OPTION, "the ID of the application", true) - .addOptions(inviteOptions)); + .addOptions(inviteOptions); @@ -174,13 +174,13 @@ public void onSlashCommand(@NotNull SlashCommandEvent event) { if (applicationOption != null) { applicationName = applicationOption.getAsString(); - applicationId = Objects.requireNonNull(VC_APPLICATION_TO_ID.get(applicationName)); + applicationId = VC_APPLICATION_TO_ID.get(applicationName); } else { - applicationId = (Objects.requireNonNull(idOption.getAsString())); + applicationId = idOption.getAsString(); - applicationName = (Objects.requireNonNull( - getKeyByValue(VC_APPLICATION_TO_ID, applicationId).orElse("an activity"))); + applicationName = + getKeyByValue(VC_APPLICATION_TO_ID, applicationId).orElse("an activity")); } From 825ec488cb6850850a6505d6acb5075fe4f5da56 Mon Sep 17 00:00:00 2001 From: Budbomber <71235266+Budbomber@users.noreply.github.com> Date: Sat, 15 Jan 2022 01:24:16 +0000 Subject: [PATCH 13/26] Update application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java Added comments back. Co-authored-by: Tais993 <49957334+Tais993@users.noreply.github.com> --- .../tjbot/commands/basic/VcActivityCommand.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index d2c10fe4e2..f468ce57c1 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -228,6 +228,15 @@ private static void handleErrors(@NotNull SlashCommandEvent event, logger.warn("Something went wrong in the VcActivityCommand", throwable); } + /** + * This grabs the OptionMapping, after this it returns null of the OptionMapping is null, else it'll return the number option as an Integer + * + *

+ *

+ * + * @param optionMapping the {@link OptionMapping} + * @return nullable {@link Integer} + **/ @Contract("null -> null") private static @Nullable Integer handleIntegerTypeOption( @Nullable OptionMapping optionMapping) { From 5104e73f284d341f0b2a8731f89b0a57795ef754 Mon Sep 17 00:00:00 2001 From: Budbomber <71235266+Budbomber@users.noreply.github.com> Date: Sat, 15 Jan 2022 01:26:39 +0000 Subject: [PATCH 14/26] Update VcActivityCommand.java removed try - catch --- .../tjbot/commands/basic/VcActivityCommand.java | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index f468ce57c1..5804ac01f6 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -160,17 +160,10 @@ public void onSlashCommand(@NotNull SlashCommandEvent event) { Integer maxUses; Integer maxAge; - try { - maxUses = handleIntegerTypeOption(maxUsesOption); - } catch (IllegalArgumentException ignored) { - return; - } - - try { - maxAge = handleIntegerTypeOption(maxAgeOption); - } catch (IllegalArgumentException ignored) { - return; - } + + maxUses = handleIntegerTypeOption(maxUsesOption); + maxAge = handleIntegerTypeOption(maxAgeOption); + if (applicationOption != null) { applicationName = applicationOption.getAsString(); From 2ae2a873beff091d134789d375dfb3e86b1b21bf Mon Sep 17 00:00:00 2001 From: Budbomber Date: Sat, 15 Jan 2022 01:33:45 +0000 Subject: [PATCH 15/26] Taken into account, all the suggestions cleaned up code --- .../commands/basic/VcActivityCommand.java | 46 ++++++++++--------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index 3ebcb5cf2f..bdb7aa1833 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -46,8 +46,7 @@ public final class VcActivityCommand extends SlashCommandAdapter { private static final String MAX_USES_OPTION = "max-uses"; private static final String MAX_AGE_OPTION = "max-age"; - // sets the Max_age duration of the voice channel in seconds - converts to days. - private static final long MAX_VALUE_MAX_AGE = TimeUnit.SECONDS.toDays(604800); + private static final long MAX_VALUE_MAX_AGE = TimeUnit.DAYS.toSeconds(7); private static final long MAX_VALE_MAX_USES = 100; public static final String YOUTUBE_TOGETHER_NAME = "YouTube Together"; @@ -106,18 +105,18 @@ public VcActivityCommand() { SlashCommandVisibility.GUILD); - SubcommandData applicationSubCommand = Objects.requireNonNull( + SubcommandData applicationSubCommand = new SubcommandData(APPLICATION_SUBCOMMAND, "Choose an application from our list") .addOptions(new OptionData(OptionType.STRING, APPLICATION_OPTION, "the application", true).addChoices(VC_APPLICATIONS)) - .addOptions(inviteOptions)); + .addOptions(inviteOptions); - SubcommandData idSubCommand = Objects - .requireNonNull(new SubcommandData("id", "specify the ID for the application manually") - .addOption(OptionType.STRING, ID_OPTION, "the ID of the application", true) - .addOptions(inviteOptions)); + SubcommandData idSubCommand = + new SubcommandData("id", "specify the ID for the application manually") + .addOption(OptionType.STRING, ID_OPTION, "the ID of the application", true) + .addOptions(inviteOptions); @@ -161,27 +160,20 @@ public void onSlashCommand(@NotNull SlashCommandEvent event) { Integer maxUses; Integer maxAge; - try { - maxUses = handleIntegerTypeOption(maxUsesOption); - } catch (IllegalArgumentException ignored) { - return; - } - try { - maxAge = handleIntegerTypeOption(maxAgeOption); - } catch (IllegalArgumentException ignored) { - return; - } + maxUses = handleIntegerTypeOption(maxUsesOption); + maxAge = handleIntegerTypeOption(maxAgeOption); + if (applicationOption != null) { applicationName = applicationOption.getAsString(); - applicationId = Objects.requireNonNull(VC_APPLICATION_TO_ID.get(applicationName)); + applicationId = VC_APPLICATION_TO_ID.get(applicationName); } else { - applicationId = (Objects.requireNonNull(idOption.getAsString())); + applicationId = idOption.getAsString(); - applicationName = (Objects.requireNonNull( - getKeyByValue(VC_APPLICATION_TO_ID, applicationId).orElse("an activity"))); + applicationName = + getKeyByValue(VC_APPLICATION_TO_ID, applicationId).orElse("an activity"); } @@ -229,6 +221,16 @@ private static void handleErrors(@NotNull SlashCommandEvent event, logger.warn("Something went wrong in the VcActivityCommand", throwable); } + /** + * This grabs the OptionMapping, after this it returns null of the OptionMapping is null, else + * it'll return the number option as an Integer + * + *

+ *

+ * + * @param optionMapping the {@link OptionMapping} + * @return nullable {@link Integer} + **/ @Contract("null -> null") private static @Nullable Integer handleIntegerTypeOption( @Nullable OptionMapping optionMapping) { From f7d064007b8e8c2434ddba1f82ec7eefc4dd0b3a Mon Sep 17 00:00:00 2001 From: Budbomber <71235266+Budbomber@users.noreply.github.com> Date: Sat, 15 Jan 2022 22:20:45 +0000 Subject: [PATCH 16/26] Update application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java Co-authored-by: Tais993 <49957334+Tais993@users.noreply.github.com> --- .../org/togetherjava/tjbot/commands/basic/VcActivityCommand.java | 1 - 1 file changed, 1 deletion(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index bdb7aa1833..1a94a6f30d 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -169,7 +169,6 @@ public void onSlashCommand(@NotNull SlashCommandEvent event) { applicationName = applicationOption.getAsString(); applicationId = VC_APPLICATION_TO_ID.get(applicationName); } else { - applicationId = idOption.getAsString(); applicationName = From a49095c2b5448f4144f1c1a039d90d6988a265e0 Mon Sep 17 00:00:00 2001 From: Budbomber <71235266+Budbomber@users.noreply.github.com> Date: Sat, 15 Jan 2022 22:20:52 +0000 Subject: [PATCH 17/26] Update application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java Co-authored-by: Tais993 <49957334+Tais993@users.noreply.github.com> --- .../org/togetherjava/tjbot/commands/basic/VcActivityCommand.java | 1 - 1 file changed, 1 deletion(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index 1a94a6f30d..769e6a209f 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -119,7 +119,6 @@ public VcActivityCommand() { .addOptions(inviteOptions); - getData().addSubcommands(applicationSubCommand, idSubCommand); } From 4ddbd6ce5a60867a7a9cdd2fded337c4a7c120e5 Mon Sep 17 00:00:00 2001 From: Budbomber <71235266+Budbomber@users.noreply.github.com> Date: Sat, 15 Jan 2022 22:21:23 +0000 Subject: [PATCH 18/26] Update application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java Co-authored-by: Tais993 <49957334+Tais993@users.noreply.github.com> --- .../org/togetherjava/tjbot/commands/basic/VcActivityCommand.java | 1 - 1 file changed, 1 deletion(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index 769e6a209f..efc07422db 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -112,7 +112,6 @@ public VcActivityCommand() { .addOptions(inviteOptions); - SubcommandData idSubCommand = new SubcommandData("id", "specify the ID for the application manually") .addOption(OptionType.STRING, ID_OPTION, "the ID of the application", true) From 29d217f6c1b90367022d0a52ce1622c94552088c Mon Sep 17 00:00:00 2001 From: Budbomber <71235266+Budbomber@users.noreply.github.com> Date: Sat, 15 Jan 2022 22:21:30 +0000 Subject: [PATCH 19/26] Update application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java Co-authored-by: Tais993 <49957334+Tais993@users.noreply.github.com> --- .../org/togetherjava/tjbot/commands/basic/VcActivityCommand.java | 1 - 1 file changed, 1 deletion(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index efc07422db..32a28c4b27 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -173,7 +173,6 @@ public void onSlashCommand(@NotNull SlashCommandEvent event) { getKeyByValue(VC_APPLICATION_TO_ID, applicationId).orElse("an activity"); } - handleSubcommand(event, voiceChannel, applicationId, maxUses, maxAge, applicationName); } From a4ccedbfbd6605f6e40a653585f95cb967cd9355 Mon Sep 17 00:00:00 2001 From: Budbomber <71235266+Budbomber@users.noreply.github.com> Date: Sat, 15 Jan 2022 22:21:35 +0000 Subject: [PATCH 20/26] Update application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java Co-authored-by: Tais993 <49957334+Tais993@users.noreply.github.com> --- .../togetherjava/tjbot/commands/basic/VcActivityCommand.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index 32a28c4b27..03c09fc42e 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -176,8 +176,6 @@ public void onSlashCommand(@NotNull SlashCommandEvent event) { handleSubcommand(event, voiceChannel, applicationId, maxUses, maxAge, applicationName); } - - private static @NotNull Optional getKeyByValue(@NotNull Map map, @NotNull V value) { for (Map.Entry entry : map.entrySet()) { From aeb8e79e21a0c4c52b4e079cc75cb2cffea97436 Mon Sep 17 00:00:00 2001 From: Budbomber <71235266+Budbomber@users.noreply.github.com> Date: Sat, 15 Jan 2022 22:21:40 +0000 Subject: [PATCH 21/26] Update application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java Co-authored-by: Tais993 <49957334+Tais993@users.noreply.github.com> --- .../org/togetherjava/tjbot/commands/basic/VcActivityCommand.java | 1 - 1 file changed, 1 deletion(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index 03c09fc42e..bdaeb711d0 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -191,7 +191,6 @@ private static void handleSubcommand(@NotNull SlashCommandEvent event, @NotNull VoiceChannel voiceChannel, @NotNull String applicationId, @Nullable Integer maxUses, @Nullable Integer maxAge, @NotNull String applicationName) { - voiceChannel.createInvite() .setTargetApplication(applicationId) .setMaxUses(maxUses) From 97ed98a50493d6bc6b975d5b0c488e787d1a5d52 Mon Sep 17 00:00:00 2001 From: Budbomber Date: Mon, 17 Jan 2022 10:12:39 +0000 Subject: [PATCH 22/26] Made changes Zabu requested, typos, Moved declarations, updated doc, removed some more empty lines etc. --- .../commands/basic/VcActivityCommand.java | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index bdaeb711d0..1f7d035ad2 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -46,8 +46,8 @@ public final class VcActivityCommand extends SlashCommandAdapter { private static final String MAX_USES_OPTION = "max-uses"; private static final String MAX_AGE_OPTION = "max-age"; - private static final long MAX_VALUE_MAX_AGE = TimeUnit.DAYS.toSeconds(7); - private static final long MAX_VALE_MAX_USES = 100; + private static final long MAX_AGE_LIMIT = TimeUnit.DAYS.toSeconds(7); + private static final long MAX_USES_LIMIT = 100; public static final String YOUTUBE_TOGETHER_NAME = "YouTube Together"; public static final String POKER_NAME = "Poker"; @@ -73,7 +73,6 @@ public final class VcActivityCommand extends SlashCommandAdapter { new Command.Choice(WORDSNACK_NAME, WORDSNACK_NAME), new Command.Choice(LETTERTILE_NAME, LETTERTILE_NAME)); - /** * List comes from the "Implement * invite targets" PR on JDA. There is no official list from Discord themselves, so this is @@ -88,11 +87,11 @@ public final class VcActivityCommand extends SlashCommandAdapter { private static final List inviteOptions = List.of( new OptionData(OptionType.INTEGER, MAX_USES_OPTION, - "The amount of times the invite can be used, default is infinity", false) - .setRequiredRange(0, MAX_VALE_MAX_USES), + "Max uses for invites, 0 for infinite, 100 is the top limit.", false) + .setRequiredRange(0, MAX_USES_LIMIT), new OptionData(OptionType.INTEGER, MAX_AGE_OPTION, "Max age in seconds. Set this to 0 to never expire, default is 1 day", false) - .setRequiredRange(0, MAX_VALUE_MAX_AGE)); + .setRequiredRange(0, MAX_AGE_LIMIT)); /** * Constructs an instance @@ -155,13 +154,8 @@ public void onSlashCommand(@NotNull SlashCommandEvent event) { String applicationId; String applicationName; - Integer maxUses; - Integer maxAge; - - - maxUses = handleIntegerTypeOption(maxUsesOption); - maxAge = handleIntegerTypeOption(maxAgeOption); - + Integer maxUses = handleIntegerTypeOption(maxUsesOption); + Integer maxAge = handleIntegerTypeOption(maxAgeOption); if (applicationOption != null) { applicationName = applicationOption.getAsString(); @@ -176,6 +170,7 @@ public void onSlashCommand(@NotNull SlashCommandEvent event) { handleSubcommand(event, voiceChannel, applicationId, maxUses, maxAge, applicationName); } + private static @NotNull Optional getKeyByValue(@NotNull Map map, @NotNull V value) { for (Map.Entry entry : map.entrySet()) { @@ -215,9 +210,9 @@ private static void handleErrors(@NotNull SlashCommandEvent event, } /** - * This grabs the OptionMapping, after this it returns null of the OptionMapping is null, else - * it'll return the number option as an Integer - * + * This grabs the OptionMapping, and interprets the given option as Integer, throws is the given + * option is not an integer. it'll return the number option as an Integer returns the option + * interpreted as int, null if option was null already. *

*

* From 0aca97561b7b1f8dd0615567ee18a7fca16ba15e Mon Sep 17 00:00:00 2001 From: Budbomber Date: Mon, 17 Jan 2022 11:23:44 +0000 Subject: [PATCH 23/26] Final changes made, renamed handle method to RequiredOptionIfPresent, doc updated. other format changes. --- .../commands/basic/VcActivityCommand.java | 41 +++++++------------ 1 file changed, 14 insertions(+), 27 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index 1f7d035ad2..fe6065da03 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -85,13 +85,13 @@ public final class VcActivityCommand extends SlashCommandAdapter { "852509694341283871", DOODLECREW_NAME, "878067389634314250", WORDSNACK_NAME, "879863976006127627", LETTERTILE_NAME, "879863686565621790"); - private static final List inviteOptions = List.of( - new OptionData(OptionType.INTEGER, MAX_USES_OPTION, - "Max uses for invites, 0 for infinite, 100 is the top limit.", false) - .setRequiredRange(0, MAX_USES_LIMIT), + private static final List inviteOptions = List.of(new OptionData(OptionType.INTEGER, + MAX_USES_OPTION, + "How many times this invite can be used, 0 infinite (default) - 100 being the highest.", + false).setRequiredRange(0, MAX_USES_LIMIT), new OptionData(OptionType.INTEGER, MAX_AGE_OPTION, - "Max age in seconds. Set this to 0 to never expire, default is 1 day", false) - .setRequiredRange(0, MAX_AGE_LIMIT)); + "How long, in days this activity can be used before it expires, 0 (No expiry), Maximum is 7 days. ", + false).setRequiredRange(0, MAX_AGE_LIMIT)); /** * Constructs an instance @@ -154,8 +154,8 @@ public void onSlashCommand(@NotNull SlashCommandEvent event) { String applicationId; String applicationName; - Integer maxUses = handleIntegerTypeOption(maxUsesOption); - Integer maxAge = handleIntegerTypeOption(maxAgeOption); + Integer maxUses = requiredIntOptionIfPresent(maxUsesOption); + Integer maxAge = requiredIntOptionIfPresent(maxAgeOption); if (applicationOption != null) { applicationName = applicationOption.getAsString(); @@ -210,28 +210,15 @@ private static void handleErrors(@NotNull SlashCommandEvent event, } /** - * This grabs the OptionMapping, and interprets the given option as Integer, throws is the given - * option is not an integer. it'll return the number option as an Integer returns the option - * interpreted as int, null if option was null already. - *

- *

- * - * @param optionMapping the {@link OptionMapping} - * @return nullable {@link Integer} + * Interprets the given option as integer. Throws if the option is not an integer. + * + * @param option the option that contains the integer to extract, or null if not present + * @return the extracted integer if present, null otherwise **/ @Contract("null -> null") - private static @Nullable Integer handleIntegerTypeOption( - @Nullable OptionMapping optionMapping) { - - int optionValue; + private static @Nullable Integer requiredIntOptionIfPresent(@Nullable OptionMapping option) { - if (optionMapping == null) { - return null; - } else { + return option == null ? null : Math.toIntExact(option.getAsLong()); - optionValue = Math.toIntExact(optionMapping.getAsLong()); - - } - return optionValue; } } From c11b8ead000cd3f06d51e7c6c002585bdf9d1299 Mon Sep 17 00:00:00 2001 From: Budbomber Date: Mon, 17 Jan 2022 13:15:42 +0000 Subject: [PATCH 24/26] Changes made, remaned maxAge to maxAgeDays, added check in voicechanel createInvite for maxAgeDays if null default set otherwise user input set. --- .../commands/basic/VcActivityCommand.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index fe6065da03..e24397d2c7 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -19,13 +19,13 @@ import org.slf4j.LoggerFactory; import org.togetherjava.tjbot.commands.SlashCommandAdapter; import org.togetherjava.tjbot.commands.SlashCommandVisibility; - import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.concurrent.TimeUnit; + /** * Implements the {@code vc-activity} command. Creates VC activities. * @@ -46,7 +46,7 @@ public final class VcActivityCommand extends SlashCommandAdapter { private static final String MAX_USES_OPTION = "max-uses"; private static final String MAX_AGE_OPTION = "max-age"; - private static final long MAX_AGE_LIMIT = TimeUnit.DAYS.toSeconds(7); + private static final long MAX_AGE_DAYS_LIMIT = TimeUnit.DAYS.toSeconds(7); private static final long MAX_USES_LIMIT = 100; public static final String YOUTUBE_TOGETHER_NAME = "YouTube Together"; @@ -91,7 +91,7 @@ public final class VcActivityCommand extends SlashCommandAdapter { false).setRequiredRange(0, MAX_USES_LIMIT), new OptionData(OptionType.INTEGER, MAX_AGE_OPTION, "How long, in days this activity can be used before it expires, 0 (No expiry), Maximum is 7 days. ", - false).setRequiredRange(0, MAX_AGE_LIMIT)); + false).setRequiredRange(0, MAX_AGE_DAYS_LIMIT)); /** * Constructs an instance @@ -155,7 +155,7 @@ public void onSlashCommand(@NotNull SlashCommandEvent event) { String applicationId; String applicationName; Integer maxUses = requiredIntOptionIfPresent(maxUsesOption); - Integer maxAge = requiredIntOptionIfPresent(maxAgeOption); + Integer maxAgeDays = requiredIntOptionIfPresent(maxAgeOption); if (applicationOption != null) { applicationName = applicationOption.getAsString(); @@ -167,7 +167,7 @@ public void onSlashCommand(@NotNull SlashCommandEvent event) { getKeyByValue(VC_APPLICATION_TO_ID, applicationId).orElse("an activity"); } - handleSubcommand(event, voiceChannel, applicationId, maxUses, maxAge, applicationName); + handleSubcommand(event, voiceChannel, applicationId, maxUses, maxAgeDays, applicationName); } @@ -184,14 +184,18 @@ public void onSlashCommand(@NotNull SlashCommandEvent event) { private static void handleSubcommand(@NotNull SlashCommandEvent event, @NotNull VoiceChannel voiceChannel, @NotNull String applicationId, - @Nullable Integer maxUses, @Nullable Integer maxAge, @NotNull String applicationName) { + @Nullable Integer maxUses, @Nullable Integer maxAgeDays, + @NotNull String applicationName) { + voiceChannel.createInvite() .setTargetApplication(applicationId) .setMaxUses(maxUses) - .setMaxAge(maxAge) + .setMaxAge(maxAgeDays == null ? null + : Math.toIntExact(TimeUnit.DAYS.toSeconds(maxAgeDays))) .flatMap(invite -> replyInvite(event, invite, applicationName)) .queue(null, throwable -> handleErrors(event, throwable)); + } private static @NotNull ReplyAction replyInvite(@NotNull SlashCommandEvent event, From 19062bc0a408a8479b4918f09995240bd6406644 Mon Sep 17 00:00:00 2001 From: Budbomber Date: Mon, 17 Jan 2022 14:13:37 +0000 Subject: [PATCH 25/26] Fixed typo's changed text in options to reflect the values set in the MAX_AGE_LIMIT & MAX_USES_LIMIT --- .../tjbot/commands/basic/VcActivityCommand.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index e24397d2c7..5fe9219a03 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -87,10 +87,12 @@ public final class VcActivityCommand extends SlashCommandAdapter { private static final List inviteOptions = List.of(new OptionData(OptionType.INTEGER, MAX_USES_OPTION, - "How many times this invite can be used, 0 infinite (default) - 100 being the highest.", + "How many times this invite can be used, 0 infinite (default) - %d being the highest." + .formatted(MAX_USES_LIMIT), false).setRequiredRange(0, MAX_USES_LIMIT), new OptionData(OptionType.INTEGER, MAX_AGE_OPTION, - "How long, in days this activity can be used before it expires, 0 (No expiry), Maximum is 7 days. ", + "How long, in days this activity can be used before it expires, 0 (No expiry), Maximum is %d days. " + .formatted(MAX_AGE_DAYS_LIMIT), false).setRequiredRange(0, MAX_AGE_DAYS_LIMIT)); /** @@ -154,8 +156,8 @@ public void onSlashCommand(@NotNull SlashCommandEvent event) { String applicationId; String applicationName; - Integer maxUses = requiredIntOptionIfPresent(maxUsesOption); - Integer maxAgeDays = requiredIntOptionIfPresent(maxAgeOption); + Integer maxUses = requireIntOptionIfPresent(maxUsesOption); + Integer maxAgeDays = requireIntOptionIfPresent(maxAgeOption); if (applicationOption != null) { applicationName = applicationOption.getAsString(); @@ -220,7 +222,7 @@ private static void handleErrors(@NotNull SlashCommandEvent event, * @return the extracted integer if present, null otherwise **/ @Contract("null -> null") - private static @Nullable Integer requiredIntOptionIfPresent(@Nullable OptionMapping option) { + private static @Nullable Integer requireIntOptionIfPresent(@Nullable OptionMapping option) { return option == null ? null : Math.toIntExact(option.getAsLong()); From 0a98196578d2056a7e6c56e8a141a4fd2746cbf9 Mon Sep 17 00:00:00 2001 From: Budbomber Date: Mon, 17 Jan 2022 14:31:31 +0000 Subject: [PATCH 26/26] Fixed value that was forgotten, input is now in days for UX, and the text will display correctly. --- .../togetherjava/tjbot/commands/basic/VcActivityCommand.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java index 5fe9219a03..09e008e39c 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/basic/VcActivityCommand.java @@ -46,7 +46,7 @@ public final class VcActivityCommand extends SlashCommandAdapter { private static final String MAX_USES_OPTION = "max-uses"; private static final String MAX_AGE_OPTION = "max-age"; - private static final long MAX_AGE_DAYS_LIMIT = TimeUnit.DAYS.toSeconds(7); + private static final long MAX_AGE_DAYS_LIMIT = 7; private static final long MAX_USES_LIMIT = 100; public static final String YOUTUBE_TOGETHER_NAME = "YouTube Together"; @@ -91,7 +91,7 @@ public final class VcActivityCommand extends SlashCommandAdapter { .formatted(MAX_USES_LIMIT), false).setRequiredRange(0, MAX_USES_LIMIT), new OptionData(OptionType.INTEGER, MAX_AGE_OPTION, - "How long, in days this activity can be used before it expires, 0 (No expiry), Maximum is %d days. " + "How long, in days this activity can be used before it expires, 0 (No expiry), Max is %d days." .formatted(MAX_AGE_DAYS_LIMIT), false).setRequiredRange(0, MAX_AGE_DAYS_LIMIT));