> ## Documentation Index
> Fetch the complete documentation index at: https://help.bots.lt/llms.txt
> Use this file to discover all available pages before exploring further.

# Messages & Content

> Send text, locations, contacts, polls, and interactive content.

This section covers all text and non-media interactive message types available via the `Bot` object.

***

## sendMessage

Sends a text message to a chat.

| Parameter                  | Type              | Required | Description                                                  |
| -------------------------- | ----------------- | -------- | ------------------------------------------------------------ |
| `chat_id`                  | Integer or String | Yes      | Target chat ID or `@username`. Use `u` for the current user. |
| `text`                     | String            | Yes      | The message text. Up to 4096 characters.                     |
| `parse_mode`               | String            | No       | Formatting mode: `"HTML"`, `"Markdown"`, or `"MarkdownV2"`.  |
| `disable_web_page_preview` | Boolean           | No       | If `True`, disables link previews in the message.            |
| `disable_notification`     | Boolean           | No       | Sends the message silently.                                  |
| `reply_to_message_id`      | Integer           | No       | If set, the message will be sent as a reply.                 |
| `reply_markup`             | Object            | No       | Inline or reply keyboard markup (see Keyboards).             |

```python BLP Example theme={null}
# Basic message
Bot.sendMessage(chat_id=u, text="Hello World!")

# Short form (uses current chat automatically)
Bot.sendMessage("Hello World!")

# With formatting and reply
Bot.sendMessage(
    chat_id=u,
    text="<b>Bold</b> and <i>italic</i> text!",
    parse_mode="HTML",
    disable_web_page_preview=True,
    reply_to_message_id=message.message_id
)
```

***

## copyMessage

Copies any message. Unlike `forwardMessage`, the copy has no link to the original message.

| Parameter      | Type              | Required | Description                                   |
| -------------- | ----------------- | -------- | --------------------------------------------- |
| `chat_id`      | Integer or String | Yes      | Target chat ID where the copy will be sent.   |
| `from_chat_id` | Integer or String | Yes      | Source chat ID where the original message is. |
| `message_id`   | Integer           | Yes      | Message ID in the source chat.                |
| `caption`      | String            | No       | New caption to add to the copied message.     |
| `parse_mode`   | String            | No       | Formatting mode for the caption.              |

```python BLP Example theme={null}
Bot.copyMessage(
    chat_id=u,
    from_chat_id=u,
    message_id=message.message_id,
    caption="I copied your message!"
)
```

***

## copyMessages

Copies multiple messages.

| Parameter        | Type              | Required | Description                                      |
| ---------------- | ----------------- | -------- | ------------------------------------------------ |
| `chat_id`        | Integer or String | Yes      | Target chat ID where the copies will be sent.    |
| `from_chat_id`   | Integer or String | Yes      | Source chat ID where the original messages are.  |
| `message_ids`    | Array of Integer  | Yes      | Message IDs in the source chat.                  |
| `remove_caption` | Boolean           | No       | If `True`, removes captions from media messages. |

```python BLP Example theme={null}
Bot.copyMessages(
    chat_id=u,
    from_chat_id=u,
    message_ids=[message.message_id, message.message_id - 1]
)
```

***

## forwardMessage

Forwards a message from one chat to another. Shows the original sender.

| Parameter              | Type              | Required | Description             |
| ---------------------- | ----------------- | -------- | ----------------------- |
| `chat_id`              | Integer or String | Yes      | Target chat ID.         |
| `from_chat_id`         | Integer or String | Yes      | Source chat ID.         |
| `message_id`           | Integer           | Yes      | Message ID to forward.  |
| `disable_notification` | Boolean           | No       | Sends message silently. |

```python BLP Example theme={null}
Bot.forwardMessage(
    chat_id=u,
    from_chat_id=u,
    message_id=message.message_id
)
```

***

## forwardMessages

Forwards multiple messages from one chat to another.

| Parameter      | Type              | Required | Description             |
| -------------- | ----------------- | -------- | ----------------------- |
| `chat_id`      | Integer or String | Yes      | Target chat ID.         |
| `from_chat_id` | Integer or String | Yes      | Source chat ID.         |
| `message_ids`  | Array of Integer  | Yes      | Message IDs to forward. |

