From fcd09890e43c4bc2a8ea1431dbcee45ba4575433 Mon Sep 17 00:00:00 2001 From: Jan Date: Sat, 7 May 2022 19:40:10 +0200 Subject: [PATCH] feat: add utility flags to member object (#53) --- src/maps/Members.ts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/maps/Members.ts b/src/maps/Members.ts index 1fd4ddc5..07e72f4a 100644 --- a/src/maps/Members.ts +++ b/src/maps/Members.ts @@ -39,6 +39,27 @@ export class Member { return this.client.servers.get(this._id.server); } + /** + * Whether the client has a higher rank than this member. + */ + get inferior() { + return (this.server?.member?.ranking ?? Infinity) < this.ranking; + } + + /** + * Whether the client can kick this user. + */ + get kickable() { + return this.server?.havePermission('KickMembers') && this.inferior; + } + + /** + * Whether the client can ban this user. + */ + get bannable() { + return this.server?.havePermission('BanMembers') && this.inferior; + } + constructor(client: Client, data: MemberI) { this.client = client; this._id = data._id; @@ -183,6 +204,15 @@ export class Member { ...permission.map((x) => Permission[x]), ); } + + /** + * Checks whether the target member has a higher rank than this member. + * @param target The member to compare against + * @returns Whether this member is inferior to the target + */ + @computed inferiorTo(target: Member) { + return target.ranking < this.ranking; + } } export default class Members extends Collection {