From b0055b791ca5519e6b795b5c3903e99c4475406b Mon Sep 17 00:00:00 2001 From: teidesu <86301490+teidesu@users.noreply.github.com> Date: Mon, 5 Dec 2022 04:05:43 +0300 Subject: [PATCH] fix(client): incorrect parsing of video stickers as video --- .../client/src/types/media/document-utils.ts | 35 ++++++++++++------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/packages/client/src/types/media/document-utils.ts b/packages/client/src/types/media/document-utils.ts index 93d39ed1..c4b9c8c5 100644 --- a/packages/client/src/types/media/document-utils.ts +++ b/packages/client/src/types/media/document-utils.ts @@ -12,6 +12,29 @@ export function parseDocument( client: TelegramClient, doc: tl.RawDocument ): RawDocument { + const stickerAttr = doc.attributes.find( + (a) => + a._ === 'documentAttributeSticker' || + a._ === 'documentAttributeCustomEmoji' + ) + + if (stickerAttr) { + const sz = doc.attributes.find( + (it) => + it._ === 'documentAttributeImageSize' || + it._ === 'documentAttributeVideo' + )! as tl.RawDocumentAttributeImageSize | tl.RawDocumentAttributeVideo + + return new Sticker( + client, + doc, + stickerAttr as + | tl.RawDocumentAttributeSticker + | tl.RawDocumentAttributeCustomEmoji, + sz + ) + } + for (const attr of doc.attributes) { switch (attr._) { case 'documentAttributeAudio': @@ -20,18 +43,6 @@ export function parseDocument( } else { return new Audio(client, doc, attr) } - case 'documentAttributeSticker': - case 'documentAttributeCustomEmoji': { - const sz = doc.attributes.find( - (it) => - it._ === 'documentAttributeImageSize' || - it._ === 'documentAttributeVideo' - )! as - | tl.RawDocumentAttributeImageSize - | tl.RawDocumentAttributeVideo - - return new Sticker(client, doc, attr, sz) - } case 'documentAttributeVideo': return new Video(client, doc, attr) case 'documentAttributeImageSize':