
    N[i                      D    d dl mZmZ d dlZd dlmZmZmZ  G d d      Zy)    )AsyncGeneratorOptionalN)typesrawutilsc            	       0    e Zd Z	 ddddedeed      fdZy)	
GetDialogsselfzpyrogram.Clientlimitreturn)ztypes.DialogNc           
       K   d}|xs d}t        d|      }d}d}t        j                  j                         }	 | j	                  t        j
                  j                  j                  ||||d      d       d{   }|j                  D ci c]  }|j                  | }	}|j                  D ci c]  }|j                  | }
}i }|j                  D ]s  }t        |t        j                  j                        r(t        j                  |j                        }t        j                   j#                  | ||	|
       d{   ||<   u g }|j$                  D ]Y  }t        |t        j                  j&                        s(|j)                  t        j&                  j#                  | |||	|
             [ |sy|d   }|j*                  j                  }t        j,                  |j*                  j.                        }| j1                  |j2                  j                         d{   }|D ]  }| |d	z  }||k\  s y 7 c c}w c c}w 7 7 .w)
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   )offset_date	offset_idoffset_peerr   hash<   )sleep_thresholdN   )minr   r   InputPeerEmptyinvoke	functionsmessagesr	   usersidchats
isinstanceMessageEmptyr   get_peer_idpeer_idMessage_parsedialogsDialogappendtop_messagedatetime_to_timestampdateresolve_peerchat)r
   r   currenttotalr   r   r   rir   r   r   messagechat_idr%   dialoglasts                    U/var/www/files/kim/lib/python3.12/site-packages/pyrogram/methods/chats/get_dialogs.pyget_dialogszGetDialogs.get_dialogs   s*    . &C	ii..0kk&&11 +' + 2  !# " 	 	A '(gg.QTT1W.E.&'gg.QTT1W.E.H:: \gsyy'='=>++GOO<*/--*>*>tWeUZ*[$[!\ G)) Z!&#))*:*:;u||2245RWXY	Z 2;D((++I55d6F6F6K6KLK $ 1 1$)),, ??K! 1e#S 	 /. %\" @sV   A:I<I=II#I3IA<IIC"I&I'I IIIN)r   )__name__
__module____qualname__intr   r   r6        r5   r	   r	      s5     NNN 
.!56	7Nr<   r	   )typingr   r   pyrogramr   r   r   r	   r;   r<   r5   <module>r?      s   & ,  & &O Or<   