Ë
    S"“jÉ#  ã                   ó\   — d dl Z ddlmZmZmZmZ ddlmZ ddlm	Z	 e G d„ de«      «       Z
y)	é    Né   )ÚEventBuilderÚEventCommonÚname_inner_eventÚ_into_id_seté   )Úutils)Útypesc            	       ór   ‡ — e Zd ZdZdddddddddœˆ fd„Zˆ fd„Zedd„«       Zˆ fd„Z G d	„ d
e	«      Z
ˆ xZS )Ú
NewMessageaÁ  
    Occurs whenever a new text message or a message with media arrives.

    Args:
        incoming (`bool`, optional):
            If set to `True`, only **incoming** messages will be handled.
            Mutually exclusive with ``outgoing`` (can only set one of either).

        outgoing (`bool`, optional):
            If set to `True`, only **outgoing** messages will be handled.
            Mutually exclusive with ``incoming`` (can only set one of either).

        from_users (`entity`, optional):
            Unlike `chats`, this parameter filters the *senders* of the
            message. That is, only messages *sent by these users* will be
            handled. Use `chats` if you want private messages with this/these
            users. `from_users` lets you filter by messages sent by *one or
            more* users across the desired chats (doesn't need a list).

        forwards (`bool`, optional):
            Whether forwarded messages should be handled or not. By default,
            both forwarded and normal messages are included. If it's `True`
            *only* forwards will be handled. If it's `False` only messages
            that are *not* forwards will be handled.

        pattern (`str`, `callable`, `Pattern`, optional):
            If set, only messages matching this pattern will be handled.
            You can specify a regex-like string which will be matched
            against the message, a callable function that returns `True`
            if a message is acceptable, or a compiled regex pattern.

    Example
        .. code-block:: python

            import asyncio
            from telethon import events

            @client.on(events.NewMessage(pattern='(?i)hello.+'))
            async def handler(event):
                # Respond whenever someone says "Hello" and something else
                await event.reply('Hey!')

            @client.on(events.NewMessage(outgoing=True, pattern='!ping'))
            async def handler(event):
                # Say "!pong" whenever you send "!ping", then delete both messages
                m = await event.respond('!pong')
                await asyncio.sleep(5)
                await client.delete_messages(event.chat_id, [event.id, m.id])
    NF)Úblacklist_chatsÚfuncÚincomingÚoutgoingÚ
from_usersÚforwardsÚpatternc                óÀ  •— |r|rd x}}n/|�|€| }n'|�|€| }nt        d„ ||fD «       «      rt        d«      ‚t        ‰	| �  |||¬«       || _        || _        || _        || _        t        |t        «      r%t        j                  |«      j                  | _        nS|rt        |«      r|| _        n>t        |d«      r't        |j                  «      r|j                  | _        nt!        d«      ‚t        d„ | j"                  | j                  | j
                  | j                  | j                  | j                  | j                  | j$                  fD «       «      | _        y )Nc              3   ó.   K  — | ]  }|d uxr | –— Œ y ­w©N© ©Ú.0Úxs     ú[/var/www/api.ozpay.ru/ozpay/venv/lib/python3.12/site-packages/telethon/events/newmessage.pyú	<genexpr>z&NewMessage.__init__.<locals>.<genexpr>D   s   è ø€ ÒG¨Q�˜$�Ò( q 5Ó(ÑGùs   ‚zNDon't create an event handler if you don't want neither incoming nor outgoing!)r   r   ÚmatchzInvalid pattern type givenc              3   ó$   K  — | ]  }|d u –— Œ
 y ­wr   r   r   s     r   r   z&NewMessage.__init__.<locals>.<genexpr>W   s   è ø€ ò ¨1˜Q $œYñ ùs   ‚)ÚallÚ
ValueErrorÚsuperÚ__init__r   r   r   r   Ú
isinstanceÚstrÚreÚcompiler   r   ÚcallableÚhasattrÚ	TypeErrorÚchatsr   Ú	_no_check)
Úselfr*   r   r   r   r   r   r   r   Ú	__class__s
            €r   r"   zNewMessage.__init__;   s>  ø€ ñ ™Ø"&Ð&ˆH‘xØÐ! hÐ&6Ø#�|‰HØÐ! hÐ&6Ø#�|‰HÜÑG°8¸XÐ2FÔGÔGÜð Ió Jð Jô 	‰Ñ˜°ÀdÐÔKØ ˆŒØ ˆŒØ$ˆŒØ ˆŒÜ�gœsÔ#ÜŸ:™: gÓ.×4Ñ4ˆD�LÙœH WÔ-Ø"ˆD�LÜ�W˜gÔ&¬8°G·M±MÔ+BØ"Ÿ=™=ˆD�LäÐ8Ó9Ð9ô ñ Ø�J‰J˜Ÿ™ t§}¡}°d·l±lØ�O‰O˜TŸ]™]¨D¯O©O¸T¿Y¹Yð1
