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