From 177c4e3e7c9c438cb74e2f908405134dcafb9925 Mon Sep 17 00:00:00 2001
From: Kaktushose <42280757+Kaktushose@users.noreply.github.com>
Date: Sun, 5 Jan 2025 18:55:15 +0100
Subject: [PATCH] rename ParameterDefinition to OptionDataDefinition and fix
 bug in ConstraintMiddleware

---
 .../jda/commands/definitions/Definition.java  |  4 +--
 .../definitions/features/JDAEntity.java       |  6 ++--
 .../interactions/ModalDefinition.java         |  5 ++-
 ...inition.java => OptionDataDefinition.java} | 16 +++++-----
 .../command/SlashCommandDefinition.java       | 18 +++++------
 .../handling/command/SlashCommandHandler.java | 14 ++++----
 .../middleware/impl/ConstraintMiddleware.java | 32 +++++++------------
 .../error/DefaultErrorMessageFactory.java     |  6 ++--
 .../embeds/error/ErrorMessageFactory.java     |  2 +-
 .../embeds/error/JsonErrorMessageFactory.java |  6 ++--
 .../jda/commands/internal/Helpers.java        |  2 +-
 .../commands/SlashCommandDefinitionTest.java  | 14 ++++----
 12 files changed, 58 insertions(+), 67 deletions(-)
 rename src/main/java/com/github/kaktushose/jda/commands/definitions/interactions/command/{ParameterDefinition.java => OptionDataDefinition.java} (96%)

diff --git a/src/main/java/com/github/kaktushose/jda/commands/definitions/Definition.java b/src/main/java/com/github/kaktushose/jda/commands/definitions/Definition.java
index a1ec7cca..35469868 100644
--- a/src/main/java/com/github/kaktushose/jda/commands/definitions/Definition.java
+++ b/src/main/java/com/github/kaktushose/jda/commands/definitions/Definition.java
@@ -5,14 +5,14 @@
 import com.github.kaktushose.jda.commands.definitions.features.internal.Invokable;
 import com.github.kaktushose.jda.commands.definitions.interactions.InteractionDefinition;
 import com.github.kaktushose.jda.commands.definitions.interactions.ModalDefinition;
-import com.github.kaktushose.jda.commands.definitions.interactions.command.ParameterDefinition;
+import com.github.kaktushose.jda.commands.definitions.interactions.command.OptionDataDefinition;
 import com.github.kaktushose.jda.commands.definitions.interactions.command.SlashCommandDefinition;
 import com.github.kaktushose.jda.commands.definitions.interactions.component.menu.StringSelectMenuDefinition;
 import org.jetbrains.annotations.NotNull;
 
 /// The common interface for all interaction definitions and their sub parts, such as parameters or text inputs, etc.
 public sealed interface Definition permits CustomIdJDAEntity, Invokable, JDAEntity, InteractionDefinition,
