@oceanicjs/builders
Version:
Helpful builders for various Discord related things.
132 lines • 6.78 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const Component_1 = tslib_1.__importDefault(require("./Component"));
const oceanic_js_1 = require("oceanic.js");
class Button extends Component_1.default {
customID;
emoji;
label;
style;
url;
/**
* Create a new Button.
* @param style The style of this button.
* @param urlOrCustomID The url of this button if style 5, else the custom ID of this button.
*/
constructor(style, urlOrCustomID) {
super(oceanic_js_1.ComponentTypes.BUTTON);
this.style = style;
if (style === oceanic_js_1.ButtonStyles.LINK) {
this.url = urlOrCustomID;
}
else {
this.customID = urlOrCustomID;
}
}
/** this method is meant to be for internal use only, don't use it, as it may break or change at a moments notice */
load(style, urlOrCustomID, label, emoji, disabled) {
if (style) {
this.setStyle(style);
}
if (urlOrCustomID) {
if (this.style === oceanic_js_1.ButtonStyles.LINK) {
this.url = urlOrCustomID;
}
else {
this.customID = urlOrCustomID;
}
}
if (label) {
this.setLabel(label);
}
if (emoji) {
this.setEmoji(emoji);
}
if (typeof disabled !== "undefined") {
if (disabled) {
this.disable();
}
else {
this.enable();
}
}
return this;
}
/**
* Set the custom id of this button (styles 1-4).
* @param customID A developer-defined identifier for the button, max 100 characters.
*/
setCustomID(customID) {
this.customID = customID;
return this;
}
/**
* Set the emoji of this button.
* @param emoji The emoji to display on this button.
*/
setEmoji(emoji) {
this.emoji = emoji;
return this;
}
/**
* Set the label of this button
* @param label The label to display on this button.
*/
setLabel(label) {
this.label = label;
return this;
}
/**
* Set the style of this button.
* * 1 - blurple
* * 2 - grey
* * 3 - green
* * 4 - red
* * 5 - link
* @param style The [style](https://discord.com/developers/docs/interactions/message-components#button-object-button-styles) of this button.
*/
setStyle(style) {
this.style = style;
return this;
}
/**
* Set the custom id of this button (style 5).
* @param url The url to open when this button is clicked.
*/
setURL(url) {
this.url = url;
return this;
}
toJSON() {
const obj = {
type: this.type,
style: this.style,
label: this.label,
emoji: this.emoji,
disabled: this.disabled
};
if (this.style === oceanic_js_1.ButtonStyles.LINK) {
obj.url = this.url;
return obj;
}
else {
obj.customID = this.customID;
return obj;
}
}
toJSONRaw() {
const json = this.toJSON();
if (this.style === oceanic_js_1.ButtonStyles.LINK) {
return json;
}
else {
const raw = json;
raw.custom_id = raw.customID;
delete raw.customID;
return raw;
}
}
}
exports.default = Button;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnV0dG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL1N0cnVjdHVyZXMvQnV0dG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG9FQUFvQztBQUVwQywyQ0FPb0I7QUFFcEIsTUFBcUIsTUFBTyxTQUFRLG1CQUFnQztJQUNoRSxRQUFRLENBQVU7SUFDbEIsS0FBSyxDQUFnQjtJQUNyQixLQUFLLENBQVU7SUFDZixLQUFLLENBQThCO0lBQ25DLEdBQUcsQ0FBVTtJQUNiOzs7O09BSUc7SUFDSCxZQUFZLEtBQWtDLEVBQUUsYUFBcUI7UUFDakUsS0FBSyxDQUFDLDJCQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxLQUFLLEtBQUsseUJBQVksQ0FBQyxJQUFJLEVBQUU7WUFDN0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxhQUFhLENBQUM7U0FDNUI7YUFBTTtZQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUVELG9IQUFvSDtJQUM1RyxJQUFJLENBQUMsS0FBbUMsRUFBRSxhQUFzQixFQUFFLEtBQWMsRUFBRSxLQUFvQixFQUFFLFFBQWtCO1FBQzlILElBQUksS0FBSyxFQUFFO1lBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN4QjtRQUNELElBQUksYUFBYSxFQUFFO1lBQ2YsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLHlCQUFZLENBQUMsSUFBSSxFQUFFO2dCQUNsQyxJQUFJLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQzthQUM1QjtpQkFBTTtnQkFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQzthQUNqQztTQUNKO1FBQ0QsSUFBSSxLQUFLLEVBQUU7WUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3hCO1FBQ0QsSUFBSSxLQUFLLEVBQUU7WUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3hCO1FBQ0QsSUFBSSxPQUFPLFFBQVEsS0FBSyxXQUFXLEVBQUU7WUFDakMsSUFBSSxRQUFRLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2xCO2lCQUFNO2dCQUNILElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNqQjtTQUNKO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVcsQ0FBQyxRQUFnQjtRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxDQUFDLEtBQW1CO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRLENBQUMsS0FBYTtRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxRQUFRLENBQUMsS0FBa0M7UUFDdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxHQUFXO1FBQ2QsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRVEsTUFBTTtRQUNYLE1BQU0sR0FBRyxHQUFHO1lBQ1IsSUFBSSxFQUFNLElBQUksQ0FBQyxJQUFJO1lBQ25CLEtBQUssRUFBSyxJQUFJLENBQUMsS0FBSztZQUNwQixLQUFLLEVBQUssSUFBSSxDQUFDLEtBQUs7WUFDcEIsS0FBSyxFQUFLLElBQUksQ0FBQyxLQUFLO1lBQ3BCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUNBLENBQUM7UUFDNUIsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLHlCQUFZLENBQUMsSUFBSSxFQUFFO1lBQ2pDLEdBQWlCLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFJLENBQUM7WUFDbkMsT0FBTyxHQUFHLENBQUM7U0FDZDthQUFNO1lBQ0YsR0FBa0IsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVMsQ0FBQztZQUM5QyxPQUFPLEdBQUcsQ0FBQztTQUNkO0lBQ0wsQ0FBQztJQUVRLFNBQVM7UUFDZCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0IsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLHlCQUFZLENBQUMsSUFBSSxFQUFFO1lBQ2xDLE9BQU8sSUFBaUIsQ0FBQztTQUM1QjthQUFNO1lBQ0gsTUFBTSxHQUFHLEdBQUcsSUFBMEMsQ0FBQztZQUN2RCxHQUFHLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDN0IsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ3BCLE9BQU8sR0FBK0IsQ0FBQztTQUMxQztJQUNMLENBQUM7Q0FDSjtBQWhJRCx5QkFnSUMifQ==