
    ;Si$                     p    d dl Z d dlZd dlZddlmZmZ ddlmZ ej                  rddl	m
Z
  G d d      Zy)	    N   )helpersutils)types   )TelegramClientc                   d    e Zd Zed
d       Zej
                  dddefd       Zd
dZd
dZd
dZ	y	)MessageParseMethodsselfr   c                     | j                   S )a  
        This property is the default parse mode used when sending messages.
        Defaults to `telethon.extensions.markdown`. It will always
        be either `None` or an object with ``parse`` and ``unparse``
        methods.

        When setting a different value it should be one of:

        * Object with ``parse`` and ``unparse`` methods.
        * A ``callable`` to act as the parse method.
        * A `str` indicating the ``parse_mode``. For Markdown ``'md'``
          or ``'markdown'`` may be used. For HTML, ``'htm'`` or ``'html'``
          may be used.

        The ``parse`` method should be a function accepting a single
        parameter, the text to parse, and returning a tuple consisting
        of ``(parsed message str, [MessageEntity instances])``.

        The ``unparse`` method should be the inverse of ``parse`` such
        that ``assert text == unparse(*parse(text))``.

        See :tl:`MessageEntity` for allowed message entities.

        Example
            .. code-block:: python

                # Disabling default formatting
                client.parse_mode = None

                # Enabling HTML as the default format
                client.parse_mode = 'html'
        )_parse_mode)r   s    a/var/www/OnlineNewsSite/project/venv/lib/python3.12/site-packages/telethon/client/messageparse.py
parse_modezMessageParseMethods.parse_mode   s    D     modec                 8    t        j                  |      | _        y )N)r   sanitize_parse_moder   )r   r   s     r   r   zMessageParseMethods.parse_mode4   s     44T:r   c                    K   	 t        j                  ||   j                  ||   j                  | j	                  |       d{         ||<   y7 # t
        t        f$ r Y yw xY ww)z{
        Helper method to replace ``entities[i]`` to mention ``user``,
        or do nothing if it can't be found.
        NTF)r   InputMessageEntityMentionNameoffsetlengthget_input_entity
ValueError	TypeError)r   entitiesiusers       r   _replace_with_mentionz)MessageParseMethods._replace_with_mention<   sk     
	==""HQK$6$6++D11HQK  2 I& 		s:   A'?A AA A'A A$!A'#A$$A'c                   K   |dk(  r| j                   }nt        j                  |      }|s|g fS |}|j                  |      \  }}|r|s|st	        d      t        t        t        |                  D ]  }||   }|j                  s||= t        |t        j                        r|t        j                  d|j                        }|sV|j                  d      rt!        |j                  d            n|j                  }| j#                  |||       d{   }	|	r||= t        |t        j$                  t        j&                  f      s| j#                  |||j(                         d{   }	|	r||=  ||fS 7 i7 w)zY
        Returns a (parsed message, entities) tuple depending on ``parse_mode``.
         zFailed to parse messagez^@|\+|tg://user\?id=(\d+)r   N)r   r   r   parser   reversedrangelenr   
isinstancer   MessageEntityTextUrlrematchurlgroupintr   MessageEntityMentionNamer   user_id)
r   messager   original_messagemsg_entitiesr   emr   
is_mentions
             r   _parse_message_textz'MessageParseMethods._parse_message_textJ   sj     ))J22:>JB;" * 0 0 9GL677%L 123 	(AQA88 !OAu99:HH9155A./ggaj3qwwqz?aeeD'+'A'A,PQSW'X!XJ%(OA > > % C C E F#'#=#=lAqyy#YY
