From c914a92dcfca3a98d02dbe591df49a8cc36bcc43 Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Sat, 12 Feb 2022 11:30:29 +0100 Subject: [PATCH] Start using the new Sender and Chat Getter interface --- telethon/_events/callbackquery.py | 17 +---------------- telethon/_events/userupdate.py | 4 ---- telethon/_sessions/types.py | 2 +- telethon/types/_custom/message.py | 12 ++++-------- .../interactive_telegram_client.py | 2 +- telethon_examples/replier.py | 2 +- 6 files changed, 8 insertions(+), 31 deletions(-) diff --git a/telethon/_events/callbackquery.py b/telethon/_events/callbackquery.py index 8d298349..585fba51 100644 --- a/telethon/_events/callbackquery.py +++ b/telethon/_events/callbackquery.py @@ -131,27 +131,12 @@ class CallbackQuery(EventBuilder, _custom.chatgetter.ChatGetter, _custom.senderg return self._message try: - chat = await self.get_input_chat() if self.is_channel else None - self._message = await self._client.get_messages( - chat, ids=self._message_id) + self._message = await self._client.get_messages(self.chat, ids=self._message_id) except ValueError: return return self._message - async def _refetch_sender(self): - self._sender = self._entities.get(self.sender_id) - if not self._sender: - return - - self._input_sender = utils.get_input_peer(self._chat) - if not getattr(self._input_sender, 'access_hash', True): - # getattr with True to handle the InputPeerSelf() case - m = await self.get_message() - if m: - self._sender = m._sender - self._input_sender = m._input_sender - async def answer( self, message=None, cache_time=0, *, url=None, alert=False): """ diff --git a/telethon/_events/userupdate.py b/telethon/_events/userupdate.py index b9af86e7..24d87708 100644 --- a/telethon/_events/userupdate.py +++ b/telethon/_events/userupdate.py @@ -104,10 +104,6 @@ class UserUpdate(EventBuilder, _custom.chatgetter.ChatGetter, _custom.sendergett """Alias for `input_sender `.""" return self.input_sender - async def get_input_user(self): - """Alias for `get_input_sender `.""" - return await self.get_input_sender() - @property def user_id(self): """Alias for `sender_id `.""" diff --git a/telethon/_sessions/types.py b/telethon/_sessions/types.py index 3aca03e4..4c9aa464 100644 --- a/telethon/_sessions/types.py +++ b/telethon/_sessions/types.py @@ -136,7 +136,7 @@ class Entity: return self.ty in (EntityType.GROUP, EntityType.MEGAGROUP) @property - def is_channel(self): + def is_broadcast(self): """ ``True`` if the entity is a broadcast channel or `broadcast group`_. diff --git a/telethon/types/_custom/message.py b/telethon/types/_custom/message.py index 84c2e409..f87142ee 100644 --- a/telethon/types/_custom/message.py +++ b/telethon/types/_custom/message.py @@ -866,7 +866,7 @@ class Message(ChatGetter, SenderGetter): """ # If the client wasn't set we can't emulate the behaviour correctly, # so as a best-effort simply return the chat peer. - if not self.out and self.is_private: + if not self.out and self.chat.is_user: return _tl.PeerUser(self._client._session_state.user_id) return self.peer_id @@ -928,7 +928,7 @@ class Message(ChatGetter, SenderGetter): # Bots cannot access other bots' messages by their ID. # However they can access them through replies... self._reply_message = await self._client.get_messages( - await self.get_input_chat() if self.is_channel else None, + self.chat, ids=_tl.InputMessageReplyTo(self.id) ) if not self._reply_message: @@ -937,7 +937,7 @@ class Message(ChatGetter, SenderGetter): # If that's the case, give it a second chance accessing # directly by its ID. self._reply_message = await self._client.get_messages( - self._input_chat if self.is_channel else None, + self.chat, ids=self.reply_to.reply_to_msg_id ) @@ -1286,8 +1286,7 @@ class Message(ChatGetter, SenderGetter): along with their input versions. """ try: - chat = await self.get_input_chat() if self.is_channel else None - msg = await self._client.get_messages(chat, ids=self.id) + msg = await self._client.get_messages(self.chat, ids=self.id) except ValueError: return # We may not have the input chat/get message failed if not msg: @@ -1302,9 +1301,6 @@ class Message(ChatGetter, SenderGetter): self._forward = msg._forward self._action_entities = msg._action_entities - async def _refetch_sender(self): - await self._reload_message() - def _set_buttons(self, chat, bot): """ Helper methods to set the buttons given the input sender and chat. diff --git a/telethon_examples/interactive_telegram_client.py b/telethon_examples/interactive_telegram_client.py index 10ca71a1..293890f5 100644 --- a/telethon_examples/interactive_telegram_client.py +++ b/telethon_examples/interactive_telegram_client.py @@ -371,7 +371,7 @@ class InteractiveTelegramClient(TelegramClient): # with events. Since they are methods, you know they may make an API # call, which can be expensive. chat = await event.get_chat() - if event.is_group: + if chat.is_group: if event.out: sprint('>> sent "{}" to chat {}'.format( event.text, get_display_name(chat) diff --git a/telethon_examples/replier.py b/telethon_examples/replier.py index e498bad9..59d17de1 100755 --- a/telethon_examples/replier.py +++ b/telethon_examples/replier.py @@ -78,7 +78,7 @@ async def handler(event): # and we said "save pic" in the message if event.out and event.is_reply and 'save pic' in event.raw_text: reply_msg = await event.get_reply_message() - replied_to_user = await reply_msg.get_input_sender() + replied_to_user = reply_msg.sender message = await event.reply('Downloading your profile photo...') file = await client.download_profile_photo(replied_to_user)