o
    -˜Žj  ã                   @   sN   d dl mZmZ d dlZd dlmZmZmZ d dlmZm	Z	 G dd„ dƒZ
dS )é    )ÚAsyncGeneratorÚOptionalN)ÚtypesÚrawÚutils)ÚChannelPrivateÚPeerIdInvalidc                	   @   s.   e Zd Z	d
dddedeed  fdd„Zd	S )Ú
GetDialogsr   Úselfzpyrogram.ClientÚlimitÚreturn)ztypes.DialogNc              
   C  sr  �d}|pd}t d|ƒ}d}d}tj ¡ }	 | jtjjj||||dd�dd�I dH }d	d
„ |jD ƒ}dd
„ |j	D ƒ}	i }
|jD ]+}t
|tjjƒrIq?t |j¡}ztj | |||	¡I dH |
|< W q? ttfyj   Y q?w g }|jD ]}t
|tjjƒszqp| tj | ||
||	¡¡ qp|sŒdS |d }|jj}t |jj¡}|  |jj¡I dH }|D ]}|V  |d7 }||kr· dS q§q)au  Get a user's dialogs sequentially.

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

        Parameters:
            limit (``int``, *optional*):
                Limits the number of dialogs to be retrieved.
                By default, no limit is applied and all dialogs are returned.

        Returns:
            ``Generator``: A generator yielding :obj:`~pyrogram.types.Dialog` objects.

        Example:
            .. code-block:: python

                # Iterate through all dialogs
                async for dialog in app.get_dialogs():
                    print(dialog.chat.first_name or dialog.chat.title)
        r   iÿÿÿéd   T)Úoffset_dateÚ	offset_idÚoffset_peerr   Úhashé<   )Úsleep_thresholdNc                 S   ó   i | ]}|j |“qS © ©Úid©Ú.0Úir   r   ú_/var/www/kodo/Anonymous/send/lib/python3.10/site-packages/pyrogram/methods/chats/get_dialogs.pyÚ
<dictcomp>G   ó    z*GetDialogs.get_dialogs.<locals>.<dictcomp>c                 S   r   r   r   r   r   r   r   r   H   r   éÿÿÿÿé   )Úminr   r   ÚInputPeerEmptyÚinvokeÚ	functionsÚmessagesr	   ÚusersÚchatsÚ
isinstanceÚMessageEmptyr   Úget_peer_idÚpeer_idÚMessageÚ_parser   r   ÚdialogsÚDialogÚappendÚtop_messager   Údatetime_to_timestampÚdateÚresolve_peerÚchat)r
   r   ÚcurrentÚtotalr   r   r   Úrr%   r&   r$   ÚmessageÚchat_idr-   ÚdialogÚlastr   r   r   Úget_dialogs   s`   €

ûø
 ÿ
ÿÏzGetDialogs.get_dialogsN)r   )Ú__name__Ú
__module__Ú__qualname__Úintr   r   r<   r   r   r   r   r	      s    þÿþ
ýr	   )Útypingr   r   Úpyrogramr   r   r   Úpyrogram.errorsr   r   r	   r   r   r   r   Ú<module>   s
   