mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2024-11-22 01:16:35 +03:00
Easy method
parent
c31dbf2249
commit
82c1ce3dcf
|
@ -1,27 +1,3 @@
|
|||
In order to get all the members from a mega-group or channel, you need to use [`GetParticipantsRequest`](https://lonamiwebs.github.io/Telethon/methods/channels/get_participants.html). As we can see it needs an [`InputChannel`](https://lonamiwebs.github.io/Telethon/methods/channels/get_participants.html), (passing the mega-group or channel you're going to use will work), and a mandatory [`ChannelParticipantsFilter`](https://lonamiwebs.github.io/Telethon/types/channel_participants_filter.html). The closest thing to "no filter" is to simply use [`ChannelParticipantsSearch`](https://lonamiwebs.github.io/Telethon/constructors/channel_participants_search.html) with an empty `'q'` string.
|
||||
|
||||
If we want to get *all* the members, we need to use a moving offset and a fixed limit:
|
||||
|
||||
```python
|
||||
from telethon.tl.functions.channels import GetParticipantsRequest
|
||||
from telethon.tl.types import ChannelParticipantsSearch
|
||||
from time import sleep
|
||||
|
||||
offset = 0
|
||||
limit = 100
|
||||
all_participants = []
|
||||
|
||||
while True:
|
||||
participants = client.invoke(GetParticipantsRequest(
|
||||
channel, ChannelParticipantsSearch(''), offset, limit, hash=0
|
||||
))
|
||||
if not participants.users:
|
||||
break
|
||||
all_participants.extend(participants.users)
|
||||
offset += len(participants.users)
|
||||
# sleep(1) # This line seems to be optional, no guarantees!
|
||||
```
|
||||
|
||||
Note that `GetParticipantsRequest` returns [`ChannelParticipants`](https://lonamiwebs.github.io/Telethon/constructors/channels/channel_participants.html), which may have more information you need (like the role of the participants, total count of members, etc.)
|
||||
|
||||
The `hash` of the request is **not** the channel hash. It's a special hash calculated based on the participants you already know about, so Telegram can avoid resending the whole thing. You can just leave it to 0.
|
||||
client.get_participants(group)
|
||||
```
|
Loading…
Reference in New Issue
Block a user