From a260b6180ddd33bf2f464607dec29475d20cd9cf Mon Sep 17 00:00:00 2001 From: ItsRauf <31735267+ItsRauf@users.noreply.github.com> Date: Fri, 27 Feb 2026 18:37:29 -0600 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(builder):=20cap=20media=20ga?= =?UTF-8?q?llery=20items=20at=20Discord's=2010-item=20limit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/wacky-teeth-ring.md | 5 +++++ packages/builder/src/Embed.ts | 16 +++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 .changeset/wacky-teeth-ring.md diff --git a/.changeset/wacky-teeth-ring.md b/.changeset/wacky-teeth-ring.md new file mode 100644 index 0000000..b6da585 --- /dev/null +++ b/.changeset/wacky-teeth-ring.md @@ -0,0 +1,5 @@ +--- +"@embedly/builder": patch +--- + +cap media gallery items at Discord's 10-item limit diff --git a/packages/builder/src/Embed.ts b/packages/builder/src/Embed.ts index e3a0a36..19d203c 100644 --- a/packages/builder/src/Embed.ts +++ b/packages/builder/src/Embed.ts @@ -77,6 +77,8 @@ export interface EmbedFlags { [EmbedFlagNames.LinkStyle]: "control" | "inline" | "none"; } +const MAX_GALLERY_ITEMS = 10; + export class Embed implements EmbedData { public platform!: string; public color!: RGBTuple; @@ -102,6 +104,7 @@ export class Embed implements EmbedData { constructor(data: BaseEmbedData) { Object.assign(this, data); + if (this.media) this.media = this.media.slice(0, MAX_GALLERY_ITEMS); } public setDescription(text: string) { @@ -109,15 +112,22 @@ export class Embed implements EmbedData { } public setMedia(media: APIMediaGalleryItem[]) { - this.media = media; + this.media = media.slice(0, MAX_GALLERY_ITEMS); } public setQuote(quote: BaseEmbedDataWithoutPlatform) { - this.quote = quote; + this.quote = quote.media + ? { ...quote, media: quote.media.slice(0, MAX_GALLERY_ITEMS) } + : quote; } public setReplyingTo(replying_to: BaseEmbedDataWithoutPlatform) { - this.replying_to = replying_to; + this.replying_to = replying_to.media + ? { + ...replying_to, + media: replying_to.media.slice(0, MAX_GALLERY_ITEMS) + } + : replying_to; } static getDiscordEmbed(embed: Embed, flags?: Partial) {