canInteract static method

bool canInteract(
  1. {IMember? issueMember,
  2. IRole? issueRole,
  3. IMember? targetMember,
  4. IRole? targetRole}
)

Allows to check if issueMember or issueRole can interact with targetMember or targetRole.

Implementation

static bool canInteract({IMember? issueMember, IRole? issueRole, IMember? targetMember, IRole? targetRole}) {
  bool canInter(IRole role1, IRole role2) => role1.position > role2.position;

  if (issueMember != null && targetMember != null) {
    if (issueMember.guild != targetMember.guild) {
      return false;
    }

    return canInter(PermissionsUtils.getMemberHighestRole(issueMember), PermissionsUtils.getMemberHighestRole(targetMember));
  }

  if (issueMember != null && targetRole != null) {
    if (issueMember.guild != targetRole.guild) {
      return false;
    }

    return canInter(PermissionsUtils.getMemberHighestRole(issueMember), targetRole);
  }

  if (issueRole != null && targetRole != null) {
    if (issueRole.guild != targetRole.guild) return false;

    return canInter(issueRole, targetRole);
  }

  return false;
}