canInteract static method

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

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

Implementation

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

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

    return canInter(issueMember.highestRole, targetMember.highestRole);
  }

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

    return canInter(issueMember.highestRole, targetRole);
  }

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

    return canInter(issueRole, targetRole);
  }

  return false;
}