```python BLP Example theme={null}
Bot.forwardMessages(
    chat_id=u,
    from_chat_id=u,
    message_ids=[message.message_id, message.message_id - 1]
)
```

***

## sendLocation

Sends a point on a map.

| Parameter                | Type              | Required | Description                                         |
| ------------------------ | ----------------- | -------- | --------------------------------------------------- |
| `chat_id`                | Integer or String | Yes      | Target chat ID.                                     |
| `latitude`               | Float             | Yes      | Latitude of the location.                           |
| `longitude`              | Float             | Yes      | Longitude of the location.                          |
| `live_period`            | Integer           | No       | Period in seconds for a live location (60–86400).   |
| `heading`                | Integer           | No       | Direction of movement in degrees (1–360).           |
| `proximity_alert_radius` | Integer           | No       | Alert radius for nearby users in meters (1–100000). |

```python BLP Example theme={null}
# Static location
Bot.sendLocation(
    chat_id=u,
    latitude=23.8103,
    longitude=90.4125
)

# Live location (updates for 60 seconds)
Bot.sendLocation(
    chat_id=u,
    latitude=23.8103,
    longitude=90.4125,
    live_period=60
)
```

***

## editMessageLiveLocation

Edits a live location message while it is still active.

| Parameter    | Type              | Required | Description                       |
| ------------ | ----------------- | -------- | --------------------------------- |
| `chat_id`    | Integer or String | Yes      | Target chat ID.                   |
| `message_id` | Integer           | Yes      | ID of the live location message.  |
| `latitude`   | Float             | Yes      | New latitude.                     |
| `longitude`  | Float             | Yes      | New longitude.                    |
| `heading`    | Integer           | No       | New direction in degrees (1–360). |

```python BLP Example theme={null}
Bot.editMessageLiveLocation(
    chat_id=u,
    message_id=message.message_id,
    latitude=23.8110,
    longitude=90.4130
)
```

***

## stopMessageLiveLocation

Stops updating a live location before its `live_period` expires.

| Parameter    | Type              | Required | Description                      |
| ------------ | ----------------- | -------- | -------------------------------- |
| `chat_id`    | Integer or String | Yes      | Target chat ID.                  |
| `message_id` | Integer           | Yes      | ID of the live location message. |

```python BLP Example theme={null}
Bot.stopMessageLiveLocation(
    chat_id=u,
    message_id=message.message_id
)
```

***

## sendVenue

Sends information about a venue (location with a name and address).

| Parameter       | Type              | Required | Description                 |
| --------------- | ----------------- | -------- | --------------------------- |
| `chat_id`       | Integer or String | Yes      | Target chat ID.             |
| `latitude`      | Float             | Yes      | Latitude of the venue.      |
| `longitude`     | Float             | Yes      | Longitude of the venue.     |
| `title`         | String            | Yes      | Name of the venue.          |
| `address`       | String            | Yes      | Address of the venue.       |
| `foursquare_id` | String            | No       | Foursquare ID of the venue. |

```python BLP Example theme={null}
Bot.sendVenue(
    chat_id=u,
    latitude=23.8103,
    longitude=90.4125,
    title="Dhaka City",
    address="Dhaka, Bangladesh"
)
```

***

## sendContact

Sends a phone contact.

| Parameter      | Type              | Required | Description             |
| -------------- | ----------------- | -------- | ----------------------- |
| `chat_id`      | Integer or String | Yes      | Target chat ID.         |
| `phone_number` | String            | Yes      | Contact's phone number. |
| `first_name`   | String            | Yes      | Contact's first name.   |
| `last_name`    | String            | No       | Contact's last name.    |
| `vcard`        | String            | No       | Additional vCard data.  |

```python BLP Example theme={null}
Bot.sendContact(
    chat_id=u,
    phone_number="+8801700000000",
    first_name="John",
    last_name="Doe"
)
```

***

## sendPoll

Sends a native Telegram poll.

