o
    -˜Žj'  ã                   @   sZ   d dl m Z  d dlmZmZmZ d dlZd dlmZmZmZ d dlm	Z	 G dd„ dƒZ
dS )é    )Údatetime)ÚUnionÚListÚOptionalN)ÚrawÚutilsÚenums)Útypesc                /   @   sÄ   e Zd Z																				d!dddeeef dededed	 d
ed dedededededededeeef deeef deded de	dedededed ddf.dd „Z
dS )"ÚSendWebPageNÚ Úselfzpyrogram.ClientÚchat_idÚurlÚtextÚ
parse_modezenums.ParseModeÚentitiesztypes.MessageEntityÚlarge_mediaÚinvert_mediaÚdisable_notificationÚmessage_thread_idÚbusiness_connection_idÚreply_to_message_idÚreply_to_story_idÚreply_to_chat_idÚreply_to_monoforum_idÚ
quote_textÚquote_entitiesÚschedule_dateÚprotect_contentÚallow_paid_broadcastÚmessage_effect_idÚreply_markup)ztypes.InlineKeyboardMarkupztypes.ReplyKeyboardMarkupztypes.ReplyKeyboardRemoveztypes.ForceReplyÚreturnztypes.Messagec                 Ã   s*  �t  | |||¡I dH  ¡ \}}|s,|r,|D ]}t|tjjƒr$|j} nq|s,t  |¡}|s2t	dƒ‚t j
| ||||	|||||d�
I dH }tjj||| d�}tjjj|  |¡I dH |p\d||  ¡ t  |¡|rn| | ¡I dH nd|||||||d�}|
durŒ|  tjj|
|d�¡I dH }n|  |¡I dH }t|tjjƒrØ|  |¡I dH }t|tjjƒr­|jn|j }tj|jtj|tjj| d�|t   |j!¡|j"||rÓdd	„ |D ƒ| d
�S d| d
�S |j#D ]7}t|tjj$tjj%tjj&tjj'fƒ�rtjj(| |j)dd„ |j*D ƒdd„ |j+D ƒt|tjj&ƒ|
d�I dH   S qÛdS )a¥  Send Web Page Preview.

        .. include:: /_includes/usable-by/users-bots.rst

        Parameters:
            chat_id (``int`` | ``str``):
                Unique identifier (int) or username (str) of the target chat.
                For your personal cloud (Saved Messages) you can simply use "me" or "self".
                For a contact that exists in your Telegram address book you can use his phone number (str).
                You can also use chat public link in form of *t.me/<username>* (str).

            text (``str``, *optional*):
                Text of the message to be sent.

            url (``str``, *optional*):
                Link that will be previewed.
                If url not specified, the first URL found in the text will be used.

            parse_mode (:obj:`~pyrogram.enums.ParseMode`, *optional*):
                By default, texts are parsed using both Markdown and HTML styles.
                You can combine both syntaxes together.

            entities (List of :obj:`~pyrogram.types.MessageEntity`):
                List of special entities that appear in message text, which can be specified instead of *parse_mode*.

            large_media (``bool``, *optional*):
                Make web page preview image larger.

            invert_media (``bool``, *optional*):
                Move web page preview to above the message.

            disable_notification (``bool``, *optional*):
                Sends the message silently.
                Users will receive a notification with no sound.

            message_thread_id (``int``, *optional*):
                Unique identifier for the target message thread (topic) of the forum.
                for forum supergroups only.

            business_connection_id (``str``, *optional*):
                Business connection identifier.
                for business bots only.

            reply_to_message_id (``int``, *optional*):
                If the message is a reply, ID of the original message.
            
            reply_to_story_id (``int``, *optional*):
                Unique identifier for the target story.

            reply_to_chat_id (``int`` | ``str``, *optional*):
                Unique identifier for the origin chat.
                for reply to message from another chat.
                You can also use chat public link in form of *t.me/<username>* (str).

            reply_to_monoforum_id (``int`` | ``str``, *optional*):
                Unique identifier for the target user of monoforum.
                for reply to message from monoforum.
                for channel administrators only.

            quote_text (``str``, *optional*):
                Text to quote.
                for reply_to_message only.

            quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*):
                List of special entities that appear in quote_text, which can be specified instead of *parse_mode*.
                for reply_to_message only.

            schedule_date (:py:obj:`~datetime.datetime`, *optional*):
                Date when the message will be automatically sent.

            protect_content (``bool``, *optional*):
                Protects the contents of the sent message from forwarding and saving.

            allow_paid_broadcast (``bool``, *optional*):
                Pass True to allow the message to ignore regular broadcast limits for a small fee; for bots

            message_effect_id (``int`` ``64-bit``, *optional*):
                Unique identifier of the message effect to be added to the message; for private chats only.

            reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardRemove` | :obj:`~pyrogram.types.ForceReply`, *optional*):
                Additional interface options. An object for an inline keyboard, custom reply keyboard,
                instructions to remove reply keyboard or to force a reply from the user.

        Returns:
            :obj:`~pyrogram.types.Message`: On success, the sent message is returned.

        Example:
            .. code-block:: python

                await app.send_web_page("me", "https://github.com/Mayuri-Chan/pyrofork")

        NzURL not specified)
Úclientr   r   r   r   r   r   r   r   r   )r   Úforce_large_mediaÚforce_small_media)ÚpeerÚsilentÚreply_toÚ	random_idr   r!   ÚmessageÚmediar   r   Ú
noforwardsÚallow_paid_floodskipÚeffect)Úconnection_idÚquery)ÚidÚtyper#   c                 S   s   g | ]
}t j d |i ¡‘qS )N)r	   ÚMessageEntityÚ_parse)Ú.0Úentity© r7   úd/var/www/kodo/Anonymous/send/lib/python3.10/site-packages/pyrogram/methods/messages/send_web_page.pyÚ
<listcomp>á   s    ÿÿz-SendWebPage.send_web_page.<locals>.<listcomp>)r1   Úchatr   ÚdateÚoutgoingr!   r   r#   c                 S   ó   i | ]}|j |“qS r7   ©r1   ©r5   Úir7   r7   r8   Ú
<dictcomp>ï   ó    z-SendWebPage.send_web_page.<locals>.<dictcomp>c                 S   r=   r7   r>   r?   r7   r7   r8   rA   ð   rB   )Úis_scheduledr   ),r   Úparse_text_entitiesÚvaluesÚ
isinstancer   ÚMessageEntityTypeÚURLr   Úget_first_urlÚ
ValueErrorÚget_reply_tor   r	   ÚInputMediaWebPageÚ	functionsÚmessagesÚ	SendMediaÚresolve_peerÚrnd_idÚdatetime_to_timestampÚwriteÚinvokeÚInvokeWithBusinessConnectionÚUpdateShortSentMessageÚInputPeerUserÚuser_idr   ÚMessager1   ÚChatÚChatTypeÚPRIVATEÚtimestamp_to_datetimer;   ÚoutÚupdatesÚUpdateNewMessageÚUpdateNewChannelMessageÚUpdateNewScheduledMessageÚUpdateBotNewBusinessMessager4   r*   ÚusersÚchats)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r*   r6   r(   r+   ÚrpcÚrr&   Úpeer_idr@   r7   r7   r8   Úsend_web_page   s¼   €zþ
öýóþÿÿýý
ýþññ

ýûüÿzSendWebPage.send_web_page)Nr   NNNNNNNNNNNNNNNNNN)Ú__name__Ú
__module__Ú__qualname__r   ÚintÚstrr   r   Úboolr   ri   r7   r7   r7   r8   r
      sŒ    åÿ
þýüûúùø	÷
öõôó
ò
ñðïîíìëÿêär
   )r   Útypingr   r   r   Úpyrogramr   r   r   r	   r
   r7   r7   r7   r8   Ú<module>   s   