diff options
author | sowgro <tpoke.ferrari@gmail.com> | 2023-09-02 19:12:47 -0400 |
---|---|---|
committer | sowgro <tpoke.ferrari@gmail.com> | 2023-09-02 19:12:47 -0400 |
commit | e4450c8417624b71d779cb4f41692538f9165e10 (patch) | |
tree | b70826542223ecdf8a7a259f61b0a1abb8a217d8 /node_modules/discord.js/src/structures/AttachmentBuilder.js | |
download | sowbot3-e4450c8417624b71d779cb4f41692538f9165e10.tar.gz sowbot3-e4450c8417624b71d779cb4f41692538f9165e10.tar.bz2 sowbot3-e4450c8417624b71d779cb4f41692538f9165e10.zip |
first commit
Diffstat (limited to 'node_modules/discord.js/src/structures/AttachmentBuilder.js')
-rw-r--r-- | node_modules/discord.js/src/structures/AttachmentBuilder.js | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/node_modules/discord.js/src/structures/AttachmentBuilder.js b/node_modules/discord.js/src/structures/AttachmentBuilder.js new file mode 100644 index 0000000..6c63810 --- /dev/null +++ b/node_modules/discord.js/src/structures/AttachmentBuilder.js @@ -0,0 +1,116 @@ +'use strict'; + +const { basename, flatten } = require('../util/Util'); + +/** + * Represents an attachment builder + */ +class AttachmentBuilder { + /** + * @param {BufferResolvable|Stream} attachment The file + * @param {AttachmentData} [data] Extra data + */ + constructor(attachment, data = {}) { + /** + * The file associated with this attachment. + * @type {BufferResolvable|Stream} + */ + this.attachment = attachment; + /** + * The name of this attachment + * @type {?string} + */ + this.name = data.name; + /** + * The description of the attachment + * @type {?string} + */ + this.description = data.description; + } + + /** + * Sets the description of this attachment. + * @param {string} description The description of the file + * @returns {AttachmentBuilder} This attachment + */ + setDescription(description) { + this.description = description; + return this; + } + + /** + * Sets the file of this attachment. + * @param {BufferResolvable|Stream} attachment The file + * @returns {AttachmentBuilder} This attachment + */ + setFile(attachment) { + this.attachment = attachment; + return this; + } + + /** + * Sets the name of this attachment. + * @param {string} name The name of the file + * @returns {AttachmentBuilder} This attachment + */ + setName(name) { + this.name = name; + return this; + } + + /** + * Sets whether this attachment is a spoiler + * @param {boolean} [spoiler=true] Whether the attachment should be marked as a spoiler + * @returns {AttachmentBuilder} This attachment + */ + setSpoiler(spoiler = true) { + if (spoiler === this.spoiler) return this; + + if (!spoiler) { + while (this.spoiler) { + this.name = this.name.slice('SPOILER_'.length); + } + return this; + } + this.name = `SPOILER_${this.name}`; + return this; + } + + /** + * Whether or not this attachment has been marked as a spoiler + * @type {boolean} + * @readonly + */ + get spoiler() { + return basename(this.name).startsWith('SPOILER_'); + } + + toJSON() { + return flatten(this); + } + + /** + * Makes a new builder instance from a preexisting attachment structure. + * @param {AttachmentBuilder|Attachment|AttachmentPayload} other The builder to construct a new instance from + * @returns {AttachmentBuilder} + */ + static from(other) { + return new AttachmentBuilder(other.attachment, { + name: other.name, + description: other.description, + }); + } +} + +module.exports = AttachmentBuilder; + +/** + * @external APIAttachment + * @see {@link https://discord.com/developers/docs/resources/channel#attachment-object} + */ + +/** + * @typedef {Object} AttachmentData + * @property {string} [name] The name of the attachment + * @property {string} [description] The description of the attachment + */ |