| Parameter                 | Type              | Required | Description                                                   |
| ------------------------- | ----------------- | -------- | ------------------------------------------------------------- |
| `chat_id`                 | Integer or String | Yes      | Target chat ID.                                               |
| `question`                | String            | Yes      | Poll question (1–300 characters).                             |
| `options`                 | Array of String   | Yes      | List of answer options (2–10 items).                          |
| `is_anonymous`            | Boolean           | No       | If `False`, poll results are visible to all. Default: `True`. |
| `type`                    | String            | No       | `"regular"` or `"quiz"`. Default: `"regular"`.                |
| `allows_multiple_answers` | Boolean           | No       | Allow multiple choice. Only for regular polls.                |
| `correct_option_id`       | Integer           | No       | Index of the correct answer. Required for quiz polls.         |
| `explanation`             | String            | No       | Explanation shown after a quiz answer.                        |
| `open_period`             | Integer           | No       | Poll open time in seconds (5–600).                            |

```python BLP Example theme={null}
# Regular poll
Bot.sendPoll(
    chat_id=u,
    question="What is your favorite programming language?",
    options=["Python", "JavaScript", "C++", "Java"],
    is_anonymous=False,
    allows_multiple_answers=True
)

# Quiz poll
Bot.sendPoll(
    chat_id=u,
    question="What is 2 + 2?",
    options=["3", "4", "5"],
    type="quiz",
    correct_option_id=1,
    explanation="2 + 2 = 4!"
)
```

***

## stopPoll

Stops a poll which was sent by the bot.

| Parameter    | Type              | Required | Description             |
| ------------ | ----------------- | -------- | ----------------------- |
| `chat_id`    | Integer or String | Yes      | Target chat ID.         |
| `message_id` | Integer           | Yes      | Message ID of the poll. |

```python BLP Example theme={null}
Bot.stopPoll(
    chat_id=u,
    message_id=message.message_id
)
```

***

## sendDice

Sends an animated emoji that shows a random value.

| Parameter | Type              | Required | Description                                                                 |
| --------- | ----------------- | -------- | --------------------------------------------------------------------------- |
| `chat_id` | Integer or String | Yes      | Target chat ID.                                                             |
| `emoji`   | String            | No       | Emoji to animate. One of: `🎲`, `🎯`, `🏀`, `⚽`, `🎳`, `🎰`. Default: `🎲`. |

```python BLP Example theme={null}
Bot.sendDice(chat_id=u, emoji="🎰")
Bot.sendDice(chat_id=u, emoji="🎯")
```

***

## sendChatAction

Shows the user that the bot is doing something. Status lasts 5 seconds or until the bot sends a message.

| Parameter | Type              | Required | Description                        |
| --------- | ----------------- | -------- | ---------------------------------- |
| `chat_id` | Integer or String | Yes      | Target chat ID.                    |
| `action`  | String            | Yes      | Type of action. See options below. |

**Available actions:**

| Action            | Description                  |
| ----------------- | ---------------------------- |
| `typing`          | Bot is typing a text message |
| `upload_photo`    | Bot is uploading a photo     |
| `record_video`    | Bot is recording a video     |
| `upload_video`    | Bot is uploading a video     |
| `record_voice`    | Bot is recording voice       |
| `upload_voice`    | Bot is uploading voice       |
| `upload_document` | Bot is uploading a file      |
| `find_location`   | Bot is finding a location    |

```python BLP Example theme={null}
Bot.sendChatAction(chat_id=u, action="typing")
```

***

## editMessageText

Edits the text of an existing message sent by the bot.

| Parameter      | Type              | Required | Description                                              |
| -------------- | ----------------- | -------- | -------------------------------------------------------- |
| `chat_id`      | Integer or String | Yes      | Chat ID of the message to edit.                          |
| `message_id`   | Integer           | Yes      | ID of the message to edit.                               |
| `text`         | String            | Yes      | New text content.                                        |
| `parse_mode`   | String            | No       | Formatting mode: `"HTML"`, `"Markdown"`, `"MarkdownV2"`. |
| `reply_markup` | Object            | No       | New inline keyboard to attach.                           |

