From 8a198e67a862a1304f0b9d811cde8887cd7cbac7 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Thu, 28 Jun 2018 00:20:55 +0300 Subject: [PATCH] Register bot chat membership when receiving messages --- mautrix_telegram/user.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/mautrix_telegram/user.py b/mautrix_telegram/user.py index b49ecb66..8eb7cc57 100644 --- a/mautrix_telegram/user.py +++ b/mautrix_telegram/user.py @@ -159,6 +159,26 @@ class User(AbstractUser): except Exception: self.log.exception("Failed to run post-login functions for %s", self.mxid) + async def update(self, update): + if not self.is_bot: + return + + if isinstance(update, (UpdateNewMessage, UpdateNewChannelMessage)): + message = update.message + if isinstance(message.to_id, PeerUser) and not message.out: + portal = po.Portal.get_by_tgid(message.from_id, peer_type="user", + tg_receiver=self.tgid) + else: + portal = po.Portal.get_by_entity(message.to_id, receiver_id=self.tgid) + elif isinstance(update, UpdateShortChatMessage): + portal = po.Portal.get_by_tgid(update.chat_id, peer_type="chat") + elif isinstance(update, UpdateShortMessage): + portal = po.Portal.get_by_tgid(update.user_id, self.tgid, "user") + else: + return + + self.register_portal(portal) + # endregion # region Telegram actions that need custom methods @@ -261,7 +281,7 @@ class User(AbstractUser): async def needs_relaybot(self, portal): return not await self.is_logged_in() or ( - self.is_bot and portal.tgid_full not in self.portals) + self.is_bot and portal.tgid_full not in self.portals) def _hash_contacts(self): acc = 0