Include sticker pack reference in events
This commit is contained in:
@@ -34,6 +34,8 @@ from telethon.tl.types import (
|
|||||||
DocumentAttributeVideo,
|
DocumentAttributeVideo,
|
||||||
Game,
|
Game,
|
||||||
InputPhotoFileLocation,
|
InputPhotoFileLocation,
|
||||||
|
InputStickerSetID,
|
||||||
|
InputStickerSetShortName,
|
||||||
Message,
|
Message,
|
||||||
MessageEntityPre,
|
MessageEntityPre,
|
||||||
MessageMediaContact,
|
MessageMediaContact,
|
||||||
@@ -107,6 +109,7 @@ class DocAttrs(NamedTuple):
|
|||||||
mime_type: str | None
|
mime_type: str | None
|
||||||
is_sticker: bool
|
is_sticker: bool
|
||||||
sticker_alt: str | None
|
sticker_alt: str | None
|
||||||
|
sticker_pack_ref: dict | None
|
||||||
width: int
|
width: int
|
||||||
height: int
|
height: int
|
||||||
is_gif: bool
|
is_gif: bool
|
||||||
@@ -733,6 +736,7 @@ class TelegramMessageConverter:
|
|||||||
def _parse_document_attributes(attributes: list[TypeDocumentAttribute]) -> DocAttrs:
|
def _parse_document_attributes(attributes: list[TypeDocumentAttribute]) -> DocAttrs:
|
||||||
name, mime_type, is_sticker, sticker_alt, width, height = None, None, False, None, 0, 0
|
name, mime_type, is_sticker, sticker_alt, width, height = None, None, False, None, 0, 0
|
||||||
is_gif, is_audio, is_voice, duration, waveform = False, False, False, 0, bytes()
|
is_gif, is_audio, is_voice, duration, waveform = False, False, False, 0, bytes()
|
||||||
|
sticker_pack_ref = {}
|
||||||
for attr in attributes:
|
for attr in attributes:
|
||||||
if isinstance(attr, DocumentAttributeFilename):
|
if isinstance(attr, DocumentAttributeFilename):
|
||||||
name = name or attr.file_name
|
name = name or attr.file_name
|
||||||
@@ -740,6 +744,13 @@ def _parse_document_attributes(attributes: list[TypeDocumentAttribute]) -> DocAt
|
|||||||
elif isinstance(attr, DocumentAttributeSticker):
|
elif isinstance(attr, DocumentAttributeSticker):
|
||||||
is_sticker = True
|
is_sticker = True
|
||||||
sticker_alt = attr.alt
|
sticker_alt = attr.alt
|
||||||
|
if isinstance(attr.stickerset, InputStickerSetID):
|
||||||
|
sticker_pack_ref = {
|
||||||
|
"id": attr.stickerset.id,
|
||||||
|
"access_hash": attr.stickerset.access_hash,
|
||||||
|
}
|
||||||
|
elif isinstance(attr.stickerset, InputStickerSetShortName):
|
||||||
|
sticker_pack_ref = {"short_name": attr.stickerset.short_name}
|
||||||
elif isinstance(attr, DocumentAttributeAnimated):
|
elif isinstance(attr, DocumentAttributeAnimated):
|
||||||
is_gif = True
|
is_gif = True
|
||||||
elif isinstance(attr, DocumentAttributeVideo):
|
elif isinstance(attr, DocumentAttributeVideo):
|
||||||
@@ -757,6 +768,7 @@ def _parse_document_attributes(attributes: list[TypeDocumentAttribute]) -> DocAt
|
|||||||
mime_type,
|
mime_type,
|
||||||
is_sticker,
|
is_sticker,
|
||||||
sticker_alt,
|
sticker_alt,
|
||||||
|
sticker_pack_ref,
|
||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
is_gif,
|
is_gif,
|
||||||
@@ -789,6 +801,12 @@ def _parse_document_meta(
|
|||||||
mime_type = file.mime_type or document.mime_type
|
mime_type = file.mime_type or document.mime_type
|
||||||
info = ImageInfo(size=file.size, mimetype=mime_type)
|
info = ImageInfo(size=file.size, mimetype=mime_type)
|
||||||
|
|
||||||
|
if attrs.is_sticker:
|
||||||
|
info["fi.mau.telegram.sticker"] = {
|
||||||
|
"alt": attrs.sticker_alt,
|
||||||
|
"pack": attrs.sticker_pack_ref,
|
||||||
|
}
|
||||||
|
|
||||||
if attrs.mime_type and not file.was_converted:
|
if attrs.mime_type and not file.was_converted:
|
||||||
file.mime_type = attrs.mime_type or file.mime_type
|
file.mime_type = attrs.mime_type or file.mime_type
|
||||||
if file.width and file.height:
|
if file.width and file.height:
|
||||||
|
|||||||
Reference in New Issue
Block a user