From 8ad2b69bedb2292a65afd1c9a5fe75ff6b5ddce7 Mon Sep 17 00:00:00 2001 From: Dan <14043624+delivrance@users.noreply.github.com> Date: Mon, 26 Feb 2018 15:49:07 +0100 Subject: [PATCH] Add get_participants example --- examples/get_participants.py | 38 ++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 examples/get_participants.py diff --git a/examples/get_participants.py b/examples/get_participants.py new file mode 100644 index 00000000..3397eb42 --- /dev/null +++ b/examples/get_participants.py @@ -0,0 +1,38 @@ +import time + +from pyrogram import Client +from pyrogram.api import functions, types +from pyrogram.api.errors import FloodWait + +client = Client("example") +client.start() + +target = "username" # Target channel/supergroup +users = [] # List that will contain all the users of the target chat +limit = 200 # Amount of users to retrieve for each API call +offset = 0 # Offset starts at 0 + +while True: + try: + participants = client.send( + functions.channels.GetParticipants( + channel=client.resolve_peer(target), + filter=types.ChannelParticipantsSearch(""), # Filter by empty string (search for all) + offset=offset, + limit=limit, + hash=0 + ) + ) + except FloodWait as e: + # Very large channels will trigger FloodWait. + # When happens, wait X seconds before continuing + time.sleep(e.x) + continue + + if not participants.participants: + break # No more participants left + + users.extend(participants.users) + offset += limit + +# Now the "users" list contains all the members of the target chat