guilded.ts
Version:
A powerful NPM module that allows you to easily interact with the Guilded API.
144 lines • 4.78 kB
JavaScript
"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