diff --git a/mautrix_telegram/formatter/from_matrix/__init__.py b/mautrix_telegram/formatter/from_matrix/__init__.py index e9861b44..6d988557 100644 --- a/mautrix_telegram/formatter/from_matrix/__init__.py +++ b/mautrix_telegram/formatter/from_matrix/__init__.py @@ -89,7 +89,9 @@ def matrix_to_telegram(html: str) -> ParsedMessage: def matrix_reply_to_telegram(content: Dict[str, Any], tg_space: TelegramID, room_id: Optional[MatrixRoomID] = None) -> Optional[TelegramID]: try: - reply = content["m.relates_to"]["m.in_reply_to"] + reply = content.get("m.relates_to", {}).get("m.in_reply_to", {}) + if not reply: + return None room_id = room_id or reply["room_id"] event_id = reply["event_id"] diff --git a/mautrix_telegram/portal.py b/mautrix_telegram/portal.py index b21af2a4..b532087a 100644 --- a/mautrix_telegram/portal.py +++ b/mautrix_telegram/portal.py @@ -994,6 +994,10 @@ class Portal: async def handle_matrix_message(self, sender: 'u.User', message: Dict[str, Any], event_id: MatrixEventID) -> None: + if "body" not in message or "msgtype" not in message: + self.log.debug(f"Ignoring message {event_id} in {self.mxid} without body or msgtype") + return + puppet = p.Puppet.get_by_custom_mxid(sender.mxid) if puppet and message.get("net.maunium.telegram.puppet", False): self.log.debug("Ignoring puppet-sent message by confirmed puppet user %s", sender.mxid) diff --git a/mautrix_telegram/util/file_transfer.py b/mautrix_telegram/util/file_transfer.py index 4a2263b5..370cbf1e 100644 --- a/mautrix_telegram/util/file_transfer.py +++ b/mautrix_telegram/util/file_transfer.py @@ -100,7 +100,7 @@ def _read_video_thumbnail(data: bytes, video_ext: str = "mp4", frame_ext: str = def _location_to_id(location: TypeLocation) -> str: if isinstance(location, (Document, InputDocumentFileLocation)): - return f"{location.id}-{location.version}" + return f"{location.id}-{location.access_hash}" elif isinstance(location, (FileLocation, InputFileLocation)): return f"{location.volume_id}-{location.local_id}"