diff --git a/pyrogram/client/methods/chats/get_chat_members.py b/pyrogram/client/methods/chats/get_chat_members.py index 990bf2f1..494ea472 100644 --- a/pyrogram/client/methods/chats/get_chat_members.py +++ b/pyrogram/client/methods/chats/get_chat_members.py @@ -16,12 +16,17 @@ # You should have received a copy of the GNU Lesser General Public License # along with Pyrogram. If not, see . +import asyncio +import logging from typing import Union import pyrogram from pyrogram.api import functions, types +from pyrogram.errors import FloodWait from ...ext import BaseClient +log = logging.getLogger(__name__) + class Filters: ALL = "all" @@ -116,17 +121,22 @@ class GetChatMembers(BaseClient): else: raise ValueError("Invalid filter \"{}\"".format(filter)) - return pyrogram.ChatMembers._parse( - self, - await self.send( - functions.channels.GetParticipants( - channel=peer, - filter=filter, - offset=offset, - limit=limit, - hash=0 + while True: + try: + return pyrogram.ChatMembers._parse( + self, + await self.send( + functions.channels.GetParticipants( + channel=peer, + filter=filter, + offset=offset, + limit=limit, + hash=0 + ) + ) ) - ) - ) + except FloodWait as e: + log.warning("Sleeping for {}s".format(e.x)) + await asyncio.sleep(e.x) else: raise ValueError("The chat_id \"{}\" belongs to a user".format(chat_id))