
    N[i                         d dl mZmZmZmZ d dlZd dlmZmZmZm	Z	 de	j                  j                  d ddfdeeef   dedd	d
ededeeef   ded   fdZ G d d      Zy)    )UnionListAsyncGeneratorOptionalN)rawtypesutilsenums d   chat_idqueryfilterenums.MessagesFilteroffsetlimit	from_userreturntypes.Messagec                 v  K   | j                  t        j                  j                  j	                  | j                  |       d {   ||j                         ddd||dd|r| j                  |       d {   nd d      d       d {   }t        j                  | |d       d {   S 7 k7 <7 (7 
w)Nr   )peerqr   min_datemax_date	offset_id
add_offsetr   min_idmax_idfrom_idhash<   )sleep_threshold)replies)	invoker   	functionsmessagesSearchresolve_peervaluer	   parse_messages)clientr   r   r   r   r   r   rs           \/var/www/files/kim/lib/python3.12/site-packages/pyrogram/methods/messages/search_messages.py	get_chunkr.      s      mm%%**733<<>  )))444! 	& 	
$ '   	A, %%fa;;;) 4 5	, <sH   AB9B10B96B3 7B9B5B9,B7-B93B95B97B9c                       e Zd Zddej                  j
                  ddfdddeeef   deded	d
dedeeef   de	e
d      fdZy)SearchMessagesr   r   Nselfzpyrogram.Clientr   r   r   r   r   r   r   r   )r   Nc           	        K   d}t        |      xs d}t        d|      }	 t        | ||||||       d{   }	|	sy|t        |	      z  }|	D ]  }
|
 |dz  }||k\  s y D7 .w)a	  Search for text and media messages inside a specific chat.

        If you want to get the messages count only, see :meth:`~pyrogram.Client.search_messages_count`.

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

        Parameters:
            chat_id (``int`` | ``str``):
                Unique identifier (int) or username (str) of the target chat.
                For your personal cloud (Saved Messages) you can simply use "me" or "self".
                For a contact that exists in your Telegram address book you can use his phone number (str).

            query (``str``, *optional*):
                Text query string.
                Required for text-only messages, optional for media messages (see the ``filter`` argument).
                When passed while searching for media messages, the query will be applied to captions.
                Defaults to "" (empty string).

            offset (``int``, *optional*):
                Sequential number of the first message to be returned.
                Defaults to 0.

            filter (:obj:`~pyrogram.enums.MessagesFilter`, *optional*):
                Pass a filter in order to search for specific kind of messages only.
                Defaults to any message (no filter).

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

            from_user (``int`` | ``str``, *optional*):
                Unique identifier (int) or username (str) of the target user you want to search for messages from.

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

        Example:
            .. code-block:: python

                from pyrogram import enums

                # Search for text messages in chat. Get the last 120 results
                async for message in app.search_messages(chat_id, query="hello", limit=120):
                    print(message.text)

                # Search for pinned messages in chat
                async for message in app.search_messages(chat_id, filter=enums.MessagesFilter.PINNED):
                    print(message.text)

                # Search for messages containing "hello" sent by yourself in chat
                async for message in app.search_messages(chat, "hello", from_user="me"):
                    print(message.text)
        r   ir   )r+   r   r   r   r   r   r   N   )absminr.   len)r1   r   r   r   r   r   r   currenttotalr&   messages              r-   search_messageszSearchMessages.search_messages>   s     ~ E
+mC&# H c(m#F# 1e#! s   4A'A%)A'!A')__name__
__module____qualname__r
   MessagesFilterEMPTYr   intstrr   r   r:        r-   r0   r0   <   s    
 ).)=)=)C)C%)YYsCxY Y 	Y
 'Y Y c?Y 
.!67	8YrC   r0   )typingr   r   r   r   pyrogramr   r   r	   r
   r>   r?   r@   rA   r.   r0   rB   rC   r-   <module>rF      s   & 9 8  - - %*%9%9%?%?!%<38_< < #	<
 < < S#X< 
/<D[ [rC   