feat(client): support webm stickers

This commit is contained in:
teidesu 2022-05-06 20:00:15 +03:00
parent 9543f64558
commit daff3e62a0
3 changed files with 25 additions and 7 deletions

View file

@ -21,8 +21,12 @@ export function parseDocument(
} }
case 'documentAttributeSticker': { case 'documentAttributeSticker': {
const sz = doc.attributes.find( const sz = doc.attributes.find(
(it) => it._ === 'documentAttributeImageSize' (it) =>
)! as tl.RawDocumentAttributeImageSize it._ === 'documentAttributeImageSize' ||
it._ === 'documentAttributeVideo'
)! as
| tl.RawDocumentAttributeImageSize
| tl.RawDocumentAttributeVideo
return new Sticker(client, doc, attr, sz) return new Sticker(client, doc, attr, sz)
} }
case 'documentAttributeVideo': case 'documentAttributeVideo':

View file

@ -50,7 +50,7 @@ export class Sticker extends RawDocument {
client: TelegramClient, client: TelegramClient,
doc: tl.RawDocument, doc: tl.RawDocument,
readonly attr: tl.RawDocumentAttributeSticker, readonly attr: tl.RawDocumentAttributeSticker,
readonly attrSize?: tl.RawDocumentAttributeImageSize readonly attr2?: tl.RawDocumentAttributeImageSize | tl.RawDocumentAttributeVideo
) { ) {
super(client, doc) super(client, doc)
} }
@ -59,14 +59,21 @@ export class Sticker extends RawDocument {
* Sticker width in pixels * Sticker width in pixels
*/ */
get width(): number { get width(): number {
return this.attrSize?.w ?? 512 return this.attr2?.w ?? 512
} }
/** /**
* Sticker height in pixels * Sticker height in pixels
*/ */
get height(): number { get height(): number {
return this.attrSize?.h ?? 512 return this.attr2?.h ?? 512
}
/**
* Whether this sticker is a video (WEBM) sticker
*/
get isVideoSticker(): boolean {
return this.attr2?._ === 'documentAttributeVideo'
} }
/** /**
@ -77,8 +84,8 @@ export class Sticker extends RawDocument {
*/ */
get isValidSticker(): boolean { get isValidSticker(): boolean {
return ( return (
this.attrSize !== undefined && this.attr2 !== undefined &&
(this.attrSize.w === 512 || this.attrSize.h === 512) (this.attr2.w === 512 || this.attr2.h === 512)
) )
} }

View file

@ -88,6 +88,13 @@ export class StickerSet {
return this.brief.animated! return this.brief.animated!
} }
/**
* Whether this stickerset is video (WEBM)
*/
get isVideo(): boolean {
return this.brief.videos!
}
/** /**
* Date when this stickerset was installed * Date when this stickerset was installed
*/ */