ô ó ˆ�ó    c              ƒ   óŠ   •K  — t         ‰| �  |«      ƒ d {  –—†  t        || j                  «      ƒ d {  –—† | _        y 7 Œ(7 Œ­wr   )r!   Ú_resolver   r   )r,   Úclientr-   s     €r   r0   zNewMessage._resolve\   s8   øè ø€ Ü‰gÑ˜vÓ&×&Ð&Ü ,¨V°T·_±_Ó E×Eˆ�ð 	'øØEús   ƒA–?—A´AµAÁAc                 ó  — t        |t        j                  t        j                  f«      rBt        |j                  t        j
                  «      sy | j                  |j                  «      }|S t        |t        j                  «      rô| j                  t        j
                  |j                  |j                  |j                  |j                  |j                  t        j                  |j                  «      t        j                  |j                  r|n|j                  «      |j                  |j                  |j                   |j"                  |j$                  |j&                  |j(                  ¬«      «      }|S t        |t        j*                  «      rô| j                  t        j
                  |j                  |j                  |j                  |j                  |j                  t        j                  |j                  r|n|j,                  «      t        j.                  |j0                  «      |j                  |j                  |j                   |j"                  |j$                  |j&                  |j(                  ¬«      «      }|S y )N)ÚoutÚ	mentionedÚmedia_unreadÚsilentÚidÚpeer_idÚfrom_idÚmessageÚdateÚfwd_fromÚ
