From d06f403a6216abb8b0ebe6b0c5d624c580e9c87e Mon Sep 17 00:00:00 2001 From: YouTwitFace Date: Fri, 11 Oct 2019 12:02:59 -0400 Subject: [PATCH] Cache if channels are a megagroup or not --- telethon/client/chats.py | 8 ++++++-- telethon/client/telegrambaseclient.py | 3 +++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/telethon/client/chats.py b/telethon/client/chats.py index 1d42b40e..08242f0e 100644 --- a/telethon/client/chats.py +++ b/telethon/client/chats.py @@ -877,8 +877,12 @@ class ChatMethods: # would get a RIGHT_FORBIDDEN. However, it makes sense # that an admin can post messages, so we want to avoid the error if post_messages or edit_messages: - full_entity = await self.get_entity(entity) - if full_entity.megagroup: + # TODO get rid of this once sessions cache this information + if entity.channel_id not in self._megagroup_cache: + full_entity = await self.get_entity(entity) + self._megagroup_cache[entity.channel_id] = full_entity.megagroup + + if self._megagroup_cache[entity.channel_id]: post_messages = None edit_messages = None diff --git a/telethon/client/telegrambaseclient.py b/telethon/client/telegrambaseclient.py index b0882e6c..26f17a92 100644 --- a/telethon/client/telegrambaseclient.py +++ b/telethon/client/telegrambaseclient.py @@ -340,6 +340,9 @@ class TelegramBaseClient(abc.ABC): self._self_input_peer = None self._bot = None + # A place to store if channels are a megagroup or not (see `edit_admin`) + self._megagroup_cache = {} + # endregion # region Properties