diff --git a/packages/discord.js/src/structures/Attachment.js b/packages/discord.js/src/structures/Attachment.js index 11a45643194e..2bdf67f3895d 100644 --- a/packages/discord.js/src/structures/Attachment.js +++ b/packages/discord.js/src/structures/Attachment.js @@ -99,6 +99,26 @@ class Attachment { * @type {boolean} */ this.ephemeral = data.ephemeral ?? false; + + if ('duration_secs' in data) { + /** + * The duration of this attachment in seconds (if an audio) + * @type {?number} + */ + this.duration = data.duration_secs; + } else { + this.duration ??= null; + } + + if ('waveform' in data) { + /** + * The bytearray encoded in Base64 representing a sampled waveform (if an audio) + * @type {?string} + */ + this.waveform = data.waveform; + } else { + this.waveform ??= null; + } } /** diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index 47f500f7e5c1..957168b26125 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -2014,6 +2014,7 @@ export class Attachment { private attachment: BufferResolvable | Stream; public contentType: string | null; public description: string | null; + public duration: number | null; public ephemeral: boolean; public height: number | null; public id: Snowflake; @@ -2022,6 +2023,7 @@ export class Attachment { public size: number; public get spoiler(): boolean; public url: string; + public waveform: string | null; public width: number | null; public toJSON(): unknown; }