diff --git a/mautrix_telegram/bot.py b/mautrix_telegram/bot.py index 0a6e71a4..5e29a5b2 100644 --- a/mautrix_telegram/bot.py +++ b/mautrix_telegram/bot.py @@ -65,6 +65,12 @@ class Bot(AbstractUser): except (ChannelPrivateError, ChannelInvalidError): self.remove_chat(id.channel_id) + def register_portal(self, portal): + self.add_chat(portal.tgid, portal.peer_type) + + def unregister_portal(self, portal): + self.remove_chat(portal.tgid) + def add_chat(self, id, type): if id not in self.chats: self.chats[id] = type diff --git a/mautrix_telegram/portal.py b/mautrix_telegram/portal.py index 858c3a9a..22e5e519 100644 --- a/mautrix_telegram/portal.py +++ b/mautrix_telegram/portal.py @@ -491,8 +491,11 @@ class Portal: if self.peer_type == "user": await self.main_intent.leave_room(self.mxid) self.delete() - del self.by_tgid[self.tgid_full] - del self.by_mxid[self.mxid] + try: + del self.by_tgid[self.tgid_full] + del self.by_mxid[self.mxid] + except KeyError: + pass elif source and source.tgid != user.tgid: if self.peer_type == "chat": await source.client(DeleteChatUserRequest(chat_id=self.tgid, user_id=user.tgid))