!$Q%	(( $$ "Y
 Zs=   CF
AFFF.F F.F/F7FFc           	      
   t        |t        j                        r|j                  g}i }nt        |t        j                  t        j
                  f      rX|j                  }t        j                  |j                  |j                        D ci c]  }t        j                  |      | }}nyi }i }|D ]}  }	t        |	t        j                        r|	j                  ||	j                  <   8t        |	t        j                   t        j"                  f      rp|	j$                  j'                  | ||       t)        |d      st        j*                  |      r$|	j$                  ||	j$                  j                  <   |	j$                  c S t        |	t        j,                        rt/        j0                  |j2                        t.        j4                  j6                  k7  r|	j$                  j'                  | ||       t)        |d      r%|	j$                  ||	j$                  j                  <   t|j                  |	j$                  j                  k(  s|	j$                  c S t        |	t        j8                        rt        j                  |j2                        t        j                  |	j$                  j:                        k(  rP|j                  |	j$                  j                  k(  s/|	j$                  j'                  | ||       |	j$                  c S t        |	t        j<                        rB|	j$                  j'                  | ||       |	j$                  ||	j$                  j                  <   t        |	t        j>                        s|j@                  jB                  j                  |	jD                  k(  st        jF                  |j                  t        jH                  |j2                        t        jJ                  |	jB                  |	jL                              }
|
j'                  | ||       |
c S  ||S t        |tN        tP        f      r|ntS        |dd      }|%| jT                  tV           jY                  d||       yt        j*                  |      sH|j[                  |j[                  |            }|s$| jT                  tV           jY                  d||       |S 	 |D cg c]
  }|||       c}S c c}w c c}w # t\        $ r' | jT                  tV           jY                  d||       Y nw xY w|D cg c]  }||v r|j[                  ||         nd c}S c c}w )a&  
        Extracts the response message known a request and Update result.
        The request may also be the ID of the message to match.

        If ``request is None`` this method returns ``{id: message}``.

        If ``request.random_id`` is a list, this method returns a list too.
        N	random_id)pollresults)idpeer_idmediaz;No random_id in %s to map to, returning None message for %sz)Request %s had missing message mapping %sz*Request %s had missing message mappings %s)/r%   r   UpdateShortupdateUpdatesUpdatesCombinedupdates	itertoolschainuserschatsr   get_peer_idUpdateMessageIDr9   r6   UpdateNewChannelMessageUpdateNewMessager.   _finish_inithasattris_list_likeUpdateEditMessager   _entity_typepeer_EntityTypeCHANNELUpdateEditChannelMessager:   UpdateNewScheduledMessageUpdateMessagePollr;   r7   poll_idMessageget_peerMessageMediaPollr8   r+   listgetattr_log__name__warninggetKeyError)r   requestresult
input_chatr@   r   xrandom_to_idid_to_messager=   r2   r6   msgrnds                 r   _get_response_messagez)MessageParseMethods._get_response_messageq   sV    fe//0}}oGH0E0E FGnnG "fllCE ))!,a/ EH E  8	F&%"7"7817V--.F1153I3I%K L++D(JG 7K0E4F4Fw4O7=~~M&.."3"34!>>)VU%<%<=**7<<8G<O<O<W<WW++D(JG 7K07=~~M&.."3"34ZZ6>>#4#44!>>)VU%C%CD''5##FNN$:$:;<::!2!22NN//h
K!>>)FE$C$CD++D(JG 4:>>fnn//0FE$;$;<==%%((FNN:":: %w|| <#44!'$*NNA NN4:>Hq8	t ?  )'C;?GWWVacgEh	IIh''MwX^`!!),##L$4$4Y$?@C		(#++?&R J	O@IJM,s"34JJmEl K 
	O IIh''<gvO
	O  !	
  l" l3/0
 	
 
s0   S9#T 'S>6T >T -T32T3:!UN)r   r   )
r[   
__module____qualname__propertyr   setterstrr   r4   rg   r    r   r   r
   r
      sQ     !  ! F ;) ; ; ;%%Nv
r   r
   )rA   r'   typing r   r   tlr   TYPE_CHECKINGtelegramclientr   r
   r    r   r   <module>rr      s,     	   	.[
 [
r   