UNPKG

@discord-additions/components

Version:

Some helpful additions to make creating components easier.

130 lines 6.71 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const Component_1 = __importDefault(require("./Component")); const Constants_1 = require("../util/Constants"); class Button extends Component_1.default { style; customID; url; label; emoji; /** * Create a new Button * * @see https://discord.com/developers/docs/interactions/message-components#button-object-button-structure * @param {ButtonStyle} style - the style of this button - 1, blurple - 2, grey - 3, green - 4, red - 5, link * @param {string} urlOrCustomID - the url of this button if style 5, else the custom id of this button */ constructor(style, urlOrCustomID) { super(Constants_1.ComponentTypes.BUTTON); this.style = style; if (style === Constants_1.ButtonStyles.LINK) this.url = urlOrCustomID; else this.customID = urlOrCustomID; } /** * Set the style of this button * * * 1 - blurple * * 2 - grey * * 3 - green * * 4 - red * * 5 - link * * @see https://discord.com/developers/docs/interactions/message-components#button-object-button-styles * @param {ButtonStyle} style - the style of this button * @returns {Button} */ setStyle(style) { this.style = style; return this; } /** * Set the custom id of this button (styles 1-4) * * @see https://discord.com/developers/docs/interactions/message-components#button-object-button-structure * @param {string} customID - a developer-defined identifier for the button, max 100 characters * @returns {Button} */ setCustomID(customID) { this.customID = customID; return this; } /** * Set the custom id of this button (style 5) * * @see https://discord.com/developers/docs/interactions/message-components#button-object-button-structure * @param {string} url - the url to open when this button is clicked * @returns {Button} */ setURL(url) { this.url = url; return this; } /** * Set the label of this button * * @see https://discord.com/developers/docs/interactions/message-components#button-object-button-structure * @param {string} label - the label to display on this button * @returns {Button} */ setLabel(label) { this.label = label; return this; } /** * Set the emoji of this buttom * * @param {string} emoji - the emoji to display on this button * @returns {Button} */ setEmoji(emoji) { this.emoji = emoji; return this; } /** 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 === Constants_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; } toJSON() { const obj = { type: this.type, style: this.style, label: this.label, emoji: this.emoji, disabled: this.disabled }; if (this.style === Constants_1.ButtonStyles.LINK) { obj.url = this.url; return obj; } else { obj.customID = this.customID; return obj; } } } exports.default = Button; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnV0dG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1N0cnVjdHVyZXMvQnV0dG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNERBQW9DO0FBQ3BDLGlEQUFpRTtBQUtqRSxNQUFxQixNQUFPLFNBQVEsbUJBQTBDO0lBQzdFLEtBQUssQ0FBYztJQUNuQixRQUFRLENBQVU7SUFDbEIsR0FBRyxDQUFVO0lBQ2IsS0FBSyxDQUFVO0lBQ2YsS0FBSyxDQUFnQjtJQUNyQjs7Ozs7O09BTUc7SUFDSCxZQUFZLEtBQWtCLEVBQUUsYUFBcUI7UUFDcEQsS0FBSyxDQUFDLDBCQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxLQUFLLEtBQUssd0JBQVksQ0FBQyxJQUFJO1lBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxhQUFhLENBQUM7O1lBQ3JELElBQUksQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxRQUFRLENBQUMsS0FBa0I7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsV0FBVyxDQUFDLFFBQWdCO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxHQUFXO1FBQ2pCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsUUFBUSxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxRQUFRLENBQUMsS0FBbUI7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQsb0hBQW9IO0lBQ3BILElBQUksQ0FBQyxLQUFtQixFQUFFLGFBQXNCLEVBQUUsS0FBYyxFQUFFLEtBQW9CLEVBQUUsUUFBa0I7UUFDekcsSUFBSSxLQUFLO1lBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxJQUFJLGFBQWEsRUFBRTtZQUNsQixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssd0JBQVksQ0FBQyxJQUFJO2dCQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsYUFBYSxDQUFDOztnQkFDMUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUM7U0FDbkM7UUFDRCxJQUFJLEtBQUs7WUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksS0FBSztZQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsSUFBSSxPQUFPLFFBQVEsS0FBSyxXQUFXLEVBQUU7WUFDcEMsSUFBSSxRQUFRO2dCQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzs7Z0JBQ3hCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNuQjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVRLE1BQU07UUFDZCxNQUFNLEdBQUcsR0FBRztZQUNYLElBQUksRUFBTSxJQUFJLENBQUMsSUFBSTtZQUNuQixLQUFLLEVBQUssSUFBSSxDQUFDLEtBQUs7WUFDcEIsS0FBSyxFQUFLLElBQUksQ0FBQyxLQUFLO1lBQ3BCLEtBQUssRUFBSyxJQUFJLENBQUMsS0FBSztZQUNwQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDVSxDQUFDO1FBQ25DLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyx3QkFBWSxDQUFDLElBQUksRUFBRTtZQUNwQyxHQUFpQixDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBSSxDQUFDO1lBQ25DLE9BQU8sR0FBRyxDQUFDO1NBQ1g7YUFBTTtZQUNMLEdBQXlCLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFTLENBQUM7WUFDckQsT0FBTyxHQUFHLENBQUM7U0FDWDtJQUVGLENBQUM7Q0FDRDtBQXZIRCx5QkF1SEMifQ==