diff --git a/cloud-discord/cloud-jda/src/main/java/cloud/commandframework/jda/parsers/UserArgument.java b/cloud-discord/cloud-jda/src/main/java/cloud/commandframework/jda/parsers/UserArgument.java index 3d5851dc..8223f3d0 100644 --- a/cloud-discord/cloud-jda/src/main/java/cloud/commandframework/jda/parsers/UserArgument.java +++ b/cloud-discord/cloud-jda/src/main/java/cloud/commandframework/jda/parsers/UserArgument.java @@ -33,9 +33,10 @@ import net.dv8tion.jda.api.entities.User; import org.checkerframework.checker.nullness.qual.NonNull; import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Queue; +import java.util.Set; /** * Command Argument for {@link User} @@ -45,11 +46,11 @@ import java.util.Queue; @SuppressWarnings("unused") public final class UserArgument extends CommandArgument { - private final List modes; + private final Set modes; private UserArgument( final boolean required, final @NonNull String name, - final @NonNull List modes + final @NonNull Set modes ) { super(required, name, new UserParser<>(modes), User.class); this.modes = modes; @@ -74,7 +75,7 @@ public final class UserArgument extends CommandArgument { * @return Created component */ public static @NonNull CommandArgument of(final @NonNull String name) { - return UserArgument.newBuilder(name).asRequired().build(); + return UserArgument.newBuilder(name).withParserMode(ParserMode.MENTION).asRequired().build(); } /** @@ -85,7 +86,7 @@ public final class UserArgument extends CommandArgument { * @return Created component */ public static @NonNull CommandArgument optional(final @NonNull String name) { - return UserArgument.newBuilder(name).asOptional().build(); + return UserArgument.newBuilder(name).withParserMode(ParserMode.MENTION).asOptional().build(); } /** @@ -93,7 +94,7 @@ public final class UserArgument extends CommandArgument { * * @return List of Modes */ - public @NotNull List getModes() { + public @NotNull Set getModes() { return modes; } @@ -107,7 +108,7 @@ public final class UserArgument extends CommandArgument { public static final class Builder extends CommandArgument.Builder { - private List modes = new ArrayList<>(); + private Set modes = new HashSet<>(); protected Builder(final @NonNull String name) { super(User.class, name); @@ -119,11 +120,22 @@ public final class UserArgument extends CommandArgument { * @param modes List of Modes * @return Builder instance */ - public @NonNull Builder withParsers(final @NonNull List modes) { + public @NonNull Builder withParsers(final @NonNull Set modes) { this.modes = modes; return this; } + /** + * Add a parser mode to use + * + * @param mode Parser mode to add + * @return Builder instance + */ + public @NonNull Builder withParserMode(final @NonNull ParserMode mode) { + this.modes.add(mode); + return this; + } + /** * Builder a new example component * @@ -139,9 +151,9 @@ public final class UserArgument extends CommandArgument { public static final class UserParser implements ArgumentParser { - private final List modes; + private final Set modes; - private UserParser(final @NonNull List modes) { + private UserParser(final @NonNull Set modes) { this.modes = modes; }