```python BLP Example theme={null}
Bot.editMessageText(
    chat_id=u,
    message_id=message.message_id,
    text="<b>Updated text!</b>",
    parse_mode="HTML"
)
```

***

## editMessageCaption

Edits the caption of an existing media message sent by the bot.

| Parameter      | Type              | Required | Description                                              |
| -------------- | ----------------- | -------- | -------------------------------------------------------- |
| `chat_id`      | Integer or String | Yes      | Chat ID of the message to edit.                          |
| `message_id`   | Integer           | Yes      | ID of the message to edit.                               |
| `caption`      | String            | Yes      | New caption content.                                     |
| `parse_mode`   | String            | No       | Formatting mode: `"HTML"`, `"Markdown"`, `"MarkdownV2"`. |
| `reply_markup` | Object            | No       | New inline keyboard to attach.                           |

```python BLP Example theme={null}
Bot.editMessageCaption(
    chat_id=u,
    message_id=message.message_id,
    caption="<b>Updated caption!</b>",
    parse_mode="HTML"
)
```

***

## deleteMessage

Deletes a message. Bots can only delete their own messages or messages in groups where they are admin.

| Parameter    | Type              | Required | Description                  |
| ------------ | ----------------- | -------- | ---------------------------- |
| `chat_id`    | Integer or String | Yes      | Chat ID.                     |
| `message_id` | Integer           | Yes      | ID of the message to delete. |

```python BLP Example theme={null}
Bot.deleteMessage(
    chat_id=u,
    message_id=message.message_id
)
```

***

## deleteMessages

Deletes multiple messages simultaneously.

| Parameter     | Type              | Required | Description                    |
| ------------- | ----------------- | -------- | ------------------------------ |
| `chat_id`     | Integer or String | Yes      | Chat ID.                       |
| `message_ids` | Array of Integer  | Yes      | IDs of the messages to delete. |

```python BLP Example theme={null}
Bot.deleteMessages(
    chat_id=u,
    message_ids=[message.message_id, message.message_id - 1]
)
```

***

## setMessageReaction

Sets or removes a reaction (emoji or custom emoji) on a message.

| Parameter    | Type              | Required | Description                                                                              |
| ------------ | ----------------- | -------- | ---------------------------------------------------------------------------------------- |
| `chat_id`    | Integer or String | Yes      | Target chat ID.                                                                          |
| `message_id` | Integer           | Yes      | ID of the message to react to.                                                           |
| `reaction`   | Array of Object   | No       | Array of `ReactionType` objects to set. Pass an empty array to remove all bot reactions. |
| `is_big`     | Boolean           | No       | Pass `True` to set the reaction with a big animation.                                    |

```python BLP Example theme={null}
# Set a thumbs up reaction
Bot.setMessageReaction(
    chat_id=u,
    message_id=message.message_id,
    reaction=[{"type": "emoji", "emoji": "👍"}]
)

# Remove reaction
Bot.setMessageReaction(chat_id=u, message_id=message.message_id, reaction=[])
```

***

## sendMessageDraft

Streams a partial text message. Commonly used for streaming AI-generated text.

| Parameter      | Type              | Required | Description                                                                                       |
| -------------- | ----------------- | -------- | ------------------------------------------------------------------------------------------------- |
| `chat_id`      | Integer or String | Yes      | Target chat ID.                                                                                   |
| `message_id`   | Integer           | No       | The message ID to edit if updating a previously drafted message. If omitted, sends a new message. |
| `text`         | String            | Yes      | The text content to display. Can be empty.                                                        |
| `can_stop`     | Boolean           | No       | Pass `True` if the user can interrupt the generation.                                             |
| `keep_on_stop` | Boolean           | No       | Keep the drafted content if generation is stopped.                                                |

```python BLP Example theme={null}
draft = Bot.sendMessageDraft(chat_id=u, text="Thinking")
Bot.sendMessageDraft(chat_id=u, message_id=draft.message_id, text="Thinking...")
# Later, commit the final text using editMessageText
Bot.editMessageText(chat_id=u, message_id=draft.message_id, text="Final AI Response")
```
