o
    "hx'                     @   s   d Z ddlZddlmZmZmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZ erJddlmZ G dd deZG dd deZG dd deZG dd deZG dd deZdS )zFThis module contains the classes that represent Telegram MessageOigin.    N)TYPE_CHECKINGFinalOptional)	constants)Chat)TelegramObject)User)enum)de_json_optional)extract_tzinfo_from_defaultsfrom_timestamp)JSONDict)Botc                       s   e Zd ZU dZdZejjZee	 e
d< 	 ejjZee	 e
d< 	 ejjZee	 e
d< 	 ejjZee	 e
d< 	 ddd	e	d
ejdee f fddZeddeded dd f fddZ  ZS )MessageOrigina  
    Base class for telegram MessageOrigin object, it can be one of:

    * :class:`MessageOriginUser`
    * :class:`MessageOriginHiddenUser`
    * :class:`MessageOriginChat`
    * :class:`MessageOriginChannel`

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal, if their :attr:`type` and :attr:`date` are equal.

    .. versionadded:: 20.8

    Args:
        type (:obj:`str`): Type of the message origin, can be on of:
            :attr:`~telegram.MessageOrigin.USER`, :attr:`~telegram.MessageOrigin.HIDDEN_USER`,
            :attr:`~telegram.MessageOrigin.CHAT`, or :attr:`~telegram.MessageOrigin.CHANNEL`.
        date (:obj:`datetime.datetime`): Date the message was sent originally.
            |datetime_localization|

    Attributes:
        type (:obj:`str`): Type of the message origin, can be on of:
            :attr:`~telegram.MessageOrigin.USER`, :attr:`~telegram.MessageOrigin.HIDDEN_USER`,
            :attr:`~telegram.MessageOrigin.CHAT`, or :attr:`~telegram.MessageOrigin.CHANNEL`.
        date (:obj:`datetime.datetime`): Date the message was sent originally.
            |datetime_localization|
    )datetypeUSERHIDDEN_USERCHATCHANNELN
api_kwargsr   r   r   c                   s@   t  j|d ttj||| _|| _| j| jf| _| 	  d S )Nr   )
super__init__r	   
get_memberr   MessageOriginTyper   r   	_id_attrs_freeze)selfr   r   r   	__class__ J/var/www/html/venv/lib/python3.10/site-packages/telegram/_messageorigin.pyr   O   s   zMessageOrigin.__init__databotr   returnc                    s   |  |}| jt| jt| jt| jti}| t	u r*|
d|v r*||d j||dS t|}t|
d|d|d< d|v rHt|
dt||d< d|v rWt|
dt||d< d|v rft|
dt||d< t j||dS )zConverts JSON data to the appropriate :class:`MessageOrigin` object, i.e. takes
        care of selecting the correct subclass.
        r   )r#   r$   r   )tzinfosender_usersender_chatchat)_parse_datar   MessageOriginUserr   MessageOriginHiddenUserr   MessageOriginChatr   MessageOriginChannelr   getpopde_jsonr   r   r
   r   r   r   )clsr#   r$   _class_mapping
loc_tzinfor   r!   r"   r1   a   s"   
zMessageOrigin.de_jsonN)__name__
__module____qualname____doc__	__slots__r   r   r   r   str__annotations__r   r   r   dtmdatetimer   r   r   classmethodr1   __classcell__r!   r!   r   r"   r   $   s*   
 *r   c                       >   e Zd ZdZdZdddejdedee	 f fdd	Z
  ZS )
r+   av  
    The message was originally sent by a known user.

    .. versionadded:: 20.8

    Args:
        date (:obj:`datetime.datetime`): Date the message was sent originally.
            |datetime_localization|
        sender_user (:class:`telegram.User`): User that sent the message originally.

    Attributes:
        type (:obj:`str`): Type of the message origin. Always
            :tg-const:`~telegram.MessageOrigin.USER`.
        date (:obj:`datetime.datetime`): Date the message was sent originally.
            |datetime_localization|
        sender_user (:class:`telegram.User`): User that sent the message originally.
    )r'   Nr   r   r'   r   c                   H   t  j| j||d |   || _W d    d S 1 sw   Y  d S N)r   r   r   )r   r   r   	_unfrozenr'   )r   r   r'   r   r   r!   r"   r         
