From 9ea495324d2829cfa2dd3749e948dc13a14e85e3 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Wed, 23 Feb 2022 12:46:16 +0200 Subject: [PATCH] Don't try to set room state in non-existent portals --- mautrix_telegram/portal.py | 62 +++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 27 deletions(-) diff --git a/mautrix_telegram/portal.py b/mautrix_telegram/portal.py index 6a146fb2..70935373 100644 --- a/mautrix_telegram/portal.py +++ b/mautrix_telegram/portal.py @@ -1118,9 +1118,10 @@ class Portal(DBPortal, BasePortal): return False self.about = about - await self._try_set_state( - sender, EventType.ROOM_TOPIC, RoomTopicStateEventContent(topic=self.about) - ) + if self.mxid: + await self._try_set_state( + sender, EventType.ROOM_TOPIC, RoomTopicStateEventContent(topic=self.about) + ) if save: await self.save() return True @@ -1132,14 +1133,15 @@ class Portal(DBPortal, BasePortal): return False self.title = title - try: - await self._try_set_state( - sender, EventType.ROOM_NAME, RoomNameStateEventContent(name=self.title) - ) - self.name_set = True - except Exception as e: - self.log.warning(f"Failed to set room name: {e}") - self.name_set = False + if self.mxid: + try: + await self._try_set_state( + sender, EventType.ROOM_NAME, RoomNameStateEventContent(name=self.title) + ) + self.name_set = True + except Exception as e: + self.log.warning(f"Failed to set room name: {e}") + self.name_set = False if save: await self.save() return True @@ -1152,14 +1154,17 @@ class Portal(DBPortal, BasePortal): if puppet.avatar_url: self.photo_id = puppet.photo_id self.avatar_url = puppet.avatar_url - try: - await self._try_set_state( - None, EventType.ROOM_AVATAR, RoomAvatarStateEventContent(url=self.avatar_url) - ) - self.avatar_set = True - except Exception as e: - self.log.warning(f"Failed to set room avatar: {e}") - self.avatar_set = False + if self.mxid: + try: + await self._try_set_state( + None, + EventType.ROOM_AVATAR, + RoomAvatarStateEventContent(url=self.avatar_url), + ) + self.avatar_set = True + except Exception as e: + self.log.warning(f"Failed to set room avatar: {e}") + self.avatar_set = False return True elif photo is not None and user is not None: return await self._update_avatar(user, photo=photo) @@ -1202,14 +1207,17 @@ class Portal(DBPortal, BasePortal): return False self.photo_id = photo_id self.avatar_url = file.mxc - try: - await self._try_set_state( - sender, EventType.ROOM_AVATAR, RoomAvatarStateEventContent(url=self.avatar_url) - ) - self.avatar_set = True - except Exception as e: - self.log.warning(f"Failed to set room avatar: {e}") - self.avatar_set = False + if self.mxid: + try: + await self._try_set_state( + sender, + EventType.ROOM_AVATAR, + RoomAvatarStateEventContent(url=self.avatar_url), + ) + self.avatar_set = True + except Exception as e: + self.log.warning(f"Failed to set room avatar: {e}") + self.avatar_set = False if save: await self.save() return True