o
    -˜ŽjQ  ã                   @   s:   d dl mZmZ d dlZd dlmZmZ G dd„ dƒZdS )é    )ÚUnionÚAsyncGeneratorN)ÚtypesÚrawc                
   @   s6   e Zd Z	ddddeeef deded fdd	„Zd
S )ÚGetCallMembersr   Úselfzpyrogram.ClientÚchat_idÚlimitÚreturn)ztypes.GroupCallMemberNc                   sF  �ˆ  |¡I dH }t|tjjƒrˆ tjjj|d�¡I dH }nt|tjj	ƒr6ˆ tjj
j|jd�¡I dH }ntdƒ‚|j}t|ddƒsGtdƒ‚d}d}t|ƒpPd	}td
|ƒ}	 ˆjtjjj|jg g ||d�dd�I dH }dd„ |jD ƒ‰dd„ |jD ƒ‰ ‡ ‡‡fdd„|jD ƒ}	|	sŒdS |j}|	D ]}
|
V  |d7 }||kr¡ dS q‘qW)aÖ  Get the members list of a chat call.

        A chat can be either a basic group or a supergroup.

        .. include:: /_includes/usable-by/users.rst

        Parameters:
            chat_id (``int`` | ``str``):
                Unique identifier (int) or username (str) of the target chat.

            limit (``int``, *optional*):
                Limits the number of members to be retrieved.

        Returns:
            ``Generator``: On success, a generator yielding :obj:`~pyrogram.types.GroupCallMember` objects is returned.

        Example:
            .. code-block:: python

                # Get members
                async for member in app.get_call_members(chat_id):
                    print(member)
        N)Úchannel)r   z3Target chat should be group, supergroup or channel.Úcallz%There is no active call in this chat.r   Ú iÿÿÿé   T)r   ÚidsÚsourcesÚoffsetr	   é<   )Úsleep_thresholdc                 S   ó   i | ]}|j |“qS © ©Úid)Ú.0Úur   r   úd/var/www/kodo/Anonymous/send/lib/python3.10/site-packages/pyrogram/methods/phone/get_call_members.pyÚ
<dictcomp>U   ó    z3GetCallMembers.get_call_members.<locals>.<dictcomp>c                 S   r   r   r   )r   Úcr   r   r   r   V   r   c                    s   g | ]}t j ˆ|ˆˆ ¡‘qS r   )r   ÚGroupCallMemberÚ_parse)r   Úmember©Úchatsr   Úusersr   r   Ú
<listcomp>W   s    ÿÿz3GetCallMembers.get_call_members.<locals>.<listcomp>é   )Úresolve_peerÚ
isinstancer   r   ÚInputPeerChannelÚinvokeÚ	functionsÚchannelsÚGetFullChannelÚInputPeerChatÚmessagesÚGetFullChatr   Ú
ValueErrorÚ	full_chatÚgetattrÚabsÚminÚphoneÚGetGroupParticipantsr   r#   r"   ÚparticipantsÚnext_offset)r   r   r	   ÚpeerÚrr1   Úcurrentr   ÚtotalÚmembersr    r   r!   r   Úget_call_members   sP   € 
ûøþÿãzGetCallMembers.get_call_membersN)r   )Ú__name__Ú
__module__Ú__qualname__r   ÚintÚstrr   r>   r   r   r   r   r      s    ýÿ
þýür   )Útypingr   r   Úpyrogramr   r   r   r   r   r   r   Ú<module>   s   