Interface PermissionOverrideAction

All Superinterfaces:
AuditableRestAction<PermissionOverride>, RestAction<PermissionOverride>

public interface PermissionOverrideAction extends AuditableRestAction<PermissionOverride>
Extension of AuditableRestAction specifically designed to create a PermissionOverride for a GuildChannel. This extension allows setting properties before executing the action.
Since:
3.0
See Also:
  • Method Details

    • setCheck

      @Nonnull @CheckReturnValue PermissionOverrideAction setCheck(@Nullable BooleanSupplier checks)
      Description copied from interface: AuditableRestAction
      Sets the last-second checks before finally executing the http request in the queue.
      If the provided supplier evaluates to false or throws an exception this will not be finished. When an exception is thrown from the supplier it will be provided to the failure callback.
      Specified by:
      setCheck in interface AuditableRestAction<PermissionOverride>
      Specified by:
      setCheck in interface RestAction<PermissionOverride>
      Parameters:
      checks - The checks to run before executing the request, or null to run no checks
      Returns:
      The current RestAction for chaining convenience
      See Also:
    • timeout

      @Nonnull @CheckReturnValue PermissionOverrideAction timeout(long timeout, @Nonnull TimeUnit unit)
      Description copied from interface: AuditableRestAction
      Timeout for this RestAction instance.
      If the request doesn't get executed within the timeout it will fail.

      When a RestAction times out, it will fail with a TimeoutException. This is the same as deadline(System.currentTimeMillis() + unit.toMillis(timeout)).

      Example

      action.timeout(10, TimeUnit.SECONDS) // 10 seconds from now
            .queueAfter(20, SECONDS); // request will not be executed within deadline and timeout immediately after 20 seconds
      
      Specified by:
      timeout in interface AuditableRestAction<PermissionOverride>
      Specified by:
      timeout in interface RestAction<PermissionOverride>
      Parameters:
      timeout - The timeout to use
      unit - Unit for the timeout value
      Returns:
      The same RestAction instance with the applied timeout
      See Also:
    • deadline

      @Nonnull @CheckReturnValue PermissionOverrideAction deadline(long timestamp)
      Description copied from interface: AuditableRestAction
      Similar to RestAction.timeout(long, TimeUnit) but schedules a deadline at which the request has to be completed.
      If the deadline is reached, the request will fail with a TimeoutException.

      This does not mean that the request will immediately timeout when the deadline is reached. JDA will check the deadline right before executing the request or within intervals in a worker thread. This only means the request will timeout if the deadline has passed.

      Example

      action.deadline(System.currentTimeMillis() + 10000) // 10 seconds from now
            .queueAfter(20, SECONDS); // request will not be executed within deadline and timeout immediately after 20 seconds
      
      Specified by:
      deadline in interface AuditableRestAction<PermissionOverride>
      Specified by:
      deadline in interface RestAction<PermissionOverride>
      Parameters:
      timestamp - Millisecond timestamp at which the request will timeout
      Returns:
      The same RestAction with the applied deadline
      See Also:
    • reset

      @Nonnull @CheckReturnValue default PermissionOverrideAction reset()
      Shortcut for resetAllow().resetDeny().
      The permission override will be empty after this operation
      Returns:
      The current PermissionOverrideAction for chaining convenience
    • resetAllow

      @Nonnull @CheckReturnValue PermissionOverrideAction resetAllow()
      Resets the allowed permissions to the current original value.
      For a new override this will just be 0.
      Returns:
      The current PermissionOverrideAction for chaining convenience
    • resetDeny

      @Nonnull @CheckReturnValue PermissionOverrideAction resetDeny()
      Resets the denied permissions to the current original value.
      For a new override this will just be 0.
      Returns:
      The current PermissionOverrideAction for chaining convenience
    • getChannel

      @Nonnull IPermissionContainer getChannel()
      The IPermissionContainer this will be created in
      Returns:
      The channel
    • getRole

      @Nullable Role getRole()
      The Role for this override
      Returns:
      The role, or null if this is a member override
    • getMember

      @Nullable Member getMember()
      The Member for this override
      Returns:
      The member, or null if this is a role override
    • getGuild

      @Nonnull default Guild getGuild()
      The Guild for this override
      Returns:
      The guild
    • getAllowed

      long getAllowed()
      The currently set of allowed permission bits.
      This value represents all granted permissions in the raw bitwise representation.

      Use getAllowedPermissions() to retrieve a List with Permissions for this value

      Returns:
      long value of granted permissions
    • getAllowedPermissions

      @Nonnull default EnumSet<Permission> getAllowedPermissions()
      Set of Permissions that would be granted by the PermissionOverride that is created by this action.
      Changes to the returned set do not affect this entity directly.
      Returns:
      set of granted Permissions
    • getDenied

      long getDenied()
      The currently set of denied permission bits.
      This value represents all denied permissions in the raw bitwise representation.

      Use getDeniedPermissions() to retrieve a List with Permissions for this value

      Returns:
      long value of denied permissions
    • getDeniedPermissions

      @Nonnull default EnumSet<Permission> getDeniedPermissions()
      Set of Permissions that would be denied by the PermissionOverride that is created by this action.
      Changes to the returned set do not affect this entity directly.
      Returns:
      set of denied Permissions
    • getInherited

      long getInherited()
      The currently set of inherited permission bits.
      This value represents all permissions that are not explicitly allowed or denied in their raw bitwise representation.
      Inherited Permissions are permissions that are defined by other rules from maybe other PermissionOverrides or a Role.

      Use getInheritedPermissions() to retrieve a List with Permissions for this value

      Returns:
      long value of inherited permissions
    • getInheritedPermissions

      @Nonnull default EnumSet<Permission> getInheritedPermissions()
      Set of Permissions that would be inherited from other permission holders.
      Permissions returned are not explicitly granted or denied!
      Changes to the returned set do not affect this entity directly.
      Returns:
      set of inherited Permissions
      See Also:
    • isMember

      boolean isMember()
      Whether this Action will create a PermissionOverride for a Member or not
      Returns:
      True, if this is targeting a Member If this is false it is targeting a Role. (isRole())
    • isRole

      boolean isRole()
      Whether this Action will create a PermissionOverride for a Role or not
      Returns:
      True, if this is targeting a Role. If this is false it is targeting a Member. (isMember())
    • setAllowed

      @Nonnull @CheckReturnValue PermissionOverrideAction setAllowed(long allowBits)
      Sets the value of explicitly granted permissions using the bitwise representation of a set of Permissions.
      This value can be retrieved through Permissions.getRaw(Permission...)!
      Note: Permissions not marked as isChannel() will have no affect!

      All newly granted permissions will be removed from the currently set denied permissions.
      allow = allowBits; deny = deny & ~allowBits;

      Parameters:
      allowBits - The positive bits representing the granted permissions for the new PermissionOverride
      Returns:
      The current PermissionOverrideAction - for chaining convenience
      Throws:
      InsufficientPermissionException - If the currently logged in account does not have Permission.MANAGE_PERMISSIONS on the channel and tries to set permissions it does not have in the channel
      See Also:
    • setAllowed

      @Nonnull @CheckReturnValue default PermissionOverrideAction setAllowed(@Nullable Collection<Permission> permissions)
      Sets the value of explicitly granted permissions using a Collection of Permissions.
      Note: Permissions not marked as isChannel() will have no affect!

      Example: setAllow(EnumSet.of(Permission.VIEW_CHANNEL))

      Parameters:
      permissions - The Collection of Permissions representing the granted permissions for the new PermissionOverride.
      If the provided value is null the permissions are reset to the default of none
      Returns:
      The current PermissionOverrideAction - for chaining convenience
      Throws:
      IllegalArgumentException - If the any of the specified Permissions is null
      InsufficientPermissionException - If the currently logged in account does not have Permission.MANAGE_PERMISSIONS on the channel and tries to set permissions it does not have in the channel
      See Also:
    • setAllowed

      @Nonnull @CheckReturnValue default PermissionOverrideAction setAllowed(@Nullable Permission... permissions)
      Sets the value of explicitly granted permissions using a set of Permissions.
      Note: Permissions not marked as isChannel() will have no affect!
      Parameters:
      permissions - The Permissions representing the granted permissions for the new PermissionOverride.
      If the provided value is null the permissions are reset to the default of none
      Returns:
      The current PermissionOverrideAction - for chaining convenience
      Throws:
      IllegalArgumentException - If the any of the specified Permissions is null
      InsufficientPermissionException - If the currently logged in account does not have Permission.MANAGE_PERMISSIONS on the channel and tries to set permissions it does not have in the channel
    • grant

      @Nonnull @CheckReturnValue PermissionOverrideAction grant(long allowBits)
      Grants the specified permissions.
      This does not override already granted permissions.
      Parameters:
      allowBits - The permissions to grant, in addition to already allowed permissions
      Returns:
      The current PermissionOverrideAction - for chaining convenience
      Throws:
      InsufficientPermissionException - If the currently logged in account does not have Permission.MANAGE_PERMISSIONS on the channel and tries to set permissions it does not have in the channel
    • grant

      @Nonnull @CheckReturnValue default PermissionOverrideAction grant(@Nonnull Collection<Permission> permissions)
      Grants the specified permissions.
      This does not override already granted permissions.
      Parameters:
      permissions - The permissions to grant, in addition to already allowed permissions
      Returns:
      The current PermissionOverrideAction - for chaining convenience
      Throws:
      InsufficientPermissionException - If the currently logged in account does not have Permission.MANAGE_PERMISSIONS on the channel and tries to set permissions it does not have in the channel
      IllegalArgumentException - If any provided argument is null
    • grant

      @Nonnull @CheckReturnValue default PermissionOverrideAction grant(@Nonnull Permission... permissions)
      Grants the specified permissions.
      This does not override already granted permissions.
      Parameters:
      permissions - The permissions to grant, in addition to already allowed permissions
      Returns:
      The current PermissionOverrideAction - for chaining convenience
      Throws:
      InsufficientPermissionException - If the currently logged in account does not have Permission.MANAGE_PERMISSIONS on the channel and tries to set permissions it does not have in the channel
      IllegalArgumentException - If any provided argument is null
    • setDenied

      @Nonnull @CheckReturnValue PermissionOverrideAction setDenied(long denyBits)
      Sets the value of explicitly denied permissions using the bitwise representation of a set of Permissions.
      This value can be retrieved through Permissions.getRaw(Permission...)!
      Note: Permissions not marked as isChannel() will have no affect!

      All newly denied permissions will be removed from the currently set allowed permissions.
      deny = denyBits; allow = allow & ~denyBits;

      Parameters:
      denyBits - The positive bits representing the denied permissions for the new PermissionOverride
      Returns:
      The current PermissionOverrideAction - for chaining convenience
      Throws:
      InsufficientPermissionException - If the currently logged in account does not have Permission.MANAGE_PERMISSIONS on the channel and tries to set permissions it does not have in the channel
      See Also:
    • setDenied

      @Nonnull @CheckReturnValue default PermissionOverrideAction setDenied(@Nullable Collection<Permission> permissions)
      Sets the value of explicitly denied permissions using a Collection of Permissions.
      Note: Permissions not marked as isChannel() will have no affect!

      Example: setDeny(EnumSet.of(Permission.MESSAGE_SEND, Permission.MESSAGE_EXT_EMOJI))

      Parameters:
      permissions - The Collection of Permissions representing the denied permissions for the new PermissionOverride.
      If the provided value is null the permissions are reset to the default of none
      Returns:
      The current PermissionOverrideAction - for chaining convenience
      Throws:
      IllegalArgumentException - If the any of the specified Permissions is null
      InsufficientPermissionException - If the currently logged in account does not have Permission.MANAGE_PERMISSIONS on the channel and tries to set permissions it does not have in the channel
      See Also:
    • setDenied

      @Nonnull @CheckReturnValue default PermissionOverrideAction setDenied(@Nullable Permission... permissions)
      Sets the value of explicitly denied permissions using a set of Permissions.
      Note: Permissions not marked as isChannel() will have no affect!
      Parameters:
      permissions - The Permissions representing the denied permissions for the new PermissionOverride.
      If the provided value is null the permissions are reset to the default of none
      Returns:
      The current PermissionOverrideAction - for chaining convenience
      Throws:
      InsufficientPermissionException - If the currently logged in account does not have Permission.MANAGE_PERMISSIONS on the channel and tries to set permissions it does not have in the channel
      IllegalArgumentException - If the any of the specified Permissions is null
    • deny

      @Nonnull @CheckReturnValue PermissionOverrideAction deny(long denyBits)
      Denies the specified permissions.
      This does not override already denied permissions.
      Parameters:
      denyBits - The permissions to deny, in addition to already denied permissions
      Returns:
      The current PermissionOverrideAction - for chaining convenience
      Throws:
      InsufficientPermissionException - If the currently logged in account does not have Permission.MANAGE_PERMISSIONS on the channel and tries to set permissions it does not have in the channel
    • deny

      @Nonnull @CheckReturnValue default PermissionOverrideAction deny(@Nonnull Collection<Permission> permissions)
      Denies the specified permissions.
      This does not override already denied permissions.
      Parameters:
      permissions - The permissions to deny, in addition to already denied permissions
      Returns:
      The current PermissionOverrideAction - for chaining convenience
      Throws:
      InsufficientPermissionException - If the currently logged in account does not have Permission.MANAGE_PERMISSIONS on the channel and tries to set permissions it does not have in the channel
      IllegalArgumentException - If any provided argument is null
    • deny

      @Nonnull @CheckReturnValue default PermissionOverrideAction deny(@Nonnull Permission... permissions)
      Denies the specified permissions.
      This does not override already denied permissions.
      Parameters:
      permissions - The permissions to deny, in addition to already denied permissions
      Returns:
      The current PermissionOverrideAction - for chaining convenience
      Throws:
      InsufficientPermissionException - If the currently logged in account does not have Permission.MANAGE_PERMISSIONS on the channel and tries to set permissions it does not have in the channel
      IllegalArgumentException - If any provided argument is null
    • clear

      @Nonnull @CheckReturnValue PermissionOverrideAction clear(long inheritedBits)
      Clears the provided Permissions bits from the PermissionOverride.
      This will cause the provided Permissions to be inherited from other overrides or roles.
      Parameters:
      inheritedBits - The permissions to clear from the PermissionOverride
      Returns:
      The current PermissionOverrideAction - for chaining convenience
      Throws:
      InsufficientPermissionException - If the currently logged in account does not have Permission.MANAGE_PERMISSIONS on the channel and tries to set permissions it does not have in the channel
    • clear

      @Nonnull @CheckReturnValue default PermissionOverrideAction clear(@Nonnull Collection<Permission> permissions)
      Clears the provided Permissions bits from the PermissionOverride.
      This will cause the provided Permissions to be inherited
      Parameters:
      permissions - The permissions to clear from the PermissionOverride
      Returns:
      The current PermissionOverrideAction - for chaining convenience
      Throws:
      InsufficientPermissionException - If the currently logged in account does not have Permission.MANAGE_PERMISSIONS on the channel and tries to set permissions it does not have in the channel
      IllegalArgumentException - If any provided argument is null
    • clear

      @Nonnull @CheckReturnValue default PermissionOverrideAction clear(@Nonnull Permission... permissions)
      Clears the provided Permissions bits from the PermissionOverride.
      This will cause the provided Permissions to be inherited
      Parameters:
      permissions - The permissions to clear from the PermissionOverride
      Returns:
      The current PermissionOverrideAction - for chaining convenience
      Throws:
      InsufficientPermissionException - If the currently logged in account does not have Permission.MANAGE_PERMISSIONS on the channel and tries to set permissions it does not have in the channel
      IllegalArgumentException - If any provided argument is null
    • setPermissions

      @Nonnull @CheckReturnValue PermissionOverrideAction setPermissions(long allowBits, long denyBits)
      Combination of setAllowed(long) and setDenied(long)
      First sets the allow bits and then the deny bits.
      Parameters:
      allowBits - An unsigned bitwise representation of granted Permissions
      denyBits - An unsigned bitwise representation of denied Permissions
      Returns:
      The current PermissionOverrideAction - for chaining convenience
      Throws:
      InsufficientPermissionException - If the currently logged in account does not have Permission.MANAGE_PERMISSIONS on the channel and tries to set permissions it does not have in the channel
      See Also:
    • setPermissions

      @Nonnull @CheckReturnValue default PermissionOverrideAction setPermissions(@Nullable Collection<Permission> grantPermissions, @Nullable Collection<Permission> denyPermissions)
      Combination of setAllowed(java.util.Collection) and setDenied(java.util.Collection)
      First sets the granted permissions and then the denied permissions.
      If a passed collection is null it resets the represented value to 0 - no permission specifics.

      Example: setPermissions(EnumSet.of(Permission.VIEW_CHANNEL), EnumSet.of(Permission.MESSAGE_SEND, Permission.MESSAGE_EXT_EMOJI))

      Parameters:
      grantPermissions - A Collection of Permissions representing all explicitly granted Permissions for the PermissionOverride
      denyPermissions - A Collection of Permissions representing all explicitly denied Permissions for the PermissionOverride
      Returns:
      The current PermissionOverrideAction - for chaining convenience
      Throws:
      IllegalArgumentException - If the any of the specified Permissions is null
      InsufficientPermissionException - If the currently logged in account does not have Permission.MANAGE_PERMISSIONS on the channel and tries to set permissions it does not have in the channel
      See Also: