diff --git a/mautrix_telegram/portal/base.py b/mautrix_telegram/portal/base.py index d66ed203..b6d8c494 100644 --- a/mautrix_telegram/portal/base.py +++ b/mautrix_telegram/portal/base.py @@ -208,9 +208,8 @@ class BasePortal(ABC): def _get_largest_photo_size(photo: Union[Photo, Document] ) -> Tuple[Optional[InputPhotoFileLocation], Optional[TypePhotoSize]]: - if not photo: - return None, None - if isinstance(photo, Document) and not photo.thumbs: + if not photo or isinstance(photo, PhotoEmpty) or (isinstance(photo, Document) + and not photo.thumbs): return None, None largest = max(photo.thumbs if isinstance(photo, Document) else photo.sizes, diff --git a/mautrix_telegram/portal/telegram.py b/mautrix_telegram/portal/telegram.py index 8540a53e..a581361c 100644 --- a/mautrix_telegram/portal/telegram.py +++ b/mautrix_telegram/portal/telegram.py @@ -74,6 +74,11 @@ class PortalTelegram(BasePortal, ABC): async def handle_telegram_photo(self, source: 'AbstractUser', intent: IntentAPI, evt: Message, relates_to: RelatesTo = None) -> Optional[EventID]: loc, largest_size = self._get_largest_photo_size(evt.media.photo) + if loc is None: + content = TextMessageEventContent(msgtype=MessageType.TEXT, + body="Failed to bridge image", + external_url=self._get_external_url(evt)) + return await self._send_message(intent, content, timestamp=evt.date) file = await util.transfer_file_to_matrix(source.client, intent, loc, encrypt=self.encrypted) if not file: