@oceanicjs/builders
Version:
Helpful builders for various Discord related things.
207 lines • 13.3 kB
JavaScript
"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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