From 9541d5eceb5df095f5d00c80ee8229d1ec63cf5c Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sun, 9 Sep 2018 01:26:20 +0300 Subject: [PATCH] Don't bridge messages from unbridged chats received by bot (ref #219) --- mautrix_telegram/abstract_user.py | 13 +++++++++++++ mautrix_telegram/portal.py | 3 +-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/mautrix_telegram/abstract_user.py b/mautrix_telegram/abstract_user.py index 5452328f..e3f8819e 100644 --- a/mautrix_telegram/abstract_user.py +++ b/mautrix_telegram/abstract_user.py @@ -241,6 +241,9 @@ class AbstractUser(ABC): update: Union[UpdateChatAdmins, UpdateChatParticipantAdmin]) -> None: # TODO duplication not checked portal = po.Portal.get_by_tgid(update.chat_id, peer_type="chat") + if not portal or not portal.mxid: + return + if isinstance(update, UpdateChatAdmins): await portal.set_telegram_admins_enabled(update.enabled) elif isinstance(update, UpdateChatParticipantAdmin): @@ -253,6 +256,10 @@ class AbstractUser(ABC): portal = po.Portal.get_by_tgid(update.user_id, self.tgid, "user") else: portal = po.Portal.get_by_tgid(update.chat_id, peer_type="chat") + + if not portal or not portal.mxid: + return + sender = pu.Puppet.get(update.user_id) await portal.handle_telegram_typing(sender, update) @@ -345,6 +352,12 @@ class AbstractUser(ABC): async def update_message(self, original_update: UpdateMessage) -> None: update, sender, portal = self.get_message_details(original_update) + + if self.bot and not portal.mxid: + self.log.debug(f"Ignoring message received by bot in unbridged chat %s", + portal.tgid_log) + return + if self.ignore_incoming_bot_events and self.bot and sender.id == self.bot.tgid: self.log.debug(f"Ignoring relaybot-sent message %s to %s", update, portal.tgid_log) return diff --git a/mautrix_telegram/portal.py b/mautrix_telegram/portal.py index 3803da5a..8c422314 100644 --- a/mautrix_telegram/portal.py +++ b/mautrix_telegram/portal.py @@ -1168,8 +1168,7 @@ class Portal: async def handle_telegram_typing(self, user: p.Puppet, _: Union[UpdateUserTyping, UpdateChatUserTyping]) -> None: - if self.mxid: - await user.intent.set_typing(self.mxid, is_typing=True) + await user.intent.set_typing(self.mxid, is_typing=True) def get_external_url(self, evt: Message) -> Optional[str]: if self.peer_type == "channel" and self.username is not None: