UNPKG

@oceanicjs/builders

Version:

Helpful builders for various Discord related things.

141 lines 9.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const ApplicationCommandOptionBuilder_1 = tslib_1.__importDefault(require("./ApplicationCommandOptionBuilder")); const oceanic_js_1 = require("oceanic.js"); const permissionNames = Object.keys(oceanic_js_1.Permissions).filter(p => !/^[0-9]+$/.test(p)); class ApplicationCommandBuilder { defaultMemberPermissions; description; descriptionLocalizations; dmPermission; name; nameLocalizations; options = []; type; constructor(type, name) { this.type = type; this.name = name; } /** * 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_1.default) { args[0] = args[0].toJSON(); } this.options.push(args[0]); return this; } else { const [name, type, extra] = args; const option = new ApplicationCommandOptionBuilder_1.default(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; } } /** Allow this command to be used in direct messages. */ allowDMUsage() { this.setDMPermission(true); return this; } /** Disallow this command from being used in direct messages. */ disallowDMUsage() { this.setDMPermission(false); return this; } /** Set if this command can be used in direct messages. */ setDMPermission(dmPermission) { this.dmPermission = dmPermission; return this; } /** Set the default permissions required to use this command. */ setDefaultMemberPermissions(...permissions) { let data; if (permissions.length > 1 || (typeof permissions[0] === "string" && permissionNames.includes(permissions[0]))) { data = permissions; } else { data = permissions[0]; } if (data instanceof oceanic_js_1.Permission) { data = data.allow.toString(); } else if (typeof data === "bigint") { data = data.toString(); } else if (Array.isArray(data)) { data = data.map(perm => oceanic_js_1.Permissions[perm]).reduce((a, b) => a | b, 0n).toString(); } this.defaultMemberPermissions = data; return this; } /** Set the description of this command. */ setDescription(description) { this.description = description; return this; } /** * Set the description localizations for this command. * @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 name of this command.*/ setName(name) { this.name = name; return this; } /** * Set the name localizations for this command. * @param localizations A map of [locales](https://discord.com/developers/docs/reference#locales) to localized name strings. */ setNameLocalizations(localizations) { this.nameLocalizations = localizations; return this; } /** Convert this command to JSON. */ toJSON() { return { defaultMemberPermissions: this.defaultMemberPermissions, description: this.description, descriptionLocalizations: this.descriptionLocalizations, dmPermission: this.dmPermission, name: this.name, nameLocalizations: this.nameLocalizations, options: this.options, type: this.type }; } } exports.default = ApplicationCommandBuilder; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25Db21tYW5kQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9BcHBsaWNhdGlvbkNvbW1hbmRCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdIQUFnRjtBQUNoRiwyQ0FRb0I7QUFFcEIsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyx3QkFBVyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEYsTUFBcUIseUJBQXlCO0lBQzFDLHdCQUF3QixDQUFVO0lBQ2xDLFdBQVcsQ0FBVTtJQUNyQix3QkFBd0IsQ0FBMEI7SUFDbEQsWUFBWSxDQUFXO0lBQ3ZCLElBQUksQ0FBUztJQUNiLGlCQUFpQixDQUEwQjtJQUMzQyxPQUFPLEdBQXFDLEVBQUUsQ0FBQztJQUMvQyxJQUFJLENBQUk7SUFDUixZQUFZLElBQU8sRUFBRSxJQUFZO1FBQzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsMEJBQTBCLENBQUMsTUFBYyxFQUFFLFdBQW1CO1FBQzFELENBQUMsSUFBSSxDQUFDLHdCQUF3QixLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFdBQVcsQ0FBQztRQUM3RCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILG1CQUFtQixDQUFDLE1BQWMsRUFBRSxJQUFZO1FBQzVDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQztRQUMvQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBS0QsU0FBUyxDQUEwRSxHQUFHLElBQStQ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