U
    g%                     @   st   d Z ddlZddlmZ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
 d
eZdS )zIThis module contains an object that represents an invite link for a chat.    N)TYPE_CHECKINGOptional)TelegramObject)User)extract_tzinfo_from_defaultsfrom_timestamp)JSONDict)Botc                       s   e Zd ZdZdZdddeeeeeee	j	 ee
 ee ee
 ee
 ee
 ee d fddZedee ed ed  d	 fd
dZ  ZS )ChatInviteLinku  This object represents an invite link for a chat.

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal, if their :attr:`invite_link`, :attr:`creator`, :attr:`creates_join_request`,
    :attr:`is_primary` and :attr:`is_revoked` are equal.

    .. versionadded:: 13.4
    .. versionchanged:: 20.0

       * The argument & attribute :attr:`creates_join_request` is now required to comply with the
         Bot API.
       * Comparing objects of this class now also takes :attr:`creates_join_request` into account.

    Args:
        invite_link (:obj:`str`): The invite link.
        creator (:class:`telegram.User`): Creator of the link.
        creates_join_request (:obj:`bool`): :obj:`True`, if users joining the chat via
            the link need to be approved by chat administrators.

            .. versionadded:: 13.8
        is_primary (:obj:`bool`): :obj:`True`, if the link is primary.
        is_revoked (:obj:`bool`): :obj:`True`, if the link is revoked.
        expire_date (:class:`datetime.datetime`, optional): Date when the link will expire or
            has been expired.

            .. versionchanged:: 20.3
                |datetime_localization|
        member_limit (:obj:`int`, optional): Maximum number of users that can be members of the
            chat simultaneously after joining the chat via this invite link;
            :tg-const:`telegram.constants.ChatInviteLinkLimit.MIN_MEMBER_LIMIT`-
            :tg-const:`telegram.constants.ChatInviteLinkLimit.MAX_MEMBER_LIMIT`.
        name (:obj:`str`, optional): Invite link name.
            0-:tg-const:`telegram.constants.ChatInviteLinkLimit.NAME_LENGTH` characters.

            .. versionadded:: 13.8
        pending_join_request_count (:obj:`int`, optional): Number of pending join requests
            created using this link.

            .. versionadded:: 13.8
        subscription_period (:obj:`int`, optional): The number of seconds the subscription will be
            active for before the next payment.

            .. versionadded:: 21.5
        subscription_price (:obj:`int`, optional): The amount of Telegram Stars a user must pay
            initially and after each subsequent subscription period to be a member of the chat
            using the link.

            .. versionadded:: 21.5

    Attributes:
        invite_link (:obj:`str`): The invite link. If the link was created by another chat
            administrator, then the second part of the link will be replaced with ``'…'``.
        creator (:class:`telegram.User`): Creator of the link.
        creates_join_request (:obj:`bool`): :obj:`True`, if users joining the chat via
            the link need to be approved by chat administrators.

            .. versionadded:: 13.8
        is_primary (:obj:`bool`): :obj:`True`, if the link is primary.
        is_revoked (:obj:`bool`): :obj:`True`, if the link is revoked.
        expire_date (:class:`datetime.datetime`): Optional. Date when the link will expire or
            has been expired.

            .. versionchanged:: 20.3
                |datetime_localization|
        member_limit (:obj:`int`): Optional. Maximum number of users that can be members
            of the chat simultaneously after joining the chat via this invite link;
            :tg-const:`telegram.constants.ChatInviteLinkLimit.MIN_MEMBER_LIMIT`-
            :tg-const:`telegram.constants.ChatInviteLinkLimit.MAX_MEMBER_LIMIT`.
        name (:obj:`str`): Optional. Invite link name.
            0-:tg-const:`telegram.constants.ChatInviteLinkLimit.NAME_LENGTH` characters.

            .. versionadded:: 13.8
        pending_join_request_count (:obj:`int`): Optional. Number of pending join requests
            created using this link.

            .. versionadded:: 13.8
        subscription_period (:obj:`int`): Optional. The number of seconds the subscription will be
            active for before the next payment.

            .. versionadded:: 21.5
        subscription_price (:obj:`int`): Optional. The amount of Telegram Stars a user must pay
            initially and after each subsequent subscription period to be a member of the chat
            using the link.

            .. versionadded:: 21.5

    )creates_join_requestcreatorexpire_dateinvite_link
is_primary
is_revokedmember_limitnamepending_join_request_countsubscription_periodsubscription_priceN
api_kwargs)r   r   r   r   r   r   r   r   r   r   r   r   c                   s   t  j|d || _|| _|| _|| _|| _|| _|| _|| _	|	d k	rNt
|	nd | _|
| _|| _| j| j| j| j| jf| _|   d S )Nr   )super__init__r   r   r   r   r   r   r   r   intr   r   r   Z	_id_attrsZ_freeze)selfr   r   r   r   r   r   r   r   r   r   r   r   	__class__ </tmp/pip-unpacked-wheel-swnnwir2/telegram/_chatinvitelink.pyr      s(    zChatInviteLink.__init__r	   )databotreturnc                    sX   |  |}|sdS t|}t|d||d< t|dd|d|d< t j||dS )z,See :meth:`telegram.TelegramObject.de_json`.Nr   r   )tzinfo)r    r!   )Z_parse_datar   r   de_jsongetr   r   )clsr    r!   Z
loc_tzinfor   r   r   r$      s    
zChatInviteLink.de_json)NNNNNN)N)__name__
__module____qualname____doc__	__slots__strr   boolr   datetimer   r   r   classmethodr$   __classcell__r   r   r   r   r
       s>   X      ,  r
   )r*   r.   typingr   r   Ztelegram._telegramobjectr   Ztelegram._userr   Ztelegram._utils.datetimer   r   Ztelegram._utils.typesr   Ztelegramr	   r
   r   r   r   r   <module>   s   