👥Guild Member

Prototypes from GuildMember

Checking if a MemberA is manageable by MemberB

discord.js
function isManageableBy(memberA, memberB) {
  if (memberA.id === memberA.guild.ownerId) return false;
  if (memberA.id === memberB.id) return false;
  if (memberA.guild.ownerId === memberB.id) return true;
  return memberB.roles.highest.comparePositionTo(memberA.roles.highest) > 0;
}

isManageableBy(MemberA, MemberB);
djs-protofy
MemberA.manageableBy(MemberB);

Checking if a MemberA is bannable by MemberB

discord.js
function isManageableBy(memberA, memberB) {
  // above code...
}

function isBannableBy(MemberA, MemberB) {
  return isManageableBy(MemberA, MemberB)
    && MemberB.permissions.has(PermissionFlagsBits.BanMembers);
}

isBannableBy(MemberA, MemberB);
djs-protofy
MemberA.bannableBy(MemberB);

Checking if a MemberA is kickable by MemberB

discord.js
function isManageableBy(memberA, memberB) {
  // above code...
}

function isKickableBy(MemberA, MemberB) {
  return isManageableBy(MemberA, MemberB) &&
     MemberB.permissions.has(PermissionFlagsBits.KickMembers);
}

isKickableBy(MemberA, MemberB);
djs-protofy
MemberA.kickableBy(MemberB);

Checking if a MemberA is moderatable by MemberB

discord.js
function isManageableBy(memberA, memberB) {
  // above code...
}

function isModerateBy(MemberA, MemberB) {
  return (
    !MemberA.permissions.has(PermissionFlagsBits.Administrator) &&
    isManageableBy(memberA, memberB) &&
    MemberB.permissions.has(PermissionFlagsBits.ModerateMembers)
  );
}

isModerateBy(MemberA, MemberB);
djs-protofy
MemberA.moderatableBy(MemberB);

Last updated