UNPKG

tgsnake

Version:

Telegram MTProto framework for nodejs.

93 lines (92 loc) 3.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Sticker = void 0; const TL_js_1 = require("../../TL.js"); const platform_node_js_1 = require("../../../platform.node.js"); const PhotoSize_js_1 = require("./PhotoSize.js"); class Sticker extends TL_js_1.TLObject { fileId; fileUniqueId; date; dcId; isAnimated; isVideo; size; thumb; width; height; mimeType; emoji; constructor({ fileId, fileUniqueId, date, dcId, isAnimated, isVideo, size, thumb, width, height, mimeType, emoji, }, client) { super(client); this.fileId = fileId; this.fileUniqueId = fileUniqueId; this.date = date; this.dcId = dcId; this.isAnimated = isAnimated; this.isVideo = isVideo; this.size = size; this.thumb = thumb; this.width = width; this.height = height; this.mimeType = mimeType; this.emoji = emoji; } static parse(client, document) { const { fileId, fileUniqueId } = platform_node_js_1.FileId.encode({ version: 4, subVersion: 32, dcId: document.dcId, fileType: platform_node_js_1.FileType.STICKER, fileTypeUniqueId: platform_node_js_1.FileTypeUniqueId.DOCUMENT, volumeId: BigInt(0), localId: 0, id: document.id, accessHash: document.accessHash, fileReference: document.fileReference, }); let thumb = []; let image = undefined; let video = undefined; let sticker = undefined; for (let attribute of document.attributes) { if (!image && attribute instanceof platform_node_js_1.Raw.DocumentAttributeImageSize) { image = attribute; } if (!video && attribute instanceof platform_node_js_1.Raw.DocumentAttributeVideo) { video = attribute; } if (!sticker && attribute instanceof platform_node_js_1.Raw.DocumentAttributeSticker) { sticker = attribute; } if (!sticker && attribute instanceof platform_node_js_1.Raw.DocumentAttributeCustomEmoji) { sticker = attribute; } } if (document.thumbs) { for (let t of document.thumbs) { if (t instanceof platform_node_js_1.Raw.PhotoSize) { thumb.push(PhotoSize_js_1.PhotoSize.parse(client, t, document.id, document.accessHash, document.fileReference, document.dcId)); } } } return new Sticker({ fileId, fileUniqueId, thumb, date: new Date(document.date * 1000), dcId: document.dcId, isAnimated: document.mimeType === 'application/x-tgsticker', isVideo: document.mimeType === 'video/webm', size: BigInt(document.size), mimeType: document.mimeType, emoji: sticker ? sticker.alt : undefined, width: image ? image.w : video ? video.w : 512, height: image ? image.h : video ? video.h : 512, }, client); } resend(chatId, more) { return this.api.sendSticker(chatId, this.fileId, more); } } exports.Sticker = Sticker;