send_message_draft()

Client.send_message_draft()

Sends a draft for a being generated text message.

Use this method to stream a partial message to a user while the message is being generated. This method shows a live text preview as it is being composed. To achieve a smooth AI-streaming effect, call this method repeatedly with progressively longer text, passing a consistent draft_id for all frames of the same stream.

Usable by Users Bots
Parameters:
  • chat_id (``int`` | ``str``) – Unique identifier of the target chat.

  • draft_id (``int``) – Unique identifier of the message draft; must be non-zero. Changes of drafts with the same identifier are animated.

  • text (``str``) – Text of the message to be sent, 1-4096 characters after entities parsing.

  • parse_mode (:obj:`~pyrogram.enums.ParseMode`, *optional*) – Mode for parsing entities in the message text. By default, texts are parsed using Markdown and HTML styles.

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

  • message_thread_id (``int``, *optional*) – Unique identifier for the target message thread.

Returns:

``bool`` (On success, True is returned.)

Raises:
  • ValueError – If the text is empty or the chat type is not a private chat.:

  • RPCError –

Example

text = "Hello! I'm your Pyrogram bot! How can I help you?"
words = text.split()
draft_id = 1
for i, word in enumerate(words):
    await app.send_message_draft(
        chat_id=chat_id,
        draft_id=draft_id,
        text=" ".join(words[:i+1]),
    )
await app.send_message(chat_id, text)