UNPKG

guilded.ts

Version:

A powerful NPM module that allows you to easily interact with the Guilded API.

144 lines 4.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ServerMember = void 0; const Base_1 = require("../Base"); const User_1 = require("../User"); const ServerMemberRoleManager_1 = require("../../managers/server/ServerMemberRoleManager"); const collection_1 = require("@discordjs/collection"); /** * Represents a server member on Guilded. * @example new ServerMember(server, rawMember); */ class ServerMember extends Base_1.Base { server; raw; /** The user the server member belongs to. */ user; /** The IDs of roles the server member has. */ roleIds; /** The nickname of the server member. */ nickname; /** The date the member joined the server. */ joinedAt; /** Whether the server member is the server owner. */ isOwner; /** The social links of the server member. */ socialLinks = new collection_1.Collection(); /** The manager of roles that belong to the server member. */ roles; /** * @param server The server the member belongs to. * @param raw The raw data of the server member. * @param cache Whether to cache the server member. */ constructor(server, raw, cache = server.client.options.cacheServerMembers ?? true) { super(server.client, raw.user.id); this.server = server; this.raw = raw; this.roles = new ServerMemberRoleManager_1.ServerMemberRoleManager(this); this.user = new User_1.User(this.client, raw.user); this.roleIds = raw.roleIds; this.nickname = 'nickname' in raw ? raw.nickname : undefined; this.joinedAt = 'joinedAt' in raw ? new Date(raw.joinedAt) : undefined; this.isOwner = 'isOwner' in raw ? raw.isOwner : undefined; if (cache) server.members.cache.set(this.id, this); } /** Whether the server member is cached. */ get isCached() { return this.server.members.cache.has(this.id); } /** The timestamp the member joined the server. */ get joinedTimestamp() { return this.joinedAt?.getTime(); } /** * Fetch the server member. * @param options The options to fetch the server member with. * @returns The fetched server member. * @example member.fetch(); */ fetch(options) { return this.server.members.fetch(this, options); } /** * Set the nickname of the server member. * @param nickname The nickname of the server member. * @returns The edited server member. * @example member.setNickname('new nickname'); */ async setNickname(nickname) { await this.server.members.setNickname(this, nickname); return this; } /** * Remove the nickname of the server member. * @returns The edited server member. * @example member.removeNickname(); */ async removeNickname() { await this.server.members.removeNickname(this); return this; } /** * Kick the server member. * @returns The kicked member. * @example member.kick(); */ async kick() { await this.server.members.kick(this); return this; } /** * Ban the server member. * @param reason The reason of the ban. * @returns The created server ban. * @example member.ban(); */ ban(reason) { return this.server.members.ban(this, reason); } /** * Unban the server member. * @returns The unbanned member. * @example member.unban(); */ async unban() { await this.server.members.unban(this); return this; } /** * Award XP to the server member. * @param amount The amount of XP to award. * @returns The total amount of XP the server member has. * @example member.awardXp(100); */ awardXp(amount) { return this.server.members.awardXp(this, amount); } /** * Set XP of the server member. * @param amount The total XP of the server member. * @returns The total amount of XP the server member has. * @example member.setXp(100); */ setXp(amount) { return this.server.members.setXp(this, amount); } /** * Fetch a social link of the server member. * @param type The type of social link to fetch. * @returns The fetched social link. * @example member.fetchSocialLink('youtube'); */ async fetchSocialLink(type) { let socialLink = this.socialLinks.get(type); if (socialLink) return socialLink; socialLink = await this.server.members.fetchSocialLink(this, type); this.socialLinks.set(socialLink.type, socialLink); return socialLink; } } exports.ServerMember = ServerMember; //# sourceMappingURL=ServerMember.js.map