mirror of
				https://github.com/LonamiWebs/Telethon.git
				synced 2025-11-04 01:47:27 +03:00 
			
		
		
		
	Inline the old _load_entities code
This commit is contained in:
		
							parent
							
								
									e84c9847c5
								
							
						
					
					
						commit
						6d004601d0
					
				| 
						 | 
					@ -301,7 +301,7 @@ class UpdateMethods(UserMethods):
 | 
				
			||||||
                    conv._on_read(ev)
 | 
					                    conv._on_read(ev)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if conv._custom:
 | 
					                if conv._custom:
 | 
				
			||||||
                    await conv._check_custom(built, channel_id, pts_date)
 | 
					                    await conv._check_custom(built)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for builder, callback in self._event_builders:
 | 
					        for builder, callback in self._event_builders:
 | 
				
			||||||
            event = built[type(builder)]
 | 
					            event = built[type(builder)]
 | 
				
			||||||
| 
						 | 
					@ -427,7 +427,6 @@ class EventBuilderDict:
 | 
				
			||||||
            if isinstance(event, EventCommon):
 | 
					            if isinstance(event, EventCommon):
 | 
				
			||||||
                event.original_update = self.update
 | 
					                event.original_update = self.update
 | 
				
			||||||
                event._set_client(self.client)
 | 
					                event._set_client(self.client)
 | 
				
			||||||
                event._load_entities()
 | 
					 | 
				
			||||||
            elif event:
 | 
					            elif event:
 | 
				
			||||||
                event._client = self.client
 | 
					                event._client = self.client
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -103,9 +103,9 @@ class CallbackQuery(EventBuilder):
 | 
				
			||||||
            self._message = None
 | 
					            self._message = None
 | 
				
			||||||
            self._answered = False
 | 
					            self._answered = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        def _load_entities(self):
 | 
					        def _set_client(self, client):
 | 
				
			||||||
 | 
					            super()._set_client(client)
 | 
				
			||||||
            self._sender, self._input_sender = self._get_entity_pair(self.sender_id)
 | 
					            self._sender, self._input_sender = self._get_entity_pair(self.sender_id)
 | 
				
			||||||
            return super()._load_entities() and self._input_sender is not None
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @property
 | 
					        @property
 | 
				
			||||||
        def id(self):
 | 
					        def id(self):
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -138,8 +138,6 @@ class EventCommon(ChatGetter, abc.ABC):
 | 
				
			||||||
        self._client = None
 | 
					        self._client = None
 | 
				
			||||||
        self._chat_peer = chat_peer
 | 
					        self._chat_peer = chat_peer
 | 
				
			||||||
        self._message_id = msg_id
 | 
					        self._message_id = msg_id
 | 
				
			||||||
        self._input_chat = None
 | 
					 | 
				
			||||||
        self._chat = None
 | 
					 | 
				
			||||||
        self._broadcast = broadcast
 | 
					        self._broadcast = broadcast
 | 
				
			||||||
        self.original_update = None
 | 
					        self.original_update = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -148,6 +146,10 @@ class EventCommon(ChatGetter, abc.ABC):
 | 
				
			||||||
        Setter so subclasses can act accordingly when the client is set.
 | 
					        Setter so subclasses can act accordingly when the client is set.
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        self._client = client
 | 
					        self._client = client
 | 
				
			||||||
 | 
					        if self._chat_peer:
 | 
				
			||||||
 | 
					            self._chat, self._input_chat = self._get_entity_pair(self.chat_id)
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            self._chat = self._input_chat = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _get_entity_pair(self, entity_id):
 | 
					    def _get_entity_pair(self, entity_id):
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
| 
						 | 
					@ -164,17 +166,6 @@ class EventCommon(ChatGetter, abc.ABC):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return entity, input_entity
 | 
					        return entity, input_entity
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _load_entities(self):
 | 
					 | 
				
			||||||
        """
 | 
					 | 
				
			||||||
        Must load all the entities it needs from cache, and
 | 
					 | 
				
			||||||
        return ``False`` if it could not find all of them.
 | 
					 | 
				
			||||||
        """
 | 
					 | 
				
			||||||
        if not self._chat_peer:
 | 
					 | 
				
			||||||
            return True  # Nothing to load (e.g. MessageDeleted)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        self._chat, self._input_chat = self._get_entity_pair(self.chat_id)
 | 
					 | 
				
			||||||
        return self._input_chat is not None
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @property
 | 
					    @property
 | 
				
			||||||
    def client(self):
 | 
					    def client(self):
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -87,9 +87,9 @@ class InlineQuery(EventBuilder):
 | 
				
			||||||
            self._input_sender = None
 | 
					            self._input_sender = None
 | 
				
			||||||
            self._sender = None
 | 
					            self._sender = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        def _load_entities(self):
 | 
					        def _set_client(self, client):
 | 
				
			||||||
 | 
					            super()._set_client(client)
 | 
				
			||||||
            self._sender, self._input_sender = self._get_entity_pair(self.sender_id)
 | 
					            self._sender, self._input_sender = self._get_entity_pair(self.sender_id)
 | 
				
			||||||
            return super()._load_entities() and self._input_sender is not None
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @property
 | 
					        @property
 | 
				
			||||||
        def id(self):
 | 
					        def id(self):
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -204,31 +204,19 @@ class NewMessage(EventBuilder):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        def _set_client(self, client):
 | 
					        def _set_client(self, client):
 | 
				
			||||||
            super()._set_client(client)
 | 
					            super()._set_client(client)
 | 
				
			||||||
            self.message._finish_init(client, self._entities, None)
 | 
					 | 
				
			||||||
            self.__dict__['_init'] = True  # No new attributes can be set
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        def _load_entities(self):
 | 
					 | 
				
			||||||
            m = self.message
 | 
					            m = self.message
 | 
				
			||||||
 | 
					            m._finish_init(client, self._entities, None)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            # TODO Duplicated work here
 | 
				
			||||||
            m._chat, m._input_chat = self._get_entity_pair(m.chat_id)
 | 
					            m._chat, m._input_chat = self._get_entity_pair(m.chat_id)
 | 
				
			||||||
            m._sender, m._input_sender = self._get_entity_pair(m.sender_id)
 | 
					            m._sender, m._input_sender = self._get_entity_pair(m.sender_id)
 | 
				
			||||||
            m._via_bot, m._via_input_bot = self._get_entity_pair(m.via_bot_id)
 | 
					            m._via_bot, m._via_input_bot = self._get_entity_pair(m.via_bot_id)
 | 
				
			||||||
            if not m.forward:
 | 
					            if m.forward:
 | 
				
			||||||
                forward_ok = True
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                f = m.forward
 | 
					                f = m.forward
 | 
				
			||||||
                f._chat, f._input_chat = self._get_entity_pair(f.chat_id)
 | 
					                f._chat, f._input_chat = self._get_entity_pair(f.chat_id)
 | 
				
			||||||
                f._sender, f._input_sender = self._get_entity_pair(f.sender_id)
 | 
					                f._sender, f._input_sender = self._get_entity_pair(f.sender_id)
 | 
				
			||||||
                forward_ok = (
 | 
					 | 
				
			||||||
                    (not f.chat_id or f._input_chat is not None)
 | 
					 | 
				
			||||||
                    and (not f.sender_id or f._input_sender is not None)
 | 
					 | 
				
			||||||
                )
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return (
 | 
					            self.__dict__['_init'] = True  # No new attributes can be set
 | 
				
			||||||
                m._input_chat is not None
 | 
					 | 
				
			||||||
                and (not m.sender_id or m._input_sender is not None)
 | 
					 | 
				
			||||||
                and (not m.via_bot_id or m._via_input_bot is not None)
 | 
					 | 
				
			||||||
                and forward_ok
 | 
					 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        def __getattr__(self, item):
 | 
					        def __getattr__(self, item):
 | 
				
			||||||
            if item in self.__dict__:
 | 
					            if item in self.__dict__:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -184,10 +184,7 @@ class UserUpdate(EventBuilder):
 | 
				
			||||||
                    self._chat_peer = types.PeerChannel(self._chat_peer)
 | 
					                    self._chat_peer = types.PeerChannel(self._chat_peer)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            super()._set_client(client)
 | 
					            super()._set_client(client)
 | 
				
			||||||
 | 
					            self._sender, self._input_sender = self._get_entity_pair(self._sender_id)
 | 
				
			||||||
        def _load_entities(self):
 | 
					 | 
				
			||||||
            self._sender, self._input_sender = self._get_entity_pair(self.sender_id)
 | 
					 | 
				
			||||||
            return super()._load_entities() and self._input_sender is not None
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @property
 | 
					        @property
 | 
				
			||||||
        def user(self):
 | 
					        def user(self):
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -294,14 +294,12 @@ class Conversation(ChatGetter):
 | 
				
			||||||
        self._custom[counter] = (event, future)
 | 
					        self._custom[counter] = (event, future)
 | 
				
			||||||
        return await result()
 | 
					        return await result()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    async def _check_custom(self, built, channel_id, pts_date):
 | 
					    async def _check_custom(self, built):
 | 
				
			||||||
        for i, (ev, fut) in self._custom.items():
 | 
					        for i, (ev, fut) in self._custom.items():
 | 
				
			||||||
            ev_type = type(ev)
 | 
					            ev_type = type(ev)
 | 
				
			||||||
            if built[ev_type] and ev.filter(built[ev_type]):
 | 
					            inst = built[ev_type]
 | 
				
			||||||
                if isinstance(ev, EventCommon) and not ev._load_entities():
 | 
					            if inst and ev.filter(inst):
 | 
				
			||||||
                    await ev._get_difference(channel_id, pts_date)
 | 
					                fut.set_result(inst)
 | 
				
			||||||
 | 
					 | 
				
			||||||
                fut.set_result(built[ev_type])
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _on_new_message(self, response):
 | 
					    def _on_new_message(self, response):
 | 
				
			||||||
        response = response.message
 | 
					        response = response.message
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user