U
    ;ga                     @   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                   @   sF   e Zd Zd
deeef eed ed eeee	eed dddd	Z
dS )SendMessageNzpyrogram.Clientzenums.ParseModeztypes.MessageEntity)ztypes.InlineKeyboardMarkupztypes.ReplyKeyboardMarkupztypes.ReplyKeyboardRemoveztypes.ForceReplyztypes.Message)selfchat_idtext
parse_modeentitiesdisable_web_page_previewdisable_notificationreply_to_message_idschedule_dateprotect_contentreply_markupreturnc                    sv  t | |||I dH  \}}| tjjj| |I dH |p>d|pDd|| 	 t 
||
rh|
| I dH nd|||	d
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|
|rdd |D nd| dS |jD ]h}t|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 text messages.

        .. 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).

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

            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*.

            disable_web_page_preview (``bool``, *optional*):
                Disables link previews for links in this message.

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

            reply_to_message_id (``int``, *optional*):
                If the message is a reply, ID of the original message.

            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.

            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 text message is returned.

        Example:
            .. code-block:: python

                # Simple example
                await app.send_message("me", "Message sent with **Pyrogram**!")

                # Disable web page previews
                await app.send_message("me", "https://docs.pyrogram.org",
                    disable_web_page_preview=True)

                # Reply to a message using its id
                await app.send_message("me", "this is a reply", reply_to_message_id=123)

            .. code-block:: python

                # For bots only, send messages with keyboards attached

                from pyrogram.types import (
                    ReplyKeyboardMarkup, InlineKeyboardMarkup, InlineKeyboardButton)

                # Send a normal keyboard
                await app.send_message(
                    chat_id, "Look at that button!",
                    reply_markup=ReplyKeyboardMarkup([["Nice!"]]))

                # Send an inline keyboard
                await app.send_message(
                    chat_id, "These are inline buttons",
                    reply_markup=InlineKeyboardMarkup(
                        [
                            [InlineKeyboardButton("Data", callback_data="callback_data")],
                            [InlineKeyboardButton("Docs", url="https://docs.pyrogram.org")]
                        ]))
        N)
peerZ
no_webpageZsilentZreply_to_msg_idZ	random_idr   r   messager   Z
noforwards)idtypeclientc                 S   s   g | ]}t jd |i qS )N)r	   ZMessageEntity_parse).0entity r   f/opt/bot/vods_filmes/script/venv/lib/python3.8/site-packages/pyrogram/methods/messages/send_message.py
<listcomp>   s   z,SendMessage.send_message.<locals>.<listcomp>)r   Zchatr   dateoutgoingr   r   r   c                 S   s   i | ]}|j |qS r   r   r   ir   r   r    
<dictcomp>   s      z,SendMessage.send_message.<locals>.<dictcomp>c                 S   s   i | ]}|j |qS r   r$   r%   r   r   r    r'      s      )Zis_scheduled)#r   Zparse_text_entitiesvaluesZinvoker   Z	functionsmessagesr
   Zresolve_peerZrnd_idZdatetime_to_timestampwrite
isinstancer	   ZUpdateShortSentMessageZInputPeerUserZuser_idr   Messager   ZChatr   ZChatTypeZPRIVATEZtimestamp_to_datetimer"   outZupdatesZUpdateNewMessageZUpdateNewChannelMessageZUpdateNewScheduledMessager   r   ZusersZchats)r   r   r   r   r   r   r   r   r   r   r   r   rr   Zpeer_idr&   r   r   r    send_message   sf    `



 zSendMessage.send_message)NNNNNNNN)__name__
__module____qualname__r   intstrr   r   boolr   r/   r   r   r   r    r
      s0           
r
   )r   typingr   r   r   Zpyrogramr   r   r   r	   r
   r   r   r   r    <module>   s
   