2
0
mirror of https://github.com/pyrogram/pyrogram synced 2025-08-28 21:07:59 +00:00

Merge branch 'sticker-attributes'

This commit is contained in:
Dan 2022-08-14 11:30:28 +02:00
commit e94d3c1876
3 changed files with 26 additions and 20 deletions

View File

@ -47,14 +47,7 @@ class GetCustomEmojiStickers:
stickers = []
for item in result:
attributes = {type(i): i for i in item.attributes}
sticker = await types.Sticker._parse(
self, item,
attributes[raw.types.DocumentAttributeImageSize],
attributes[raw.types.DocumentAttributeCustomEmoji],
attributes[raw.types.DocumentAttributeFilename].file_name
)
sticker = await types.Sticker._parse(self, item, attributes)
stickers.append(sticker)
return pyrogram.types.List(stickers)

View File

@ -696,12 +696,7 @@ class Message(Object, Update):
animation = types.Animation._parse(client, doc, video_attributes, file_name)
media_type = enums.MessageMediaType.ANIMATION
elif raw.types.DocumentAttributeSticker in attributes:
sticker = await types.Sticker._parse(
client, doc,
attributes.get(raw.types.DocumentAttributeImageSize, None),
attributes[raw.types.DocumentAttributeSticker],
file_name
)
sticker = await types.Sticker._parse(client, doc, attributes)
media_type = enums.MessageMediaType.STICKER
elif raw.types.DocumentAttributeVideo in attributes:
video_attributes = attributes[raw.types.DocumentAttributeVideo]

View File

@ -17,7 +17,7 @@
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
from datetime import datetime
from typing import List
from typing import List, Dict, Type
import pyrogram
from pyrogram import raw, utils
@ -146,10 +146,16 @@ class Sticker(Object):
async def _parse(
client,
sticker: "raw.types.Document",
image_size_attributes: "raw.types.DocumentAttributeImageSize",
sticker_attributes: "raw.types.DocumentAttributeSticker",
file_name: str
document_attributes: Dict[Type["raw.base.DocumentAttribute"], "raw.base.DocumentAttribute"],
) -> "Sticker":
sticker_attributes = document_attributes.get(
raw.types.DocumentAttributeSticker,
document_attributes[raw.types.DocumentAttributeCustomEmoji]
)
image_size_attributes = document_attributes.get(raw.types.DocumentAttributeImageSize, None)
file_name = getattr(document_attributes.get(raw.types.DocumentAttributeFilename, None), "file_name", None)
video_attributes = document_attributes.get(raw.types.DocumentAttributeVideo, None)
sticker_set = sticker_attributes.stickerset
if isinstance(sticker_set, raw.types.InputStickerSetID):
@ -170,8 +176,20 @@ class Sticker(Object):
file_unique_type=FileUniqueType.DOCUMENT,
media_id=sticker.id
).encode(),
width=image_size_attributes.w if image_size_attributes else 512,
height=image_size_attributes.h if image_size_attributes else 512,
width=(
image_size_attributes.w
if image_size_attributes
else video_attributes.w
if video_attributes
else 512
),
height=(
image_size_attributes.h
if image_size_attributes
else video_attributes.h
if video_attributes
else 512
),
is_animated=sticker.mime_type == "application/x-tgsticker",
is_video=sticker.mime_type == "video/webm",
# TODO: mask_position