via_bot_idÚreply_toÚentitiesÚ
ttl_period)r3   r4   r5   r6   r7   r9   r8   r:   r;   r<   r=   r>   r?   r@   )r#   r
   ÚUpdateNewMessageÚUpdateNewChannelMessager:   ÚMessageÚEventÚUpdateShortMessager3   r4   r5   r6   r7   ÚPeerUserÚuser_idr;   r<   r=   r>   r?   r@   ÚUpdateShortChatMessager9   ÚPeerChatÚchat_id)ÚclsÚupdateÚothersÚself_idÚevents        r   ÚbuildzNewMessage.build`   sÃ  € ä�fÜ×-Ñ-¬u×/LÑ/LÐMôOä˜fŸn™n¬e¯m©mÔ<ØØ—I‘I˜fŸn™nÓ-ˆEðL ˆôK ˜¤× 8Ñ 8Ô9Ø—I‘IœeŸm™mØ—J‘JØ ×*Ñ*Ø#×0Ñ0Ø—}‘}Ø—9‘9ÜŸ™ v§~¡~Ó6ÜŸ™°&·*²*¡wÀ&Ç.Á.ÓQØŸ™Ø—[‘[ØŸ™Ø!×,Ñ,ØŸ™ØŸ™Ø!×,Ñ,ôó ˆEðH ˆô) ˜¤× <Ñ <Ô=Ø—I‘IœeŸm™mØ—J‘JØ ×*Ñ*Ø#×0Ñ0Ø—}‘}Ø—9‘9ÜŸ™°&·*²*¡wÀ&Ç.Á.ÓQÜŸ™ v§~¡~Ó6ØŸ™Ø—[‘[ØŸ™Ø!×,Ñ,ØŸ™ØŸ™Ø!×,Ñ,ôó ˆEð& ˆð r.   c                 ó*  •— | j                   r|S | j                  r|j                  j                  ry | j                  r|j                  j                  sy | j
                  �6t        | j
                  «      t        |j                  j                  «      k7  ry | j                  �#|j                  j                  | j                  vry | j                  r3| j                  |j                  j                  xs d«      }|sy ||_        t        ‰| �5  |«      S )NÚ )r+   r   r:   r3   r   r   Úboolr<   r   Ú	sender_idr   Úpattern_matchr!   Úfilter)r,   rO   r   r-   s      €r   rV   zNewMessage.filterŽ   sÌ   ø€ Ø�>Š>ØˆLà�=Š=˜UŸ]™]×.Ò.ØØ�=Š= §¡×!2Ò!2ØØ�=‰=Ð$Ü�D—M‘MÓ"¤d¨5¯=©=×+AÑ+AÓ&BÒBØà�?‰?Ð&Ø�}‰}×&Ñ&¨d¯o©oÑ=Øà�<Š<Ø—L‘L §¡×!6Ñ!6Ò!<¸"Ó=ˆEÙØØ"'ˆEÔä‰w‰~˜eÓ$Ð$r.   c                   ó8   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zd„ Zd„ Zˆ xZS )úNewMessage.EventaË  
        Represents the event of a new message. This event can be treated
        to all effects as a `Message <telethon.tl.custom.message.Message>`,
        so please **refer to its documentation** to know what you can do
        with this event.

        Members:
            message (`Message <telethon.tl.custom.message.Message>`):
                This is the only difference with the received
                `Message <telethon.tl.custom.message.Message>`, and will
                return the `telethon.tl.custom.message.Message` itself,
                not the text.

                See `Message <telethon.tl.custom.message.Message>` for
                the rest of available members and methods.

            pattern_match (`obj`):
                The resulting object from calling the passed ``pattern`` function.
                Here's an example using a string (defaults to regex match):

                >>> from telethon import TelegramClient, events
                >>> client = TelegramClient(...)
                >>>
                >>> @client.on(events.NewMessage(pattern=r'hi (\w+)!'))
                ... async def handler(event):
                ...     # In this case, the result is a ``Match`` object
                ...     # since the `str` pattern was converted into
                ...     # the ``re.compile(pattern).match`` function.
                ...     print('Welcomed', event.pattern_match.group(1))
                ...
                >>>
        c                 ó²   •— d| j                   d<   t        ‰| �	  |j                  |j                  t        |j                  «      ¬«       d | _        || _        y )NFÚ_init)Ú	chat_peerÚmsg_idÚ	broadcast)	Ú__dict__r!   r"   r8   r7   rS   ÚpostrU   r:   )r,   r:   r-   s     €r   r"   zNewMessage.Event.__init__Ç   sM   ø€ Ø%*ˆD�M‰M˜'Ñ"Ü‰GÑ w§¡Ø$+§J¡J¼$¸w¿|¹|Ó:Lð ô Nð "&ˆDÔØ"ˆD�Lr.   c                 ó”   •— t         ‰| �  |«       | j                  }|j                  || j                  d «       d| j
                  d<   y )NTrZ   )r!   Ú_set_clientr:   Ú_finish_initÚ	_entitiesr^   )r,   r1   Úmr-   s      €r   ra   zNewMessage.Event._set_clientÏ   s;   ø€ Ü‰GÑ Ô'Ø—‘ˆAØ�N‰N˜6 4§>¡>°4Ô8Ø%)ˆD�M‰M˜'Ò"r.   c                 óh   — || j                   v r| j                   |   S t        | j                  |«      S r   )r^   Úgetattrr:   )r,   Úitems     r   Ú__getattr__zNewMessage.Event.__getattr__Õ   s.   € Ø�t—}‘}Ñ$Ø—}‘} TÑ*Ð*ä˜tŸ|™|¨TÓ2Ð2r.   c                 óŒ   — | j                   d   r|| j                   v r|| j                   |<   y t        | j                  ||«       y )NrZ   )r^   Úsetattrr:   )r,   ÚnameÚvalues      r   Ú__setattr__zNewMessage.Event.__setattr__Û   s7   € Ø—=‘= Ò)¨T°T·]±]Ñ-BØ&+�—‘˜dÒ#ä˜Ÿ™ d¨EÕ2r.   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r"   ra   rh   rm   Ú__classcell__©r-   s   @r   rD   rX   ¦   s   ø„ ñ	ô@	#ô	*ò	3ö	3r.   rD   r   )NN)rn   ro   rp   rq   r"   r0   ÚclassmethodrP   rV   r   rD   rr   rs   s   @r   r   r      sU   ø„ ñ0ðb°eÀ$Ø¨Ø ¨4¸öôBFð ò+ó ð+ôZ%ô093�÷ 93ð 93r.   r   )r%   Úcommonr   r   r   r   rR   r	   Útlr
   r   r   r.   r   ú<module>rw      s2   ðÛ 	ç MÓ MÝ Ý ð ôV3�ó V3ó ñV3r.   