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 05e286ba..3f0a0362 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 @@ -158,8 +158,13 @@ public final class UserArgument extends CommandArgument { * Construct a new argument parser for {@link User} * * @param modes List of parsing modes to use when parsing + * @throws java.lang.IllegalStateException If no parsing modes were provided */ public UserParser(final @NonNull Set modes) { + if (modes.isEmpty()) { + throw new IllegalArgumentException("At least one parsing mode is required"); + } + this.modes = modes; } @@ -180,7 +185,7 @@ public final class UserArgument extends CommandArgument { Exception exception = null; if (modes.contains(ParserMode.MENTION)) { - if (input.endsWith(">") || modes.size() == 1) { + if (input.startsWith("<@") && input.endsWith(">")) { final String id; if (input.startsWith("<@!")) { id = input.substring(3, input.length() - 1); @@ -195,6 +200,10 @@ public final class UserArgument extends CommandArgument { } catch (final UserNotFoundParseException | NumberFormatException e) { exception = e; } + } else { + exception = new IllegalArgumentException( + String.format("Input '%s' is not a user mention.", input) + ); } }