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:
commit
e94d3c1876
@ -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)
|
||||
|
@ -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]
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user