o
    -˜Žj`  ã                   @   sB   d dl mZmZmZ d dlZd dlmZmZmZ G dd„ dƒZdS )é    )ÚUnionÚListÚIterableN)ÚtypesÚrawÚutilsc                
   @   s>   e Zd Z	d	dddeeee f deded f fdd„ZdS )
Ú
GetFoldersNÚselfzpyrogram.ClientÚ
folder_idsÚreturnztypes.Folderc                 ƒ   sb  �t |dƒ‰ˆrt|ƒn|h‰ˆ tjj ¡ ¡I dH }‡‡fdd„|jD ƒ}i }|D ]}|j|j	 t
|dg ƒ D ]	}||t |¡< q8q*i ‰i ‰ tdt|ƒdƒD ]7}t| ¡ ƒ||d … }ˆ tjjjdd„ |D ƒd	�¡I dH }	ˆ d
d„ |	jD ƒ¡ ˆ  dd„ |	jD ƒ¡ qOt ‡ ‡‡fdd„|D ƒ¡}
|
s™dS |r¯ˆrŸ|
S |
D ]}|j|kr¬|  S q¡dS |
S )a¹  Get one or more folders by using folder identifiers.

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

        Parameters:
            folder_ids (``int`` | Iterable of ``int``, *optional*):
                Pass a single folder identifier or an iterable of folder ids (as integers) to get the content of the
                folders themselves.
                By default all folders are returned.

        Returns:
            :obj:`~pyrogram.types.Folder` | List of :obj:`~pyrogram.types.Folder`: In case *folder_ids* was not
            a list, a single folder is returned, otherwise a list of folders is returned.

        Example:
            .. code-block:: python

                # Get one folder
                await app.get_folders(12345)

                # Get more than one folders (list of folders)
                await app.get_folders([12345, 12346])

                # Get all folders
                await app.get_folders()
        Ú__iter__Nc                    s0   g | ]}t |tjjƒsˆr|jˆ v sˆs|‘qS © )Ú
isinstancer   r   ÚDialogFilterDefaultÚid©Ú.0Úfolder)ÚidsÚis_iterabler   ú_/var/www/kodo/Anonymous/send/lib/python3.10/site-packages/pyrogram/methods/chats/get_folders.pyÚ
<listcomp>>   s    þþÿz*GetFolders.get_folders.<locals>.<listcomp>Úexclude_peersr   éd   c                 S   s   g | ]	}t jj|d �‘qS ))Úpeer)r   r   ÚInputDialogPeer)r   r   r   r   r   r   N   s    )Úpeersc                 S   ó   i | ]}|j |“qS r   ©r   ©r   Úir   r   r   Ú
<dictcomp>Q   ó    z*GetFolders.get_folders.<locals>.<dictcomp>c                 S   r   r   r   r   r   r   r   r!   R   r"   c                    s   g | ]}t j ˆ|ˆˆ ¡‘qS r   )r   ÚFolderÚ_parser   )Úchatsr	   Úusersr   r   r   T   s    )ÚhasattrÚsetÚinvoker   Ú	functionsÚmessagesÚGetDialogFiltersÚfiltersÚpinned_peersÚinclude_peersÚgetattrr   Úget_peer_idÚrangeÚlenÚlistÚvaluesÚGetPeerDialogsÚupdater&   r%   r   r   r   )r	   r
   Údialog_filtersÚraw_foldersÚ	raw_peersr   r   r    ÚchunkÚrÚfoldersr   )r%   r   r   r	   r&   r   Úget_folders   sF   €
ÿÿÿ
ÿ
ÿzGetFolders.get_folders)N)Ú__name__Ú
__module__Ú__qualname__r   Úintr   r   r>   r   r   r   r   r      s    þÿþýr   )	Útypingr   r   r   Úpyrogramr   r   r   r   r   r   r   r   Ú<module>   s   