From 8e98ca1ce8a23810ed85ae53d36a7dd6d1987c1e Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Thu, 22 Feb 2018 00:37:03 +0200 Subject: [PATCH] Don't kick user from portal on logout if chat has relay bot. Fixes #75 --- mautrix_telegram/portal.py | 3 ++- mautrix_telegram/user.py | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/mautrix_telegram/portal.py b/mautrix_telegram/portal.py index af19d0ef..deab1b0c 100644 --- a/mautrix_telegram/portal.py +++ b/mautrix_telegram/portal.py @@ -446,11 +446,12 @@ class Portal: except MatrixRequestError: return [] authenticated = [] + has_bot = self.has_bot for member in members: if p.Puppet.get_id_from_mxid(member) or member == self.main_intent.mxid: continue user = await u.User.get_by_mxid(member).ensure_started() - if user.has_full_access: + if (has_bot and user.whitelisted) or user.has_full_access: authenticated.append(user) return authenticated diff --git a/mautrix_telegram/user.py b/mautrix_telegram/user.py index dd77893b..c7406159 100644 --- a/mautrix_telegram/user.py +++ b/mautrix_telegram/user.py @@ -175,6 +175,8 @@ class User(AbstractUser): async def log_out(self): for _, portal in self.portals.items(): + if portal.has_bot: + continue try: await portal.main_intent.kick(portal.mxid, self.mxid, "Logged out of Telegram.") except MatrixRequestError: