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