-        ModalDefinition.TextInputDefinition, ParameterDefinition, ParameterDefinition.ConstraintDefinition,
+        ModalDefinition.TextInputDefinition, OptionDataDefinition, OptionDataDefinition.ConstraintDefinition,
         SlashCommandDefinition.CooldownDefinition, StringSelectMenuDefinition.SelectOptionDefinition {
 
     /// The id for this definition. Per default this is the hash code of the [#toString()] method.
diff --git a/src/main/java/com/github/kaktushose/jda/commands/definitions/features/JDAEntity.java b/src/main/java/com/github/kaktushose/jda/commands/definitions/features/JDAEntity.java
index dd2fd620..9ad1376e 100644
--- a/src/main/java/com/github/kaktushose/jda/commands/definitions/features/JDAEntity.java
+++ b/src/main/java/com/github/kaktushose/jda/commands/definitions/features/JDAEntity.java
@@ -4,7 +4,7 @@
 import com.github.kaktushose.jda.commands.definitions.interactions.ModalDefinition.TextInputDefinition;
 import com.github.kaktushose.jda.commands.definitions.interactions.command.CommandDefinition;
 import com.github.kaktushose.jda.commands.definitions.interactions.command.ContextCommandDefinition;
-import com.github.kaktushose.jda.commands.definitions.interactions.command.ParameterDefinition;
+import com.github.kaktushose.jda.commands.definitions.interactions.command.OptionDataDefinition;
 import com.github.kaktushose.jda.commands.definitions.interactions.command.SlashCommandDefinition;
 import com.github.kaktushose.jda.commands.definitions.interactions.component.ButtonDefinition;
 import com.github.kaktushose.jda.commands.definitions.interactions.component.ComponentDefinition;
@@ -20,11 +20,11 @@
 /// @see StringSelectMenuDefinition
 /// @see SlashCommandDefinition
 /// @see ContextCommandDefinition
-/// @see ParameterDefinition
+/// @see OptionDataDefinition
 /// @see SelectOptionDefinition
 /// @see TextInputDefinition
 public sealed interface JDAEntity<T> extends Definition
-        permits ComponentDefinition, TextInputDefinition, CommandDefinition, ParameterDefinition, SelectOptionDefinition {
+        permits ComponentDefinition, TextInputDefinition, CommandDefinition, OptionDataDefinition, SelectOptionDefinition {
 
     /// Transforms this [Definition] into a JDA entity of the given type [T].
     ///
diff --git a/src/main/java/com/github/kaktushose/jda/commands/definitions/interactions/ModalDefinition.java b/src/main/java/com/github/kaktushose/jda/commands/definitions/interactions/ModalDefinition.java
index dc95bc45..d653aa33 100644
--- a/src/main/java/com/github/kaktushose/jda/commands/definitions/interactions/ModalDefinition.java
+++ b/src/main/java/com/github/kaktushose/jda/commands/definitions/interactions/ModalDefinition.java
@@ -6,7 +6,6 @@
 import com.github.kaktushose.jda.commands.definitions.description.ParameterDescription;
 import com.github.kaktushose.jda.commands.definitions.features.CustomIdJDAEntity;
 import com.github.kaktushose.jda.commands.definitions.features.JDAEntity;
-import com.github.kaktushose.jda.commands.definitions.interactions.command.ParameterDefinition;
 import com.github.kaktushose.jda.commands.dispatching.events.interactions.ModalEvent;
 import com.github.kaktushose.jda.commands.internal.Helpers;
 import net.dv8tion.jda.api.interactions.components.text.TextInput;
@@ -108,9 +107,9 @@ public record TextInputDefinition(
             boolean required
     ) implements JDAEntity<TextInput>, Definition {
 
-        /// Builds a new [TextInputDefinition] from the given [ParameterDefinition]
+        /// Builds a new [TextInputDefinition] from the given [ParameterDescription]
         ///
-        /// @param parameter the [ParameterDefinition] to build the [TextInputDefinition] from
+        /// @param parameter the [ParameterDescription] to build the [TextInputDefinition] from
         /// @return the new [TextInputDefinition]
         public static Optional<TextInputDefinition> build(ParameterDescription parameter) {
             var optional = parameter.annotation(com.github.kaktushose.jda.commands.annotations.interactions.TextInput.class);
diff --git a/src/main/java/com/github/kaktushose/jda/commands/definitions/interactions/command/ParameterDefinition.java b/src/main/java/com/github/kaktushose/jda/commands/definitions/interactions/command/OptionDataDefinition.java
similarity index 96%
rename from src/main/java/com/github/kaktushose/jda/commands/definitions/interactions/command/ParameterDefinition.java
rename to src/main/java/com/github/kaktushose/jda/commands/definitions/interactions/command/OptionDataDefinition.java
index 0aa4e795..3e7402c7 100644
--- a/src/main/java/com/github/kaktushose/jda/commands/definitions/interactions/command/ParameterDefinition.java
+++ b/src/main/java/com/github/kaktushose/jda/commands/definitions/interactions/command/OptionDataDefinition.java
@@ -42,7 +42,7 @@
 /// @param description  the description of the parameter
 /// @param choices      a [SequencedCollection] of possible [Command.Choice]s for this parameter
 /// @param constraints  a [Collection] of [ConstraintDefinition]s of this parameter
-public record ParameterDefinition(
+public record OptionDataDefinition(
         @NotNull Class<?> type,
         boolean optional,
         boolean autoComplete,
@@ -103,16 +103,16 @@ public record ParameterDefinition(
             ))
     );
 
-    /// Builds a new [ParameterDefinition].
+    /// Builds a new [OptionDataDefinition].
     ///
-    /// @param parameter         the [ParameterDescription] to build the [ParameterDefinition] from
+    /// @param parameter         the [ParameterDescription] to build the [OptionDataDefinition] from
     /// @param autoComplete      whether the [ParameterDescription] should support autocomplete
     /// @param validatorRegistry the corresponding [ValidatorRegistry]
-    /// @return the [ParameterDefinition]
+    /// @return the [OptionDataDefinition]
     @NotNull
-    public static ParameterDefinition build(ParameterDescription parameter,
-                                            boolean autoComplete,
-                                            @NotNull ValidatorRegistry validatorRegistry) {
+    public static OptionDataDefinition build(ParameterDescription parameter,
+                                             boolean autoComplete,
+                                             @NotNull ValidatorRegistry validatorRegistry) {
         final var parameterType = TYPE_MAPPINGS.getOrDefault(parameter.type(), parameter.type());
 
         var optional = parameter.annotation(com.github.kaktushose.jda.commands.annotations.interactions.Optional.class);
@@ -159,7 +159,7 @@ public static ParameterDefinition build(ParameterDescription parameter,
                 commandChoices.add(new Command.Choice(parsed[0], parsed[1]));
             }
         }
-        return new ParameterDefinition(
+        return new OptionDataDefinition(
                 parameterType,
                 optional.isPresent(),
                 autoComplete,
diff --git a/src/main/java/com/github/kaktushose/jda/commands/definitions/interactions/command/SlashCommandDefinition.java b/src/main/java/com/github/kaktushose/jda/commands/definitions/interactions/command/SlashCommandDefinition.java
index 34a911ce..ace1c8c4 100644
--- a/src/main/java/com/github/kaktushose/jda/commands/definitions/interactions/command/SlashCommandDefinition.java
+++ b/src/main/java/com/github/kaktushose/jda/commands/definitions/interactions/command/SlashCommandDefinition.java
@@ -36,7 +36,7 @@
 /// @param enabledPermissions   a possibly-empty [Set] of [Permission]s this command will be enabled for
 /// @param localizationFunction the [LocalizationFunction] to use for this command
 /// @param description          the command description
-/// @param commandParameters    a [SequencedCollection] of [ParameterDefinition]s
+/// @param commandOptions    a [SequencedCollection] of [OptionDataDefinition]s
 /// @param cooldown             the corresponding [CooldownDefinition]
 /// @param isAutoComplete       whether this command supports auto complete
 public record SlashCommandDefinition(
@@ -50,7 +50,7 @@ public record SlashCommandDefinition(
         @NotNull Set<Permission> enabledPermissions,
         @NotNull LocalizationFunction localizationFunction,
         @NotNull String description,
-        @NotNull SequencedCollection<ParameterDefinition> commandParameters,
+        @NotNull SequencedCollection<OptionDataDefinition> commandOptions,
         @NotNull CooldownDefinition cooldown,
         boolean isAutoComplete
 ) implements CommandDefinition {
@@ -78,10 +78,10 @@ public static Optional<SlashCommandDefinition> build(MethodBuildContext context)
                 .flatMap(Collection::stream)
                 .anyMatch(name::startsWith);
 
-        // build parameter definitions
-        List<ParameterDefinition> parameters = method.parameters().stream()
+        // build option data definitions
+        List<OptionDataDefinition> commandOptions = method.parameters().stream()
                 .filter(it -> !(CommandEvent.class.isAssignableFrom(it.type())))
-                .map(parameter -> ParameterDefinition.build(parameter, autoComplete, context.validatorRegistry()))
+                .map(parameter -> OptionDataDefinition.build(parameter, autoComplete, context.validatorRegistry()))
                 .toList();
 
         Set<Permission> enabledFor = Set.of(command.enabledFor());
@@ -91,7 +91,7 @@ public static Optional<SlashCommandDefinition> build(MethodBuildContext context)
 
         List<Class<?>> signature = new ArrayList<>();
         signature.add(CommandEvent.class);
-        parameters.forEach(it -> signature.add(it.type()));
+        commandOptions.forEach(it -> signature.add(it.type()));
         if (Helpers.checkSignature(method, signature)) {
             return Optional.empty();
         }
@@ -112,7 +112,7 @@ public static Optional<SlashCommandDefinition> build(MethodBuildContext context)
                 enabledFor,
                 context.localizationFunction(),
                 command.desc(),
-                parameters,
+                commandOptions,
                 cooldownDefinition,
                 autoComplete
         ));
@@ -132,7 +132,7 @@ public SlashCommandData toJDAEntity() {
                 .setNSFW(nsfw)
                 .setLocalizationFunction(localizationFunction)
                 .setDefaultPermissions(DefaultMemberPermissions.enabledFor(enabledPermissions));
-        commandParameters.forEach(parameter -> {
+        commandOptions.forEach(parameter -> {
             if (CommandEvent.class.isAssignableFrom(parameter.type())) {
                 return;
             }
@@ -150,7 +150,7 @@ public SubcommandData toSubCommandData(String label) {
                 description.replaceAll("N/A", "no description")
 
         );
-        commandParameters.forEach(parameter -> {
+        commandOptions.forEach(parameter -> {
             command.addOptions(parameter.toJDAEntity());
         });
         return command;
diff --git a/src/main/java/com/github/kaktushose/jda/commands/dispatching/handling/command/SlashCommandHandler.java b/src/main/java/com/github/kaktushose/jda/commands/dispatching/handling/command/SlashCommandHandler.java
index dd85911e..5910fc03 100644
--- a/src/main/java/com/github/kaktushose/jda/commands/dispatching/handling/command/SlashCommandHandler.java
+++ b/src/main/java/com/github/kaktushose/jda/commands/dispatching/handling/command/SlashCommandHandler.java
@@ -12,13 +12,11 @@
 import com.github.kaktushose.jda.commands.embeds.error.ErrorMessageFactory;
 import com.github.kaktushose.jda.commands.internal.Helpers;
 import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
+import net.dv8tion.jda.api.interactions.commands.OptionMapping;
 import org.jetbrains.annotations.ApiStatus;
 import org.jetbrains.annotations.NotNull;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 
 @ApiStatus.Internal
 public final class SlashCommandHandler extends EventHandler<SlashCommandInteractionEvent> {
@@ -40,8 +38,10 @@ protected InvocationContext<SlashCommandInteractionEvent> prepare(@NotNull Slash
     }
 
     private Optional<List<Object>> parseArguments(SlashCommandDefinition command, SlashCommandInteractionEvent event, Runtime runtime) {
-        var input = command.commandParameters().stream()
-                .map(it -> event.getOption(it.name()).getAsString())
+        var input = command.commandOptions().stream()
+                .map(it -> event.getOption(it.name()))
+                .filter(Objects::nonNull)
+                .map(OptionMapping::getAsString)
                 .toArray(String[]::new);
 
         List<Object> arguments = new ArrayList<>();
@@ -50,7 +50,7 @@ private Optional<List<Object>> parseArguments(SlashCommandDefinition command, Sl
         ErrorMessageFactory messageFactory = implementationRegistry.getErrorMessageFactory();
 
         log.debug("Type adapting arguments...");
-        var parameters = List.copyOf(command.commandParameters());
+        var parameters = List.copyOf(command.commandOptions());
         for (int i = 0; i < parameters.size(); i++) {
             var parameter = parameters.get(i);
 
diff --git a/src/main/java/com/github/kaktushose/jda/commands/dispatching/middleware/impl/ConstraintMiddleware.java b/src/main/java/com/github/kaktushose/jda/commands/dispatching/middleware/impl/ConstraintMiddleware.java
index 1c066c34..50977406 100644
--- a/src/main/java/com/github/kaktushose/jda/commands/dispatching/middleware/impl/ConstraintMiddleware.java
+++ b/src/main/java/com/github/kaktushose/jda/commands/dispatching/middleware/impl/ConstraintMiddleware.java
@@ -1,9 +1,9 @@
 package com.github.kaktushose.jda.commands.dispatching.middleware.impl;
 
-import com.github.kaktushose.jda.commands.definitions.interactions.command.ParameterDefinition;
 import com.github.kaktushose.jda.commands.definitions.interactions.command.SlashCommandDefinition;
 import com.github.kaktushose.jda.commands.dispatching.ImplementationRegistry;
 import com.github.kaktushose.jda.commands.dispatching.context.InvocationContext;
+import com.github.kaktushose.jda.commands.dispatching.events.Event;
 import com.github.kaktushose.jda.commands.dispatching.middleware.Middleware;
 import org.jetbrains.annotations.NotNull;
 import org.slf4j.Logger;
@@ -12,8 +12,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
-/// A [Middleware] implementation that will check the parameter constraints a
-/// [SlashCommandDefinition] might have.
+/// A [Middleware] implementation that will check the parameter constraints a [SlashCommandDefinition] might have.
 ///
 /// @see com.github.kaktushose.jda.commands.dispatching.validation.ValidatorRegistry ValidatorRegistry
 public class ConstraintMiddleware implements Middleware {
@@ -32,27 +31,20 @@ public ConstraintMiddleware(ImplementationRegistry implementationRegistry) {
     /// @param context the [InvocationContext] to filter
     @Override
     public void accept(@NotNull InvocationContext<?> context) {
-        if (!(context.definition() instanceof SlashCommandDefinition command))
-            return;
+        if (!(context.definition() instanceof SlashCommandDefinition command)) return;
 
         var arguments = new ArrayList<>(context.arguments());
-        List<ParameterDefinition> parameters = List.copyOf(command.commandParameters());
+        arguments.removeIf(Event.class::isInstance);
+        var commandOptions = List.copyOf(command.commandOptions());
 
         log.debug("Applying parameter constraints...");
-        for (int i = 1; i < arguments.size(); i++) {
-            Object argument = arguments.get(i);
-            ParameterDefinition parameter = parameters.get(i);
-            for (ParameterDefinition.ConstraintDefinition constraint : parameter.constraints()) {
-                log.debug("Found constraint {} for parameter {}", constraint, parameter.type().getName());
-
-                boolean validated = constraint.validator().apply(argument, constraint.annotation(), context);
-
-                if (!validated) {
-                    context.cancel(
-                            implementationRegistry
-                                    .getErrorMessageFactory()
-                                    .getConstraintFailedMessage(context, constraint)
-                    );
+        for (int i = 0; i < arguments.size(); i++) {
+            var argument = arguments.get(i);
+            var optionData = commandOptions.get(i);
+            for (var constraint : optionData.constraints()) {
+                log.debug("Found constraint {} for parameter {}", constraint, optionData.type().getName());
+                if (!constraint.validator().apply(argument, constraint.annotation(), context)) {
+                    context.cancel(implementationRegistry.getErrorMessageFactory().getConstraintFailedMessage(context, constraint));
                     log.debug("Constraint failed!");
                     return;
                 }
diff --git a/src/main/java/com/github/kaktushose/jda/commands/embeds/error/DefaultErrorMessageFactory.java b/src/main/java/com/github/kaktushose/jda/commands/embeds/error/DefaultErrorMessageFactory.java
index 75e33bac..0bc332e3 100644
--- a/src/main/java/com/github/kaktushose/jda/commands/embeds/error/DefaultErrorMessageFactory.java
+++ b/src/main/java/com/github/kaktushose/jda/commands/embeds/error/DefaultErrorMessageFactory.java
@@ -1,6 +1,6 @@
 package com.github.kaktushose.jda.commands.embeds.error;
 
-import com.github.kaktushose.jda.commands.definitions.interactions.command.ParameterDefinition;
+import com.github.kaktushose.jda.commands.definitions.interactions.command.OptionDataDefinition.ConstraintDefinition;
 import com.github.kaktushose.jda.commands.definitions.interactions.command.SlashCommandDefinition;
 import com.github.kaktushose.jda.commands.dispatching.events.interactions.CommandEvent;
 import net.dv8tion.jda.api.EmbedBuilder;
@@ -26,7 +26,7 @@ public MessageCreateData getTypeAdaptingFailedMessage(@NotNull ErrorContext cont
         StringBuilder sbExpected = new StringBuilder();
         SlashCommandDefinition command = (SlashCommandDefinition) context.definition();
 
-        command.commandParameters().forEach(parameter -> {
+        command.commandOptions().forEach(parameter -> {
             if (CommandEvent.class.isAssignableFrom(parameter.type())) {
                 return;
             }
@@ -72,7 +72,7 @@ public MessageCreateData getInsufficientPermissionsMessage(@NotNull ErrorContext
 
     @NotNull
     @Override
-    public MessageCreateData getConstraintFailedMessage(@NotNull ErrorContext context, @NotNull ParameterDefinition.ConstraintDefinition constraint) {
+    public MessageCreateData getConstraintFailedMessage(@NotNull ErrorContext context, @NotNull ConstraintDefinition constraint) {
         return new MessageCreateBuilder().setEmbeds(new EmbedBuilder()
                 .setColor(Color.ORANGE)
                 .setTitle("Parameter Error")
diff --git a/src/main/java/com/github/kaktushose/jda/commands/embeds/error/ErrorMessageFactory.java b/src/main/java/com/github/kaktushose/jda/commands/embeds/error/ErrorMessageFactory.java
index 4141de9d..3b97efe2 100644
--- a/src/main/java/com/github/kaktushose/jda/commands/embeds/error/ErrorMessageFactory.java
+++ b/src/main/java/com/github/kaktushose/jda/commands/embeds/error/ErrorMessageFactory.java
@@ -2,7 +2,7 @@
 
 import com.github.kaktushose.jda.commands.annotations.Implementation;
 import com.github.kaktushose.jda.commands.definitions.interactions.InteractionDefinition;
-import com.github.kaktushose.jda.commands.definitions.interactions.command.ParameterDefinition.ConstraintDefinition;
+import com.github.kaktushose.jda.commands.definitions.interactions.command.OptionDataDefinition.ConstraintDefinition;
 import net.dv8tion.jda.api.entities.Message;
 import net.dv8tion.jda.api.events.interaction.GenericInteractionCreateEvent;
 import net.dv8tion.jda.api.utils.messages.MessageCreateData;
diff --git a/src/main/java/com/github/kaktushose/jda/commands/embeds/error/JsonErrorMessageFactory.java b/src/main/java/com/github/kaktushose/jda/commands/embeds/error/JsonErrorMessageFactory.java
index a3f1daed..b942c834 100644
--- a/src/main/java/com/github/kaktushose/jda/commands/embeds/error/JsonErrorMessageFactory.java
+++ b/src/main/java/com/github/kaktushose/jda/commands/embeds/error/JsonErrorMessageFactory.java
@@ -1,6 +1,6 @@
 package com.github.kaktushose.jda.commands.embeds.error;
 
-import com.github.kaktushose.jda.commands.definitions.interactions.command.ParameterDefinition;
+import com.github.kaktushose.jda.commands.definitions.interactions.command.OptionDataDefinition.ConstraintDefinition;
 import com.github.kaktushose.jda.commands.definitions.interactions.command.SlashCommandDefinition;
 import com.github.kaktushose.jda.commands.dispatching.events.interactions.CommandEvent;
 import com.github.kaktushose.jda.commands.embeds.EmbedCache;
@@ -34,7 +34,7 @@ public MessageCreateData getTypeAdaptingFailedMessage(@NotNull ErrorContext cont
         StringBuilder sbExpected = new StringBuilder();
         SlashCommandDefinition command = (SlashCommandDefinition) context.definition();
 
-        command.commandParameters().forEach(parameter -> {
+        command.commandOptions().forEach(parameter -> {
             if (CommandEvent.class.isAssignableFrom(parameter.type())) {
                 return;
             }
@@ -76,7 +76,7 @@ public MessageCreateData getInsufficientPermissionsMessage(@NotNull ErrorContext
 
     @NotNull
     @Override
-    public MessageCreateData getConstraintFailedMessage(@NotNull ErrorContext context, @NotNull ParameterDefinition.ConstraintDefinition constraint) {
+    public MessageCreateData getConstraintFailedMessage(@NotNull ErrorContext context, @NotNull ConstraintDefinition constraint) {
         if (!embedCache.containsEmbed("constraintFailed")) {
             return super.getConstraintFailedMessage(context, constraint);
         }
diff --git a/src/main/java/com/github/kaktushose/jda/commands/internal/Helpers.java b/src/main/java/com/github/kaktushose/jda/commands/internal/Helpers.java
index 531a7516..99495324 100644
--- a/src/main/java/com/github/kaktushose/jda/commands/internal/Helpers.java
+++ b/src/main/java/com/github/kaktushose/jda/commands/internal/Helpers.java
@@ -19,7 +19,7 @@
 import java.lang.reflect.Method;
 import java.util.*;
 
-import static com.github.kaktushose.jda.commands.definitions.interactions.command.ParameterDefinition.TYPE_MAPPINGS;
+import static com.github.kaktushose.jda.commands.definitions.interactions.command.OptionDataDefinition.TYPE_MAPPINGS;
 
 /// Collection of helper methods that are used inside the framework.
 @ApiStatus.Internal
diff --git a/src/test/java/commands/SlashCommandDefinitionTest.java b/src/test/java/commands/SlashCommandDefinitionTest.java
index 5f3732c7..62325a20 100644
--- a/src/test/java/commands/SlashCommandDefinitionTest.java
+++ b/src/test/java/commands/SlashCommandDefinitionTest.java
@@ -117,7 +117,7 @@ public void method_withCommandEvent_ShouldWork() throws NoSuchMethodException {
         assertNotNull(definition);
 
 
-        assertTrue(definition.commandParameters().isEmpty());
+        assertTrue(definition.commandOptions().isEmpty());
     }
 
     @Test
@@ -129,8 +129,8 @@ public void method_withUnsupportedType_ShouldWork() throws NoSuchMethodException
         assertNotNull(definition);
 
 
-        assertEquals(1, definition.commandParameters().size());
-        assertEquals(UnsupportedType.class, definition.commandParameters().getFirst().type());
+        assertEquals(1, definition.commandOptions().size());
+        assertEquals(UnsupportedType.class, definition.commandOptions().getFirst().type());
     }
 
     @Test
@@ -142,8 +142,8 @@ public void method_withArgumentsAfterOptional_ShouldWork() throws NoSuchMethodEx
         assertNotNull(definition);
 
 
-        assertEquals(2, definition.commandParameters().size());
-        var parameters = List.copyOf(definition.commandParameters());
+        assertEquals(2, definition.commandOptions().size());
+        var parameters = List.copyOf(definition.commandOptions());
         assertTrue(parameters.get(0).optional());
         assertFalse(parameters.get(1).optional());
     }
@@ -156,8 +156,8 @@ public void method_withOptionalAfterOptional_ShouldWork() throws NoSuchMethodExc
         assertNotNull(definition);
 
 
-        assertEquals(2, definition.commandParameters().size());
-        var parameters = List.copyOf(definition.commandParameters());
+        assertEquals(2, definition.commandOptions().size());
+        var parameters = List.copyOf(definition.commandOptions());
         assertEquals(String.class, parameters.get(0).type());
         assertEquals(Integer.class, parameters.get(1).type());
     }