From 82c1ce3dcfe648878c04131b18bd3a83f288be54 Mon Sep 17 00:00:00 2001 From: Lonami Date: Mon, 25 Jun 2018 09:28:42 +0200 Subject: [PATCH] Easy method --- Retrieving-all-chat-members.md | 28 ++-------------------------- 1 file changed, 2 insertions(+), 26 deletions(-) diff --git a/Retrieving-all-chat-members.md b/Retrieving-all-chat-members.md index 030d88f..886ea03 100644 --- a/Retrieving-all-chat-members.md +++ b/Retrieving-all-chat-members.md @@ -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. \ No newline at end of file +client.get_participants(group) +``` \ No newline at end of file