
    ;Si^                     P    d dl mZmZmZ ddlmZ ddlmZ e G d de             Zy)   )EventBuilderEventCommonname_inner_event   )utils)typesc                   b     e Zd ZdZ	 d
dddd fdZedd       Z fdZ G d d	e      Z	 xZ
S )MessageReadae  
    Occurs whenever one or more messages are read in a chat.

    Args:
        inbox (`bool`, optional):
            If this argument is `True`, then when you read someone else's
            messages the event will be fired. By default (`False`) only
            when messages you sent are read by someone else will fire it.

    Example
        .. code-block:: python

            from telethon import events

            @client.on(events.MessageRead)
            async def handler(event):
                # Log when someone reads your messages
                print('Someone has read all your messages until', event.max_id)

            @client.on(events.MessageRead(inbox=True))
            async def handler(event):
                # Log when you read message in a chat (from your "inbox")
                print('You have read messages until', event.max_id)
    NF)blacklist_chatsfuncinboxc                8    t         |   |||       || _        y )N)r   r   )super__init__r   )selfchatsr   r   r   	__class__s        `/var/www/OnlineNewsSite/project/venv/lib/python3.12/site-packages/telethon/events/messageread.pyr   zMessageRead.__init__    s    dK
    c                 p   t        |t        j                        r'| j                  |j                  |j
                  d      S t        |t        j                        r'| j                  |j                  |j
                  d      S t        |t        j                        r:| j                  t        j                  |j                        |j
                  d      S t        |t        j                        r:| j                  t        j                  |j                        |j
                  d      S t        |t        j                        r| j                  |j                  d      S t        |t        j                        r;| j                  t        j                  |j                        |j                  d      S y )NFT)message_idscontents)
isinstancer   UpdateReadHistoryInboxEventpeermax_idUpdateReadHistoryOutboxUpdateReadChannelInboxPeerChannel
channel_idUpdateReadChannelOutboxUpdateReadMessagesContentsmessages!UpdateChannelReadMessagesContents)clsupdateothersself_ids       r   buildzMessageRead.build%   sJ   fe::;99V[[&--?? = =>99V[[&-->> < <=99U..v/@/@A#]]E3 3 = =>99U..v/@/@A#]]D2 2 @ @A99&*  , , G GH99U..v/@/@A)/&*  , , Ir   c                 V    | j                   |j                  k(  ry t        |   |      S N)r   outboxr   filter)r   eventr   s     r   r.   zMessageRead.filter9   s%    ::%w~e$$r   c                   Z     e Zd ZdZ	 	 d fd	Zed        Zed        Zd Zd Z	d Z
 xZS )	MessageRead.Eventa@  
        Represents the event of one or more messages being read.

        Members:
            max_id (`int`):
                Up to which message ID has been read. Every message
                with an ID equal or lower to it have been read.

            outbox (`bool`):
                `True` if someone else has read your messages.

            contents (`bool`):
                `True` if what was read were the contents of a message.
                This will be the case when e.g. you play a voice note.
                It may only be set on ``inbox`` events.
        c                     || _         || _        |xs g | _        d | _        |xs t	        |xs g d       | _        t        |   || j
                         y )N)default)r-   r   _message_ids	_messagesmaxr   r   r   )r   r   r   outr   r   r   s         r   r   zMessageRead.Event.__init__P   sP    DK$DM + 1rD!DN HC(9r4$HDKGT4;;/r   c                     | j                    S )zJ
            `True` if you have read someone else's messages.
            )r-   r   s    r   r   zMessageRead.Event.inboxY   s    
 {{?"r   c                     | j                   S )z
            The IDs of the messages **which contents'** were read.

            Use :meth:`is_read` if you need to check whether a message
            was read instead checking if it's in here.
            )r4   r9   s    r   r   zMessageRead.Event.message_ids`   s     $$$r   c                   K   | j                   a| j                          d{   }|sg | _         | j                   S | j                  j                  || j                         d{   | _         | j                   S 7 Y7 w)a  
            Returns the list of `Message <telethon.tl.custom.message.Message>`
            **which contents'** were read.

            Use :meth:`is_read` if you need to check whether a message
            was read instead checking if it's in here.
            N)ids)r5   get_input_chat_clientget_messagesr4   )r   chats     r   r?   zMessageRead.Event.get_messagesj   s~      ~~%!0022%'DN
 >>! ,0<<+D+D$"3"3 ,E ,5 &5DN >>! 3&5s"    B A<AB &A>'B >B c                    t        j                  |      r9|D cg c]-  }t        |t              r|n|j                  | j
                  k  / c}S t        |t              r|| j
                  k  S |j                  | j
                  k  S c c}w )z
            Returns `True` if the given message (or its ID) has been read.

            If a list-like argument is provided, this method will return a
            list of booleans indicating which messages have been read.
            )r   is_list_liker   intidr   )r   messagems      r   is_readzMessageRead.Event.is_read|   s     !!'*!(* )C0addt{{J * * $.gs#;,0KK8 8$ZZDKK8 8*s   2Bc                     t        j                  |      rt        | j                  |            S | j                  |      S )z*`True` if the message(s) are read message.)r   rB   allrG   )r   rE   s     r   __contains__zMessageRead.Event.__contains__   s3    !!'*4<<011||G,,r   )NNFFN)__name__
__module____qualname____doc__r   propertyr   r   r?   rG   rJ   __classcell__r   s   @r   r   r1   ?   sN    	  HM!%	0 
	# 
	# 
	% 
	%	"$	8	-r   r   r,   )NN)rK   rL   rM   rN   r   classmethodr*   r.   r   r   rP   rQ   s   @r   r
   r
      sK    2 16T
 , ,&%P- P- P-r   r
   N)	commonr   r   r    r   tlr   r
    r   r   <module>rW      s/    ? ?   H-, H- H-r   