tgsnake
Version:
Telegram MTProto framework for nodejs.
93 lines (92 loc) • 3.33 kB
JavaScript
;
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;