diff --git a/pyrogram/client/types/messages_and_media/photo_size.py b/pyrogram/client/types/messages_and_media/thumbnail.py
similarity index 53%
rename from pyrogram/client/types/messages_and_media/photo_size.py
rename to pyrogram/client/types/messages_and_media/thumbnail.py
index 9f64ae6a..0ff15e66 100644
--- a/pyrogram/client/types/messages_and_media/photo_size.py
+++ b/pyrogram/client/types/messages_and_media/thumbnail.py
@@ -17,15 +17,16 @@
# along with Pyrogram. If not, see .
from struct import pack
-from typing import List, Union
+from typing import Union, List
import pyrogram
from pyrogram.api import types
from pyrogram.client.ext.utils import encode
+from .stripped_thumbnail import StrippedThumbnail
from ..pyrogram_type import PyrogramType
-class PhotoSize(PyrogramType):
+class Thumbnail(PyrogramType):
"""One size of a photo or a file/sticker thumbnail.
Parameters:
@@ -61,30 +62,44 @@ class PhotoSize(PyrogramType):
self.file_size = file_size
@staticmethod
- def _parse(client, thumbs: List) -> Union["PhotoSize", None]:
- if not thumbs:
+ def _parse(
+ client,
+ media: Union[types.Photo, types.Document]
+ ) -> Union[List[Union[StrippedThumbnail, "Thumbnail"]], None]:
+ if isinstance(media, types.Photo):
+ raw_thumbnails = media.sizes[:-1]
+ media_type = 0
+ elif isinstance(media, types.Document):
+ raw_thumbnails = media.thumbs
+ media_type = 14
+
+ if not raw_thumbnails:
+ return None
+ else:
return None
- photo_size = thumbs[-1]
+ thumbnails = []
- if not isinstance(photo_size, (types.PhotoSize, types.PhotoCachedSize, types.PhotoStrippedSize)):
- return None
-
- loc = photo_size.location
-
- if not isinstance(loc, types.FileLocation):
- return None
-
- return PhotoSize(
- file_id=encode(
- pack(
- "