UNPKG

@oceanicjs/builders

Version:

Helpful builders for various Discord related things.

207 lines 13.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const oceanic_js_1 = require("oceanic.js"); class ApplicationCommandOptionBuilder { autocomplete; channelTypes; choices = []; description = ""; descriptionLocalizations; max; min; name; nameLocalizations; options = []; parent; required; type; constructor(type, name) { this.type = type; this.name = name; } /** * Add a choice. * @param name The name of the choice. * @param value The value of the choice. * @param nameLocalizations A map of [locales](https://discord.com/developers/docs/reference#locales) to name localizations. */ addChoice(name, value, nameLocalizations) { this.choices.push({ name, value, nameLocalizations }); return this; } /** * Add a description localization. * @param locale The [locale](https://discord.com/developers/docs/reference#locales) of the localization. * @param description The localized description. */ addDescriptionLocalization(locale, description) { (this.descriptionLocalizations ??= {})[locale] = description; return this; } /** * Add a name localization. * @param locale The [locale](https://discord.com/developers/docs/reference#locales) of the localization. * @param name The localized name. */ addNameLocalization(locale, name) { (this.nameLocalizations ??= {})[locale] = name; return this; } addOption(...args) { if (args.length === 1) { if (args[0] instanceof ApplicationCommandOptionBuilder) { args[0] = args[0].toJSON(); } this.options.push(args[0]); return this; } else { const [name, type, extra] = args; const option = new ApplicationCommandOptionBuilder(type, name); if (extra) { if (typeof extra === "function") { extra.call(this, option); this.options.push(option.toJSON()); } else { this.options.push({ ...extra, name, type }); } } else { this.options.push(option.toJSON()); } return this; } } /** Toggle autocomplete for this option. */ setAutocomplete(value = !this.autocomplete) { this.autocomplete = value; return this; } /** Set the allowed channel types for this option. */ setChannelTypes(types) { this.channelTypes = types; return this; } /** Set the choices for this option. */ setChoices(choices) { this.choices = choices; return this; } /** Set the description of this option. */ setDescription(description) { this.description = description; return this; } /** * Set the description localizations of this option. * @param localizations A map of [locales](https://discord.com/developers/docs/reference#locales) to localized description strings. */ setDescriptionLocalizations(localizations) { this.descriptionLocalizations = localizations; return this; } /** Set the min/max for this option. This applied to both `minValue`/`maxValue` and `minLength`/`maxLength`. */ setMinMax(min, max) { this.max = max; this.min = min; return this; } /** Set the name of this option. */ setName(name) { this.name = name; return this; } /** * Set the name localizations of this option. * @param localizations A map of [locales](https://discord.com/developers/docs/reference#locales) to localized name strings. */ setNameLocalizations(localizations) { this.nameLocalizations = localizations; return this; } /** Toggle this option being required. */ setRequired(value = !this.required) { this.required = value; return this; } /** Convert this command to JSON. */ toJSON() { let res; switch (this.type) { case oceanic_js_1.ApplicationCommandOptionTypes.SUB_COMMAND: { res = { type: this.type, name: this.name, description: this.description, options: this.options }; break; } case oceanic_js_1.ApplicationCommandOptionTypes.SUB_COMMAND_GROUP: { res = { type: this.type, name: this.name, description: this.description, options: this.options }; break; } case oceanic_js_1.ApplicationCommandOptionTypes.STRING: { res = { type: this.type, name: this.name, description: this.description, autocomplete: this.autocomplete, choices: this.choices, minLength: this.min, maxLength: this.max, required: this.required }; break; } case oceanic_js_1.ApplicationCommandOptionTypes.INTEGER: case oceanic_js_1.ApplicationCommandOptionTypes.NUMBER: { res = { type: this.type, name: this.name, description: this.description, choices: this.choices, minValue: this.min, maxValue: this.max, required: this.required }; break; } case oceanic_js_1.ApplicationCommandOptionTypes.BOOLEAN: case oceanic_js_1.ApplicationCommandOptionTypes.USER: case oceanic_js_1.ApplicationCommandOptionTypes.ROLE: case oceanic_js_1.ApplicationCommandOptionTypes.MENTIONABLE: case oceanic_js_1.ApplicationCommandOptionTypes.ATTACHMENT: { res = { type: this.type, name: this.name, description: this.description, required: this.required }; break; } case oceanic_js_1.ApplicationCommandOptionTypes.CHANNEL: { res = { type: this.type, name: this.name, description: this.description, channelTypes: this.channelTypes, required: this.required }; break; } default: { return null; } } return res; } } exports.default = ApplicationCommandOptionBuilder; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25Db21tYW5kT3B0aW9uQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9BcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMkNBaUJvQjtBQTBCcEIsTUFBcUIsK0JBQStCO0lBQ2hELFlBQVksQ0FBVztJQUN2QixZQUFZLENBQXVCO0lBQ25DLE9BQU8sR0FBMkMsRUFBRSxDQUFDO0lBQ3JELFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDakIsd0JBQXdCLENBQTBCO0lBQ2xELEdBQUcsQ0FBVTtJQUNiLEdBQUcsQ0FBVTtJQUNiLElBQUksQ0FBUztJQUNiLGlCQUFpQixDQUEwQjtJQUMzQyxPQUFPLEdBQXFDLEVBQUUsQ0FBQztJQUMvQyxNQUFNLENBQXNDO0lBQzVDLFFBQVEsQ0FBVztJQUNuQixJQUFJLENBQUk7SUFDUixZQUFZLElBQU8sRUFBRSxJQUFZO1FBQzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFNBQVMsQ0FBQyxJQUFZLEVBQUUsS0FBc0IsRUFBRSxpQkFBMEM7UUFDdEYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQztRQUN0RCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILDBCQUEwQixDQUFDLE1BQWMsRUFBRSxXQUFtQjtRQUMxRCxDQUFDLElBQUksQ0FBQyx3QkFBd0IsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxXQUFXLENBQUM7UUFDN0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxtQkFBbUIsQ0FBQyxNQUFjLEVB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