oceanic.js
Version:
A NodeJS library for interfacing with Discord.
119 lines • 11.8 kB
JavaScript
"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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXV0b2NvbXBsZXRlSW50ZXJhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvc3RydWN0dXJlcy9BdXRvY29tcGxldGVJbnRlcmFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzQ0FBc0M7QUFDdEMsd0VBQXdDO0FBSXhDLHNFQUFzQztBQUN0QywwRUFBMEM7QUFJMUMsNENBQTZHO0FBWTdHLHVIQUF1RjtBQUV2RiwyQ0FBK0M7QUFFL0MsOENBQThDO0FBQzlDLE1BQXFCLHVCQUF1RyxTQUFRLHFCQUFXO0lBQ25JLGNBQWMsQ0FBbUQ7SUFDakUsWUFBWSxDQUE0RDtJQUNoRixvUUFBb1E7SUFDcFEsY0FBYyxDQUFhO0lBQzNCLHVOQUF1TjtJQUN2TixtQkFBbUIsQ0FBUztJQUM1Qix1UkFBdVI7SUFDdlIsNEJBQTRCLENBQStCO0lBQzNELDREQUE0RDtJQUM1RCxTQUFTLENBQVM7SUFDbEIsa0RBQWtEO0lBQ2xELE9BQU8sQ0FBMkI7SUFDbEMsZ0RBQWdEO0lBQ2hELElBQUksQ0FBOEI7SUFDbEMsb0dBQW9HO0lBQ3BHLFlBQVksQ0FBdUM7SUFDbkQseUVBQXlFO0lBQ3pFLE9BQU8sQ0FBNkQ7SUFDcEUsZ0pBQWdKO0lBQ2hKLFdBQVcsQ0FBa0U7SUFDN0UsdUVBQXVFO0lBQ3ZFLFlBQVksQ0FBdUY7SUFDbkcsZ0dBQWdHO0lBQ2hHLE1BQU0sQ0FBUztJQUNmLDhGQUE4RjtJQUM5RixNQUFNLENBQTZEO0lBQ25FLGlIQUFpSDtJQUNqSCxpQkFBaUIsQ0FBcUU7SUFFdEYsOENBQThDO0lBQzlDLElBQUksQ0FBTztJQUNYLFlBQVksSUFBZ0MsRUFBRSxNQUFjO1FBQ3hELEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLG9CQUFVLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1FBQ3RELElBQUksQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUM7UUFDeEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHO1lBQ1IsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUMzQixFQUFFLEVBQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3JCLElBQUksRUFBSyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDdkIsT0FBTyxFQUFFLElBQUksbUNBQXlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQztZQUNyRSxJQUFJLEVBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1NBQzFCLENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM1RyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQStELENBQUM7UUFDckcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBK0UsQ0FBQztRQUN4RyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTyxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUErRCxDQUFDO1FBQ2pNLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksb0JBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUF1RSxDQUFDO1FBQzVLLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxrREFBa0Q7SUFDbEQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQW9ELENBQUM7SUFDN0gsQ0FBQztJQUVELG9IQUFvSDtJQUNwSCxJQUFJLEtBQUs7UUFDTCxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3JCLE1BQU0sSUFBSSxzQkFBYSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsRSxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzdCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBZ0UsQ0FBQyxDQUFDO0lBQ25KLENBQUM7SUFFRCxnUEFBZ1A7SUFDaFAsb0JBQW9CO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sWUFBWSxzQkFBWSxDQUFDO0lBQ2hELENBQUM7SUFFRCx3UUFBd1E7SUFDeFEsZ0JBQWdCO1FBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQztJQUNqQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFrQztRQUMzQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksU0FBUyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7UUFDcEYsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxvQ0FBd0IsQ0FBQyx1Q0FBdUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdMLENBQUM7SUFFUSxNQUFNO1FBQ1gsT0FBTztZQUNILEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNqQixjQUFjLEVBQWdCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFO1lBQzFELG1CQUFtQixFQUFXLElBQUksQ0FBQyxtQkFBbUI7WUFDdEQsNEJBQTRCLEVBQUUsSUFBSSxDQUFDLDRCQUE0QjtZQUMvRCxTQUFTLEVBQXFCLElBQUksQ0FBQyxTQUFTO1lBQzVDLE9BQU8sRUFBdUIsSUFBSSxDQUFDLE9BQU87WUFDMUMsSUFBSSxFQUEwQixJQUFJLENBQUMsSUFBSTtZQUN2QyxPQUFPLEVBQXVCLElBQUksQ0FBQyxPQUFPLElBQUksU0FBUztZQUN2RCxXQUFXLEVBQW1CLElBQUksQ0FBQyxXQUFXO1lBQzlDLE1BQU0sRUFBd0IsSUFBSSxDQUFDLE1BQU07WUFDekMsTUFBTSxFQUF3QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtZQUNuRCxJQUFJLEVBQTBCLElBQUksQ0FBQyxJQUFJO1lBQ3ZDLElBQUksRUFBMEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7U0FDbkQsQ0FBQztJQUNOLENBQUM7Q0FDSjtBQWxIRCwwQ0FrSEMifQ==