UNPKG

oceanic.js

Version:

A NodeJS library for interfacing with Discord.

119 lines 11.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); /** @module AutocompleteInteraction */ const Interaction_1 = tslib_1.__importDefault(require("./Interaction")); const Permission_1 = tslib_1.__importDefault(require("./Permission")); const GuildChannel_1 = tslib_1.__importDefault(require("./GuildChannel")); const Constants_1 = require("../Constants"); const InteractionOptionsWrapper_1 = tslib_1.__importDefault(require("../util/interactions/InteractionOptionsWrapper")); const Errors_1 = require("../util/Errors"); /** Represents an autocomplete interaction. */ class AutocompleteInteraction extends Interaction_1.default { _cachedChannel; _cachedGuild; /** The permissions the bot has in the channel this interaction was sent from. If in a dm/group dm, this will contain `ATTACH_FILES`, `EMBED_LINKS`, and `MENTION_EVERYONE`. In addition, `USE_EXTERNAL_EMOJIS` will be included for DMs with the app's bot user. */ appPermissions; /** The maximum size limit per attachment. This will be 10MiB by default, unless the user that created this interaction has a Nitro subscription or the guild it was sent from has been boosted to level 2 or above. */ attachmentSizeLimit; /** Details about the authorizing user or server for the installation(s) relevant to the interaction. See [Discord's docs](https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-authorizing-integration-owners-object) for more information. */ authorizingIntegrationOwners; /** The ID of the channel this interaction was sent from. */ channelID; /** The context this interaction was sent from. */ context; /** The data associated with the interaction. */ data; /** The entitlements for the user that created this interaction, and the guild it was created in. */ entitlements; /** The id of the guild this interaction was sent from, if applicable. */ guildID; /** The preferred [locale](https://discord.com/developers/docs/reference#locales) of the guild this interaction was sent from, if applicable. */ guildLocale; /** The partial guild this interaction was sent from, if applicable. */ guildPartial; /** The [locale](https://discord.com/developers/docs/reference#locales) of the invoking user. */ locale; /** The member associated with the invoking user, if this interaction is sent from a guild. */ member; /** The permissions of the member associated with the invoking user, if this interaction is sent from a guild. */ memberPermissions; /** The user that invoked this interaction. */ user; constructor(data, client) { super(data, client); this.appPermissions = new Permission_1.default(data.app_permissions ?? "0"); this.attachmentSizeLimit = data.attachment_size_limit; this.authorizingIntegrationOwners = data.authorizing_integration_owners; this.channelID = data.channel_id; this.context = data.context; this.data = { guildID: data.data.guild_id, id: data.data.id, name: data.data.name, options: new InteractionOptionsWrapper_1.default(data.data.options ?? [], null), type: data.data.type }; this.entitlements = data.entitlements?.map(entitlement => client.util.updateEntitlement(entitlement)) ?? []; this.guildID = (data.guild_id ?? null); this.guildLocale = data.guild_locale; this.guildPartial = data.guild; this.locale = data.locale; this.member = (data.member === undefined ? null : this.client.util.updateMember(data.guild_id, data.member.user.id, data.member)); this.memberPermissions = (data.member === undefined ? null : new Permission_1.default(data.member.permissions)); this.user = client.users.update(data.user ?? data.member.user); } /** The channel this interaction was sent from. */ get channel() { return this._cachedChannel ??= this.client.getChannel(this.channelID); } /** The guild this interaction was sent from, if applicable. This will throw an error if the guild is not cached. */ get guild() { if (this.guildID !== null && this._cachedGuild !== null) { this._cachedGuild ??= this.client.guilds.get(this.guildID); if (!this._cachedGuild) { throw new Errors_1.UncachedError(this, "guild", "GUILDS", this.client); } return this._cachedGuild; } return this._cachedGuild === null ? this._cachedGuild : (this._cachedGuild = null); } /** Whether this interaction belongs to a cached guild channel. The only difference on using this method over a simple if statement is to easily update all the interaction properties typing definitions based on the channel it belongs to. */ inCachedGuildChannel() { return this.channel instanceof GuildChannel_1.default; } /** Whether this interaction belongs to a private channel (PrivateChannel or uncached). The only difference on using this method over a simple if statement is to easily update all the interaction properties typing definitions based on the channel it belongs to. */ inPrivateChannel() { return this.guildID === null; } /** * Acknowledge this interaction with a set of choices. This is an initial response, and more than one initial response cannot be used. * @param choices The choices to send. */ async result(choices) { if (this.acknowledged) { throw new TypeError("Interactions cannot have more than one initial response."); } this.acknowledged = true; return this.client.rest.interactions.createInteractionResponse(this.id, this.token, { type: Constants_1.InteractionResponseTypes.APPLICATION_COMMAND_AUTOCOMPLETE_RESULT, data: { choices } }, true); } toJSON() { return { ...super.toJSON(), appPermissions: this.appPermissions.toJSON(), attachmentSizeLimit: this.attachmentSizeLimit, authorizingIntegrationOwners: this.authorizingIntegrationOwners, channelID: this.channelID, context: this.context, data: this.data, guildID: this.guildID ?? undefined, guildLocale: this.guildLocale, locale: this.locale, member: this.member?.toJSON(), type: this.type, user: this.user.toJSON() }; } } exports.default = AutocompleteInteraction; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXV0b2NvbXBsZXRlSW50ZXJhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvc3RydWN0dXJlcy9BdXRvY29tcGxldGVJbnRlcmFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzQ0FBc0M7QUFDdEMsd0VBQXdDO0FBSXhDLHNFQUFzQztBQUN0QywwRUFBMEM7QUFJMUMsNENBQTZHO0FBWTdHLHVIQUF1RjtBQUV2RiwyQ0FBK0M7QUFFL0MsOENBQThDO0FBQzlDLE1BQXFCLHVCQUF1RyxTQUFRLHFCQUFXO0lBQ25JLGNBQWMsQ0FBbUQ7SUFDakUsWUFBWSxDQUE0RDtJQUNoRixvUUFBb1E7SUFDcFEsY0FBYyxDQUFhO0lBQzNCLHVOQUF1TjtJQUN2TixtQkFBbUIsQ0FBUztJQUM1Qix1UkFBdVI7SUFDdlIsNEJBQTRCLENBQStCO0lBQzNELDREQUE0RDtJQUM1RCxTQUFTLENBQVM7SUFDbEIsa0RBQWtEO0lBQ2xELE9BQU8sQ0FBMkI7SUFDbEMsZ0RBQWdEO0lBQ2hELElBQUksQ0FBOEI7SUFDbEMsb0dBQW9HO0lBQ3BHLFlBQVksQ0FBdUM7SUFDbkQseUVBQXlFO0lBQ3pFLE9BQU8sQ0FBNkQ7SUFDcEUsZ0pBQWdKO0lBQ2hKLFdBQVcsQ0FBa0U7SUFDN0UsdUVBQXVFO0lBQ3ZFLFlBQVksQ0FBdUY7SUFDbkcsZ0dBQWdHO0lBQ2hHLE1BQU0sQ0FBUztJQUNmLDhGQUE4RjtJQUM5RixNQUFNLENBQTZEO0lBQ25FLGlIQUFpSDtJQUNqSCxpQkFBaUIsQ0FBcUU7SUFFdEYsOENBQThDO0lBQzlDLElBQUksQ0FBTztJQUNYLFlBQVksSUFBZ0MsRUFBRSxNQUFjO1FBQ3hELEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLG9CQUFVLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNsRSxJQUFJLENB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