mirror of
				https://github.com/LonamiWebs/Telethon.git
				synced 2025-10-31 16:07:44 +03:00 
			
		
		
		
	Fix iter_participants in non-channels
This commit is contained in:
		
							parent
							
								
									4cc2a17765
								
							
						
					
					
						commit
						6799295115
					
				|  | @ -35,6 +35,9 @@ class _ParticipantsIter(RequestIter): | ||||||
|         else: |         else: | ||||||
|             self.filter_entity = lambda ent: True |             self.filter_entity = lambda ent: True | ||||||
| 
 | 
 | ||||||
|  |         # Only used for channels, but we should always set the attribute | ||||||
|  |         self.requests = [] | ||||||
|  | 
 | ||||||
|         if isinstance(entity, types.InputPeerChannel): |         if isinstance(entity, types.InputPeerChannel): | ||||||
|             self.total = (await self.client( |             self.total = (await self.client( | ||||||
|                 functions.channels.GetFullChannelRequest(entity) |                 functions.channels.GetFullChannelRequest(entity) | ||||||
|  | @ -45,21 +48,21 @@ class _ParticipantsIter(RequestIter): | ||||||
| 
 | 
 | ||||||
|             self.seen = set() |             self.seen = set() | ||||||
|             if aggressive and not filter: |             if aggressive and not filter: | ||||||
|                 self.requests = [functions.channels.GetParticipantsRequest( |                 self.requests.extend(functions.channels.GetParticipantsRequest( | ||||||
|                     channel=entity, |                     channel=entity, | ||||||
|                     filter=types.ChannelParticipantsSearch(x), |                     filter=types.ChannelParticipantsSearch(x), | ||||||
|                     offset=0, |                     offset=0, | ||||||
|                     limit=_MAX_PARTICIPANTS_CHUNK_SIZE, |                     limit=_MAX_PARTICIPANTS_CHUNK_SIZE, | ||||||
|                     hash=0 |                     hash=0 | ||||||
|                 ) for x in (search or string.ascii_lowercase)] |                 ) for x in (search or string.ascii_lowercase)) | ||||||
|             else: |             else: | ||||||
|                 self.requests = [functions.channels.GetParticipantsRequest( |                 self.requests.append(functions.channels.GetParticipantsRequest( | ||||||
|                     channel=entity, |                     channel=entity, | ||||||
|                     filter=filter or types.ChannelParticipantsSearch(search), |                     filter=filter or types.ChannelParticipantsSearch(search), | ||||||
|                     offset=0, |                     offset=0, | ||||||
|                     limit=_MAX_PARTICIPANTS_CHUNK_SIZE, |                     limit=_MAX_PARTICIPANTS_CHUNK_SIZE, | ||||||
|                     hash=0 |                     hash=0 | ||||||
|                 )] |                 )) | ||||||
| 
 | 
 | ||||||
|         elif isinstance(entity, types.InputPeerChat): |         elif isinstance(entity, types.InputPeerChat): | ||||||
|             full = await self.client( |             full = await self.client( | ||||||
|  |  | ||||||
|  | @ -47,13 +47,16 @@ class RequestIter(abc.ABC): | ||||||
| 
 | 
 | ||||||
|         This method may ``raise StopAsyncIteration`` if it cannot continue. |         This method may ``raise StopAsyncIteration`` if it cannot continue. | ||||||
| 
 | 
 | ||||||
|         This method may actually fill the initial buffer if it needs to. |         This method may actually fill the initial buffer if it needs to, | ||||||
|  |         and similarly to `_load_next_chunk`, ``return True`` to indicate | ||||||
|  |         that this is the last iteration (just the initial load). | ||||||
|         """ |         """ | ||||||
| 
 | 
 | ||||||
|     async def __anext__(self): |     async def __anext__(self): | ||||||
|         if self.buffer is None: |         if self.buffer is None: | ||||||
|             self.buffer = [] |             self.buffer = [] | ||||||
|             await self._init(**self.kwargs) |             if await self._init(**self.kwargs): | ||||||
|  |                 self.left = len(self.buffer) | ||||||
| 
 | 
 | ||||||
|         if self.left <= 0:  # <= 0 because subclasses may change it |         if self.left <= 0:  # <= 0 because subclasses may change it | ||||||
|             raise StopAsyncIteration |             raise StopAsyncIteration | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user