From fe573865aa9a23fa2149ec9b387e759e93d728d6 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Thu, 29 Oct 2020 22:33:20 +0200 Subject: [PATCH] Completely delete private chat portals when user logs out If it just kicks the user, logging in again later would cause the bridge to think there's a portal, but fail to invite the user again. Fixes #397 --- mautrix_telegram/user.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/mautrix_telegram/user.py b/mautrix_telegram/user.py index 394dee35..0d89c537 100644 --- a/mautrix_telegram/user.py +++ b/mautrix_telegram/user.py @@ -304,11 +304,14 @@ class User(AbstractUser, BaseUser): for _, portal in self.portals.items(): if not portal or portal.deleted or not portal.mxid or portal.has_bot: continue - try: - await portal.main_intent.kick_user(portal.mxid, self.mxid, - "Logged out of Telegram.") - except MatrixRequestError: - pass + if portal.peer_type == "user": + await portal.cleanup_portal("Logged out of Telegram") + else: + try: + await portal.main_intent.kick_user(portal.mxid, self.mxid, + "Logged out of Telegram.") + except MatrixRequestError: + pass self.portals = {} self.contacts = [] await self.save(portals=True, contacts=True)