"zMessageOriginUser.__init__)r6   r7   r8   r9   r:   r=   r>   r   r   r   r   r@   r!   r!   r   r"   r+          r+   c                       rA   )
r,   a  
    The message was originally sent by an unknown user.

    .. versionadded:: 20.8

    Args:
        date (:obj:`datetime.datetime`): Date the message was sent originally.
            |datetime_localization|
        sender_user_name (:obj:`str`): Name of the user that sent the message originally.

    Attributes:
        type (:obj:`str`): Type of the message origin. Always
            :tg-const:`~telegram.MessageOrigin.HIDDEN_USER`.
        date (:obj:`datetime.datetime`): Date the message was sent originally.
            |datetime_localization|
        sender_user_name (:obj:`str`): Name of the user that sent the message originally.
    )sender_user_nameNr   r   rG   r   c                   rB   rC   )r   r   r   rD   rG   )r   r   rG   r   r   r!   r"   r      rE   z MessageOriginHiddenUser.__init__)r6   r7   r8   r9   r:   r=   r>   r;   r   r   r   r@   r!   r!   r   r"   r,      rF   r,   c                       sJ   e Zd ZdZdZ	ddddejdedee	 dee
 f fd	d
Z  ZS )r-   a  
    The message was originally sent on behalf of a chat to a group chat.

    .. versionadded:: 20.8

    Args:
        date (:obj:`datetime.datetime`): Date the message was sent originally.
            |datetime_localization|
        sender_chat (:class:`telegram.Chat`): Chat that sent the message originally.
        author_signature (:obj:`str`, optional): For messages originally sent by an anonymous chat
            administrator, original message author signature

    Attributes:
        type (:obj:`str`): Type of the message origin. Always
            :tg-const:`~telegram.MessageOrigin.CHAT`.
        date (:obj:`datetime.datetime`): Date the message was sent originally.
            |datetime_localization|
        sender_chat (:class:`telegram.Chat`): Chat that sent the message originally.
        author_signature (:obj:`str`): Optional. For messages originally sent by an anonymous chat
            administrator, original message author signature
    )author_signaturer(   Nr   r   r(   rH   r   c                   sN   t  j| j||d |   || _|| _W d    d S 1 s w   Y  d S rC   )r   r   r   rD   r(   rH   )r   r   r(   rH   r   r   r!   r"   r      s
   
"zMessageOriginChat.__init__r5   )r6   r7   r8   r9   r:   r=   r>   r   r   r;   r   r   r@   r!   r!   r   r"   r-      s    	r-   c                       sN   e Zd ZdZdZ	ddddejdedede	e
 d	e	e f
 fd
dZ  ZS )r.   a  
    The message was originally sent to a channel chat.

    .. versionadded:: 20.8

    Args:
        date (:obj:`datetime.datetime`): Date the message was sent originally.
            |datetime_localization|
        chat (:class:`telegram.Chat`): Channel chat to which the message was originally sent.
        message_id (:obj:`int`): Unique message identifier inside the chat.
        author_signature (:obj:`str`, optional): Signature of the original post author.

    Attributes:
        type (:obj:`str`): Type of the message origin. Always
            :tg-const:`~telegram.MessageOrigin.CHANNEL`.
        date (:obj:`datetime.datetime`): Date the message was sent originally.
            |datetime_localization|
        chat (:class:`telegram.Chat`): Channel chat to which the message was originally sent.
        message_id (:obj:`int`): Unique message identifier inside the chat.
        author_signature (:obj:`str`): Optional. Signature of the original post author.
    )rH   r)   
message_idNr   r   r)   rI   rH   r   c                   sT   t  j| j||d |   || _|| _|| _W d    d S 1 s#w   Y  d S rC   )r   r   r   rD   r)   rI   rH   )r   r   r)   rI   rH   r   r   r!   r"   r     s   	
"zMessageOriginChannel.__init__r5   )r6   r7   r8   r9   r:   r=   r>   r   intr   r;   r   r   r@   r!   r!   r   r"   r.      s"    r.   )r9   r>   r=   typingr   r   r   telegramr   telegram._chatr   telegram._telegramobjectr   telegram._userr   telegram._utilsr	   telegram._utils.argumentparsingr
   telegram._utils.datetimer   r   telegram._utils.typesr   r   r   r+   r,   r-   r.   r!   r!   r!   r"   <module>   s$   \""+