
    YPiy'                        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rddlmZ  G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zy)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                   x    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Zeddeded   dd f fd       Z x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                    t         |   |       t        j                  t        j
                  ||      | _        || _        | j                  | j                  f| _        | j                          y )Nr   )
super__init__r
   
get_memberr   MessageOriginTyper   r   	_id_attrs_freeze)selfr   r   r   	__class__s       M/root/twitch_bot/venv/lib/python3.12/site-packages/telegram/_messageorigin.pyr   zMessageOrigin.__init__P   sZ     	J/)D)DdDQ	"&	 IIII
 	    databotr   returnc                    | j                  |      }| j                  t        | j                  t        | j
                  t        | j                  t        i}| t        u r8|j                  d      |v r%||j                  d         j                  ||      S t        |      }t        |j                  d      |      |d<   d|v r#t        |j                  d      t         |      |d<   d|v r#t        |j                  d      t"        |      |d<   d|v r#t        |j                  d      t"        |      |d<   t$        | 1  ||      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"   s        r#   r4   zMessageOrigin.de_jsonb   s$   
 t$ HH'OO4HH'KK-	:
 -DHHV$4$F!$((6"23;;3;OO1#6
%dhhv&6zJVD "2488M3JDRU"VDD "2488M3JDRU"VDT>+DHHV,<dCHDLwDc22r$   N)__name__
__module____qualname____doc__	__slots__r   r   r   r   str__annotations__r   r   r   dtmdatetimer   r   r   classmethodr4   __classcell__r"   s   @r#   r   r   %   s    8I
 !2277D%*7<'99EEKsEC 2277D%*7<#55==GU3Z=? *. ll
 X&$ 38 3(5/ 3_ 3 3r$   r   c                   T     e Zd ZdZdZdddej                  dedee	   f fdZ
 x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                    t         |   | j                  ||       | j                         5  || _        d d d        y # 1 sw Y   y xY wN)r   r   r   )r   r   r   	_unfrozenr*   )r!   r   r*   r   r"   s       r#   r   zMessageOriginUser.__init__   sD     	diidzJ^^ 	1%0D	1 	1 	1	   ?A)r9   r:   r;   r<   r=   r@   rA   r	   r   r   r   rC   rD   s   @r#   r.   r.      sC    $ !I *.
1ll
1 
1
 X&
1 
1r$   r.   c                   T     e Zd ZdZdZdddej                  dedee	   f fdZ
 xZS )	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   rK   r   c                    t         |   | j                  ||       | j                         5  || _        d d d        y # 1 sw Y   y xY wrG   )r   r   r   rH   rK   )r!   r   rK   r   r"   s       r#   r   z MessageOriginHiddenUser.__init__   sF     	d..TjQ^^ 	:)9D!	: 	: 	:rI   )r9   r:   r;   r<   r=   r@   rA   r>   r   r   r   rC   rD   s   @r#   r/   r/      sC    $ &I *.
:ll
: 
:
 X&
: 
:r$   r/   c                   b     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	Z xZS )r0   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+   rN   r   c                    t         |   | j                  ||       | j                         5  || _        || _        d d d        y # 1 sw Y   y xY wrG   )r   r   r   rH   r+   rN   )r!   r   r+   rN   r   r"   s        r#   r   zMessageOriginChat.__init__   sP     	diidzJ^^ 	D%0D3CD!	D 	D 	Ds   AAr8   )r9   r:   r;   r<   r=   r@   rA   r   r   r>   r   r   rC   rD   s   @r#   r0   r0      sb    ,I +/	D *.DllD D #3-	D X&D Dr$   r0   c                   f     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
Z xZS )r1   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.
    )rN   r,   
message_idNr   r   r,   rQ   rN   r   c                    t         |   | j                  ||       | j                         5  || _        || _        || _        d d d        y # 1 sw Y   y xY wrG   )r   r   r   rH   r,   rQ   rN   )r!   r   r,   rQ   rN   r   r"   s         r#   r   zMessageOriginChannel.__init__  sV     	dll*M^^ 	D"DI#-DO3CD!	D 	D 	Ds   AAr8   )r9   r:   r;   r<   r=   r@   rA   r   intr   r>   r   r   rC   rD   s   @r#   r1   r1      sm    ,I +/D *.DllD D 	D
 #3-D X&D Dr$   r1   )r<   rA   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/   r0   r1    r$   r#   <module>r^      sx   & M  1 1   3    < Q *Y3N Y3x1 1D:m :D(D (DV+D= +Dr$   