Class PermissionUtil
- java.lang.Object
-
- net.dv8tion.jda.core.utils.PermissionUtil
-
public class PermissionUtil extends java.lang.Object
-
-
Constructor Summary
Constructors Constructor Description PermissionUtil()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static boolean
canInteract(Member issuer, Emote emote)
static boolean
canInteract(Member issuer, Member target)
Checks if one given Member can interact with a 2nd given Member - in a permission sense (kick/ban/modify perms).static boolean
canInteract(Member issuer, Role target)
Checks if a given Member can interact with a given Role - in a permission sense (kick/ban/modify perms).static boolean
canInteract(Role issuer, Role target)
Checks if one given Role can interact with a 2nd given Role - in a permission sense (kick/ban/modify perms).static boolean
canInteract(User issuer, Emote emote, MessageChannel channel)
static boolean
canInteract(User issuer, Emote emote, MessageChannel channel, boolean botOverride)
static boolean
checkPermission(Channel channel, Member member, Permission... permissions)
static boolean
checkPermission(Member member, Permission... permissions)
static long
getEffectivePermission(Channel channel, Member member)
static long
getEffectivePermission(Channel channel, Role role)
static long
getEffectivePermission(Member member)
static long
getExplicitPermission(Channel channel, Member member)
static long
getExplicitPermission(Channel channel, Role role)
static long
getExplicitPermission(Member member)
-
-
-
Method Detail
-
canInteract
public static boolean canInteract(Member issuer, Member target)
Checks if one given Member can interact with a 2nd given Member - in a permission sense (kick/ban/modify perms). This only checks the Role-Position and does not check the actual permission (kick/ban/manage_role/...)- Parameters:
issuer
- The member that tries to interact with 2nd membertarget
- The member that is the target of the interaction- Returns:
- True, if issuer can interact with target in guild
- Throws:
java.lang.IllegalArgumentException
- if any of the provided parameters isnull
or the provided entities are not from the same guild
-
canInteract
public static boolean canInteract(Member issuer, Role target)
Checks if a given Member can interact with a given Role - in a permission sense (kick/ban/modify perms). This only checks the Role-Position and does not check the actual permission (kick/ban/manage_role/...)- Parameters:
issuer
- The member that tries to interact with the roletarget
- The role that is the target of the interaction- Returns:
- True, if issuer can interact with target
- Throws:
java.lang.IllegalArgumentException
- if any of the provided parameters isnull
or the provided entities are not from the same guild
-
canInteract
public static boolean canInteract(Role issuer, Role target)
Checks if one given Role can interact with a 2nd given Role - in a permission sense (kick/ban/modify perms). This only checks the Role-Position and does not check the actual permission (kick/ban/manage_role/...)- Parameters:
issuer
- The role that tries to interact with 2nd roletarget
- The role that is the target of the interaction- Returns:
- True, if issuer can interact with target
- Throws:
java.lang.IllegalArgumentException
- if any of the provided parameters isnull
or the provided entities are not from the same guild
-
canInteract
public static boolean canInteract(Member issuer, Emote emote)
Check whether the providedMember
can use the specifiedEmote
.If the specified Member is not in the emote's guild or the emote provided is fake this will return false. Otherwise it will check if the emote is restricted to any roles and if that is the case if the Member has one of these.
In the case of an
animated
Emote, this will check if the issuer is the currently logged in account, and then check if the account hasnitro
, and return false if it doesn't.
For other accounts, this method will not take into account whether the emote is animated, as there is no real way to check if the Member can interact with them.
Note: This is not checking if the issuer owns the Guild or not.- Parameters:
issuer
- The member that tries to interact with the Emoteemote
- The emote that is the target interaction- Returns:
- True, if the issuer can interact with the emote
- Throws:
java.lang.IllegalArgumentException
- if any of the provided parameters isnull
or the provided entities are not from the same guild
-
canInteract
public static boolean canInteract(User issuer, Emote emote, MessageChannel channel, boolean botOverride)
- Parameters:
issuer
- The user that tries to interact with the Emoteemote
- The emote that is the target interactionchannel
- The MessageChannel this emote should be interacted withinbotOverride
- Whether bots can use non-managed emotes in other guilds- Returns:
- True, if the issuer can interact with the emote within the specified MessageChannel
- Throws:
java.lang.IllegalArgumentException
- if any of the provided parameters isnull
or the provided entities are not from the same guild
-
canInteract
public static boolean canInteract(User issuer, Emote emote, MessageChannel channel)
- Parameters:
issuer
- The user that tries to interact with the Emoteemote
- The emote that is the target interactionchannel
- The MessageChannel this emote should be interacted within- Returns:
- True, if the issuer can interact with the emote within the specified MessageChannel
- Throws:
java.lang.IllegalArgumentException
- if any of the provided parameters isnull
or the provided entities are not from the same guild
-
checkPermission
public static boolean checkPermission(Member member, Permission... permissions)
Checks to see if theMember
has the specifiedPermissions
in the specifiedGuild
. This method properly deals with Owner status.Note: this is based on effective permissions, not literal permissions. If a member has permissions that would enable them to do something without the literal permission to do it, this will still return true.
Example: If a member has thePermission.ADMINISTRATOR
permission, they will be able toPermission.MANAGE_SERVER
as well, even without the literal permissions.- Parameters:
member
- TheMember
whose permissions are being checked.permissions
- ThePermissions
being checked for.- Returns:
- True -
if the
Member
effectively has the specifiedPermissions
. - Throws:
java.lang.IllegalArgumentException
- if any of the provided parameters is null
-
checkPermission
public static boolean checkPermission(Channel channel, Member member, Permission... permissions)
Checks to see if theMember
has the specifiedPermissions
in the specifiedChannel
. This method properly deals withPermissionOverrides
and Owner status.Note: this is based on effective permissions, not literal permissions. If a member has permissions that would enable them to do something without the literal permission to do it, this will still return true.
Example: If a member has thePermission.ADMINISTRATOR
permission, they will be able toPermission.MESSAGE_WRITE
in every channel.- Parameters:
member
- TheMember
whose permissions are being checked.channel
- TheChannel
being checked.permissions
- ThePermissions
being checked for.- Returns:
- True -
if the
Member
effectively has the specifiedPermissions
. - Throws:
java.lang.IllegalArgumentException
- if any of the provided parameters isnull
or the provided entities are not from the same guild
-
getEffectivePermission
public static long getEffectivePermission(Member member)
Gets thelong
representation of the effective permissions allowed for thisMember
in thisGuild
. This can be used in conjunction withPermission.getPermissions(int)
to easily get a list of allPermissions
that this member has in thisGuild
.This only returns the Guild-level permissions!
- Parameters:
member
- TheMember
whose permissions are being checked.- Returns:
- The
long
representation of the literal permissions that thisMember
has in thisGuild
. - Throws:
java.lang.IllegalArgumentException
- if any of the provided parameters isnull
or the provided entities are not from the same guild
-
getEffectivePermission
public static long getEffectivePermission(Channel channel, Member member)
Gets thelong
representation of the effective permissions allowed for thisMember
in thisChannel
. This can be used in conjunction withPermission.getPermissions(long)
to easily get a list of allPermissions
that this member can use in thisChannel
.
This functions very similarly to howRole.getPermissionsRaw()
.- Parameters:
channel
- TheChannel
being checked.member
- TheMember
whose permissions are being checked.- Returns:
- The
long
representation of the effective permissions that thisMember
has in thisChannel
. - Throws:
java.lang.IllegalArgumentException
- if any of the provided parameters isnull
or the provided entities are not from the same guild
-
getEffectivePermission
public static long getEffectivePermission(Channel channel, Role role)
Gets thelong
representation of the effective permissions allowed for thisRole
in thisChannel
. This can be used in conjunction withPermission.getPermissions(long)
to easily get a list of allPermissions
that this role can use in thisChannel
.- Parameters:
channel
- TheChannel
in which permissions are being checked.role
- TheRole
whose permissions are being checked.- Returns:
- The
long
representation of the effective permissions that thisRole
has in thisChannel
- Throws:
java.lang.IllegalArgumentException
- if any of the provided parameters isnull
or the provided entities are not from the same guild
-
getExplicitPermission
public static long getExplicitPermission(Member member)
Retrieves the explicit permissions of the specifiedMember
in its hostingGuild
.
This method does not calculate the owner in.All permissions returned are explicitly granted to this Member via its
Roles
.
Permissions likePermission.ADMINISTRATOR
do not grant other permissions in this value.- Parameters:
member
- The non-nullMember
for which to get implicit permissions- Returns:
- Primitive (unsigned) long value with the implicit permissions of the specified member
- Throws:
java.lang.IllegalArgumentException
- If the specified member isnull
- Since:
- 3.1
-
getExplicitPermission
public static long getExplicitPermission(Channel channel, Member member)
Retrieves the explicit permissions of the specifiedMember
in its hostingGuild
and specificChannel
.
This method does not calculate the owner in. Allowed permissions override denied permissions ofPermissionOverrides
!All permissions returned are explicitly granted to this Member via its
Roles
.
Permissions likePermission.ADMINISTRATOR
do not grant other permissions in this value.This factor in all
PermissionOverrides
that affect this member and only grants the ones that are explicitly given.- Parameters:
channel
- The target channel of which to checkPermissionOverrides
member
- The non-nullMember
for which to get implicit permissions- Returns:
- Primitive (unsigned) long value with the implicit permissions of the specified member in the specified channel
- Throws:
java.lang.IllegalArgumentException
- If any of the arguments isnull
or the specified entities are not from the sameGuild
- Since:
- 3.1
-
getExplicitPermission
public static long getExplicitPermission(Channel channel, Role role)
Retrieves the explicit permissions of the specifiedRole
in its hostingGuild
and specificChannel
.
Allowed permissions override denied permissions ofPermissionOverrides
!All permissions returned are explicitly granted to this Role.
Permissions likePermission.ADMINISTRATOR
do not grant other permissions in this value.This factor in existing
PermissionOverrides
if possible.- Parameters:
channel
- The target channel of which to checkPermissionOverrides
role
- The non-nullRole
for which to get implicit permissions- Returns:
- Primitive (unsigned) long value with the implicit permissions of the specified role in the specified channel
- Throws:
java.lang.IllegalArgumentException
- If any of the arguments isnull
or the specified entities are not from the sameGuild
- Since:
- 3.1
-
-