From da3ce01fc7cdcfda71efeb2c5374f446c3064b98 Mon Sep 17 00:00:00 2001 From: Sheldan <5037282+Sheldan@users.noreply.github.com> Date: Sun, 2 May 2021 21:54:54 +0200 Subject: [PATCH] [AB-248] rejecting the everyone role as a valid parameter for a role parameter --- .../command/handler/RoleParameterHandlerImpl.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/RoleParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/RoleParameterHandlerImpl.java index 3544b742a..2c897485a 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/RoleParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/RoleParameterHandlerImpl.java @@ -26,12 +26,13 @@ public class RoleParameterHandlerImpl implements RoleParameterHandler { public Object handle(UnparsedCommandParameterPiece input, CommandParameterIterators iterators, Parameter param, Message context, Command command) { String inputString = ((String) input.getValue()).trim(); Matcher matcher = Message.MentionType.ROLE.getPattern().matcher(inputString); + Role foundRole; if(matcher.matches() && iterators.getRoleIterator().hasNext()) { - return iterators.getRoleIterator().next(); + foundRole = iterators.getRoleIterator().next(); } else { if(NumberUtils.isParsable(inputString)) { long roleId = Long.parseLong(inputString); - return context.getGuild().getRoleById(roleId); + foundRole = context.getGuild().getRoleById(roleId); } else { List roles = context.getGuild().getRolesByName(inputString, true); if(roles.isEmpty()) { @@ -40,9 +41,13 @@ public class RoleParameterHandlerImpl implements RoleParameterHandler { if(roles.size() > 1) { throw new AbstractoTemplatedException("Multiple roles found with name.", "multiple_roles_found_by_name_exception"); } - return roles.get(0); + foundRole = roles.get(0); } } + if(foundRole != null && foundRole.isPublicRole()) { + throw new AbstractoTemplatedException("Public role cannot be used for role parameter.", "everyone_role_not_allowed_exception"); + } + return foundRole; } @Override