All checks were successful
Deploy to Dokku / docker (ubuntu-latest) (push) Successful in 2m2s
85 lines
2.7 KiB
Java
85 lines
2.7 KiB
Java
package cc.fascinated.bat.common;
|
|
|
|
import cc.fascinated.bat.model.BatGuild;
|
|
import lombok.experimental.UtilityClass;
|
|
import net.dv8tion.jda.api.Permission;
|
|
import net.dv8tion.jda.api.entities.Member;
|
|
import net.dv8tion.jda.api.entities.Role;
|
|
|
|
import java.awt.*;
|
|
import java.util.EnumSet;
|
|
|
|
/**
|
|
* @author Fascinated (fascinated7)
|
|
*/
|
|
@UtilityClass
|
|
public class RoleUtils {
|
|
/**
|
|
* Checks if a member has permission to give the role to another member
|
|
*
|
|
* @param guild the guild to check
|
|
* @param member the member to check
|
|
* @param role the role to check
|
|
* @return if the member has permission to give the role
|
|
*/
|
|
public static boolean hasPermissionToGiveRole(BatGuild guild, Member member, Role role) {
|
|
return member.getRoles().stream().anyMatch(r -> r.getPosition() > role.getPosition());
|
|
}
|
|
|
|
/**
|
|
* Checks if a member has a higher role than the specified role
|
|
*
|
|
* @param member the member to check
|
|
* @param targetMember the member to check against
|
|
* @return if the member has a higher role
|
|
*/
|
|
public static boolean hasHigherRole(Member member, Member targetMember) {
|
|
return member.getRoles().stream().anyMatch(r -> targetMember.getRoles().stream().anyMatch(tr -> tr.getPosition() < r.getPosition()));
|
|
}
|
|
|
|
/**
|
|
* Gets the formatted permissions of a role
|
|
*
|
|
* @param role the role to get the formatted permissions of
|
|
* @return the formatted permissions
|
|
*/
|
|
public String getFormattedPermissions(Role role) {
|
|
StringBuilder formattedPermissions = new StringBuilder();
|
|
EnumSet<Permission> permissions = role.getPermissions();
|
|
if (permissions.isEmpty()) {
|
|
return "`None`";
|
|
}
|
|
for (Permission permission : permissions) {
|
|
formattedPermissions.append("`").append(permission.getName()).append("`, ");
|
|
}
|
|
return formattedPermissions.substring(0, formattedPermissions.length() - 2);
|
|
}
|
|
|
|
/**
|
|
* Gets the formatted color of a role
|
|
*
|
|
* @param color the color string to get the formatted color of
|
|
* @return the formatted color
|
|
*/
|
|
public String getFormattedColor(Color color) {
|
|
if (color == null) {
|
|
return "Default";
|
|
}
|
|
String colorHex = HexColorUtils.colorToHex(color);
|
|
return "`%s` *[(view)](%s)*".formatted(
|
|
colorHex,
|
|
"https://www.colorhexa.com/%s".formatted(colorHex.substring(1))
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Gets the formatted color of a role
|
|
*
|
|
* @param role the role to get the formatted icon of
|
|
* @return the formatted icon
|
|
*/
|
|
public String getFormattedColor(Role role) {
|
|
return getFormattedColor(role.getColor());
|
|
}
|
|
}
|