UNPKG

oceanic.js

Version:

A NodeJS library for interfacing with Discord.

196 lines 16.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); /** @module Invite */ const Channel_1 = tslib_1.__importDefault(require("./Channel")); const PartialApplication_1 = tslib_1.__importDefault(require("./PartialApplication")); const InviteGuild_1 = tslib_1.__importDefault(require("./InviteGuild")); /** Represents an invite. */ class Invite { _cachedChannel; /** The approximate number of total members in the guild this invite leads to. */ approximateMemberCount; /** The approximate number of online members in the guild this invite leads to. */ approximatePresenceCount; /** The ID of the channel this invite leads to. */ channelID; client; /** The code of this invite. */ code; /** When this invite was created. */ createdAt; /** The date at which this invite expires. */ expiresAt; /** This invite's [flags](https://discord.com/developers/docs/resources/invite#invite-object-invite-flags). */ flags; /** The guild this invite leads to or `null` if this invite leads to a Group DM. */ guild; /** The ID of the guild this invite leads to or `null` if this invite leads to a Group DM. */ guildID; /** The scheduled event associated with this invite. */ guildScheduledEvent; /** The user that created this invite. */ inviter; /** The time after which this invite expires. */ maxAge; /** The maximum number of times this invite can be used, */ maxUses; /** @deprecated The stage instance in the invite this channel is for. */ stageInstance; /** The embedded application this invite will open. */ targetApplication; /** The [target type](https://discord.com/developers/docs/resources/invite#invite-object-invite-target-types) of this invite. */ targetType; /** The user whose stream to display for this voice channel stream invite. */ targetUser; /** If this invite only grants temporary membership. */ temporary; /** The [type](https://discord.com/developers/docs/resources/invite#invite-object-invite-types) of this invite. */ type; /** The number of times this invite has been used. */ uses; constructor(data, client) { Object.defineProperty(this, "client", { value: client, enumerable: false, writable: false, configurable: false }); this.channelID = (data.channel_id ?? data.channel?.id) ?? null; this.code = data.code; this.flags = data.flags ?? 0; this.guild = null; this.guildID = data.guild?.id ?? null; this.expiresAt = (data.expires_at ? new Date(data.expires_at) : undefined); this.targetType = data.target_type; this.type = data.type; this.update(data); } update(data) { if (data.approximate_member_count !== undefined) { this.approximateMemberCount = data.approximate_member_count; } if (data.approximate_presence_count !== undefined) { this.approximatePresenceCount = data.approximate_presence_count; } if (data.flags !== undefined) { this.flags = data.flags; } let guild; if (data.guild) { if (this.guild === null) { this.guild = new InviteGuild_1.default(data.guild, this.client); } else { this.guild["update"](data.guild); } if (this.client.guilds.has(data.guild.id)) { this.client.guilds.update(data.guild); } } if (this.channelID === null) { this._cachedChannel = null; } else { let channel; channel = this.client.getChannel(this.channelID); if (data.channel !== undefined) { if (channel && channel instanceof Channel_1.default) { channel["update"](data.channel); } else { channel = data.channel; } } this._cachedChannel = channel; } if (data.inviter !== undefined) { this.inviter = this.client.users.update(data.inviter); } if (data.stage_instance !== undefined) { this.stageInstance = { members: data.stage_instance.members.map(member => this.client.util.updateMember(guild.id, member.user.id, member)), participantCount: data.stage_instance.participant_count, speakerCount: data.stage_instance.speaker_count, topic: data.stage_instance.topic }; } if (data.target_application !== undefined) { this.targetApplication = new PartialApplication_1.default(data.target_application, this.client); } if (data.guild_scheduled_event !== undefined) { this.guildScheduledEvent = guild.scheduledEvents.update(data.guild_scheduled_event); } if (data.target_user !== undefined) { this.targetUser = this.client.users.update(data.target_user); } if ("created_at" in data) { if (data.created_at !== undefined) { this.createdAt = new Date(data.created_at); } if (data.uses !== undefined) { this.uses = data.uses; } if (data.max_uses !== undefined) { this.maxUses = data.max_uses; } if (data.max_age !== undefined) { this.maxAge = data.max_age; } if (data.temporary !== undefined) { this.temporary = data.temporary; } } } /** The channel this invite leads to. If the channel is not cached, this will be a partial with only `id`, `name, and `type`. */ get channel() { if (this.channelID !== null) { if (this._cachedChannel instanceof Channel_1.default) { return this._cachedChannel; } const cachedChannel = this.client.getChannel(this.channelID); return cachedChannel ? (this._cachedChannel = cachedChannel) : this._cachedChannel; } return this._cachedChannel === null ? this._cachedChannel : (this._cachedChannel = null); } /** * Delete this invite. * @param reason The reason for deleting this invite. */ async deleteInvite(reason) { return this.client.rest.channels.deleteInvite(this.code, reason); } /** Whether this invite belongs to a cached channel. The only difference on using this method over a simple if statement is to easily update all the invite properties typing definitions based on the channel it belongs to. */ inCachedChannel() { return this.channel instanceof Channel_1.default; } toJSON() { return { approximateMemberCount: this.approximateMemberCount, approximatePresenceCount: this.approximatePresenceCount, channelID: this.channelID ?? undefined, code: this.code, createdAt: this.createdAt?.getTime(), expiresAt: this.expiresAt?.getTime(), guild: this.guild?.toJSON(), guildID: this.guildID ?? undefined, guildScheduledEvent: this.guildScheduledEvent?.toJSON(), inviter: this.inviter?.id, maxAge: this.maxAge, maxUses: this.maxUses, stageInstance: this.stageInstance ? { members: this.stageInstance.members.map(member => member.id), participantCount: this.stageInstance.participantCount, speakerCount: this.stageInstance.speakerCount, topic: this.stageInstance.topic } : undefined, targetApplication: this.targetApplication?.toJSON(), targetType: this.targetType, targetUser: this.targetUser?.id, temporary: this.temporary, uses: this.uses }; } } exports.default = Invite; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW52aXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3N0cnVjdHVyZXMvSW52aXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFCQUFxQjtBQUNyQixnRUFBZ0M7QUFJaEMsc0ZBQXNEO0FBQ3RELHdFQUF3QztBQWN4Qyw0QkFBNEI7QUFDNUIsTUFBcUIsTUFBTTtJQUNmLGNBQWMsQ0FBb0U7SUFDMUYsaUZBQWlGO0lBQ2pGLHNCQUFzQixDQUFVO0lBQ2hDLGtGQUFrRjtJQUNsRix3QkFBd0IsQ0FBVTtJQUNsQyxrREFBa0Q7SUFDbEQsU0FBUyxDQUFnQjtJQUN6QixNQUFNLENBQVU7SUFDaEIsK0JBQStCO0lBQy9CLElBQUksQ0FBUztJQUNiLG9DQUFvQztJQUNwQyxTQUFTLENBQStDO0lBQ3hELDZDQUE2QztJQUM3QyxTQUFTLENBQWlFO0lBQzFFLDhHQUE4RztJQUM5RyxLQUFLLENBQVM7SUFDZCxtRkFBbUY7SUFDbkYsS0FBSyxDQUFxQjtJQUMxQiw2RkFBNkY7SUFDN0YsT0FBTyxDQUFnQjtJQUN2Qix1REFBdUQ7SUFDdkQsbUJBQW1CLENBQXVCO0lBQzFDLHlDQUF5QztJQUN6QyxPQUFPLENBQVE7SUFDZixnREFBZ0Q7SUFDaEQsTUFBTSxDQUE2QztJQUNuRCwyREFBMkQ7SUFDM0QsT0FBTyxDQUE2QztJQUNwRCx3RUFBd0U7SUFDeEUsYUFBYSxDQUF1QjtJQUNwQyxzREFBc0Q7SUFDdEQsaUJBQWlCLENBQXNCO0lBQ3ZDLGdJQUFnSTtJQUNoSSxVQUFVLENBQXFCO0lBQy9CLDZFQUE2RTtJQUM3RSxVQUFVLENBQVE7SUFDbEIsdURBQXVEO0lBQ3ZELFNBQVMsQ0FBOEM7SUFDdkQsa0hBQWtIO0lBQ2xILElBQUksQ0FBYztJQUNsQixxREFBcUQ7SUFDckQsSUFBSSxDQUE2QztJQUNqRCxZQUFZLElBQXVDLEVBQUUsTUFBYztRQUMvRCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFR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