# Funciones para enviar y editar mensajes

## **Cómo enviar mensajes usando una cuenta de Telegram Business**

**tg\_send\_message(platform\_id, text,client\_message\_id, reply\_markup, parse\_mode, disable\_web\_page\_preview, protect\_content, disable\_notification**, **message\_thread\_id, entities)**&#x20;

Parámetros:

<table><thead><tr><th width="324.87890625">Parámetro</th><th>Descripción</th></tr></thead><tbody><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ID de usuario de Telegram al que se debe enviar un mensaje <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> text</strong></td><td>Texto del mensaje</td></tr><tr><td><strong>client_message_id</strong> </td><td>ID del mensaje que se citará</td></tr><tr><td><strong>reply_markup</strong></td><td>Configuración del botón  <a href="/pages/98fdf38659522b5a68b06c8ada013b08b872a548#how-to-delete-reply-buttons"><strong>**</strong></a></td></tr><tr><td><strong>parse_mode</strong></td><td>Formato de texto en negrita y cursiva en la descripción<a href="/pages/8f1651c53f4d345e56eaa281516d005d11f8b904#markdown-markup"> <strong>***</strong></a><strong>.</strong> Puede tener valores como html, markdown, markdownV2.</td></tr><tr><td><strong>disable_web_page_preview</strong></td><td>Mostrar vista previa del enlace. Para desactivarla, pasa 1; de lo contrario, pasa 0 o déjalo vacío "".</td></tr><tr><td><strong>protect_content</strong></td><td>Bandera de protección del contenido. Pasa cualquier valor excepto 0, False o '' para activarla.</td></tr><tr><td><strong>disable_notification</strong></td><td>Bandera de notificación sonora (predeterminado: 0). Pasa 1 para desactivar la notificación, 0 para activarla.</td></tr><tr><td><strong>message_thread_id</strong></td><td>ID del tema (disponible para supergrupos con la funcionalidad de foro habilitada)</td></tr><tr><td><strong>entities</strong></td><td>Esto te permite copiar texto preformateado junto con todos sus estilos y simplemente especificar el rango de caracteres donde debe aplicarse una fuente concreta. Puedes encontrar un ejemplo en tg_request en el campo correspondiente. El parámetro debe ser un diccionario. Consulta la pestaña de ejemplo como referencia.</td></tr></tbody></table>

<details>

<summary><mark style="color:naranja;"><strong>Ejemplo detallado</strong></mark></summary>

Consideremos un ejemplo sencillo con un conjunto de parámetros obligatorios:

<div data-with-frame="true"><figure><img src="/files/afe6d59e4a86bbba0eee215f585d7966ae41777b" alt="" width="563"><figcaption></figcaption></figure></div>

platform\_id especifica el identificador de un cliente concreto.

Ve el mismo ejemplo, pero usando variables:

<div data-with-frame="true"><figure><img src="/files/2709e279aecd424ef51c317c9022f478f2762317" alt=""><figcaption></figcaption></figure></div>

En este ejemplo, la variable `soob` contendrá la respuesta del servidor después de enviar un mensaje.

<div data-with-frame="true"><figure><img src="/files/1ca3b9c7f97bd891dc93f08384b019a3f055fd92" alt="" width="356"><figcaption></figcaption></figure></div>

Si guardas el `message_id` de la respuesta recibida, te permitirá luego trabajar con este mensaje (editar, eliminar, reenviar, comentar).

A menudo surgen dificultades al usar todos los parámetros. Consideremos el siguiente ejemplo:

* Primero, declara todos los parámetros usados en la función. Recuerda que los parámetros pueden pasarse no solo como valores, sino también como variables, lo que suele ser más cómodo y claro. Variables como platform\_id y client\_message\_id pueden obtenerse de la tarjeta de perfil del cliente. \
  &#x20;**platform\_id** — ID del cliente de Telegram al que debe enviarse el mensaje [**\***](#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii)\ <mark style="color:verde;">>Responderemos en el mismo chat donde escribe el cliente</mark>

  **text** - texto del mensaje. \ <mark style="color:verde;">>Usamos formato de texto; por ejemplo, resaltado en negrita.</mark>

  **client\_message\_id** - ID del mensaje que se citará\ <mark style="color:verde;">>En los chats, a esta variable se le asigna su valor automáticamente.</mark>\
  **reply\_markup** — configuración de botones [**\*\***](#kak-propisyvat-knopki-v-parametre-reply_markup)**.** \ <mark style="color:verde;">>Asignémosla a la variable opts.</mark>\
  **parse\_mode** — Formato de texto en negrita y cursiva en la descripción [**\*\*\***](#kak-ispolzovat-razmetku-teksta-markdown-v-parametre-parse_mode)**.** Puede tener valores como html, markdown, markdownV2. Los caracteres usados para formatear el texto del mensaje se describen[ aquí](/doc/es/chatbot/builder/telegram_messages.md). \ <mark style="color:verde;">>Usaremos markdown.</mark> \
  **disable\_web\_page\_preview -** Mostrar vista previa del enlace. Para desactivarla, pasa 1; de lo contrario, pasa 0 o déjalo vacío "".\ <mark style="color:verde;">>Podemos pasar cualquier valor, ya que el texto del mensaje no contiene un enlace.</mark>\
  **protect\_content** — Bandera de protección del contenido. Pasa cualquier valor excepto 0, False o '' para activarla.\ <mark style="color:verde;">>No necesitamos protección del contenido, así que pasaremos una cadena vacía</mark> <mark style="color:verde;">''.</mark>\
  **disable\_notification** —  Bandera de notificación sonora (predeterminado: 0). Pasa 1 para desactivar la notificación, 0 para activarla.\ <mark style="color:verde;">>Una notificación es una ventana emergente que muestra el texto del mensaje. Vamos a activarla.</mark>
* A continuación, ensamblamos la función. Recuerda asignar la función a una variable; esto te permitirá seguir el estado del envío del mensaje.

<div data-with-frame="true"><figure><img src="/files/9631053cd7970e6276deb258a3b17e36fef7c3bb" alt="" width="563"><figcaption><p>El campo "Calculator"</p></figcaption></figure></div>

Esto es lo que obtuvimos:\
Después de que el cliente nos envía la palabra clave test, respondemos citando su mensaje.

En `ok` vemos el estado del envío; a continuación viene la información sobre el propio mensaje: su ID, los datos del remitente y el contenido.

Ejemplo con el **entities** parámetro\
Puedes almacenar la cadena original en una variable, como se muestra a continuación:

`text = "qwert asdfg zxcvb poiuy lkjhg 12345"`\
\
Debes escribir el parámetro como un diccionario con los datos y especificar el formato deseado indicando las fuentes:

`entities = [{"offset":0,"length":5,"type":"bold"},{"offset":6,"length":4,"type":"text_link","url":"``    `<mark style="color:rojo;">**`https://mavibot.ai"}`**</mark>`,{"offset":11,"length":9,"type":"strikethrough"},{"offset":21,"length":6,"type":"spoiler"},{"offset":29,"length":12,"type":"code"}]`

Pasa el parámetro al final de la función que uses. El parámetro puede pasarse tanto a las funciones tg\_send\_message como tg\_send\_message\_1:

`x = tg_send_message(platform_id, text, None, None, None, False, False, False, None, entities`)

</details>

{% hint style="info" %}
Para asignar texto con saltos de línea a una variable, especifica el valor de la siguiente manera:

`text = "First line of text" + "\n" + "Second line of text" + "\n" + "Third line"`
{% endhint %}

## Cómo enviar un mensaje especificando un bot concreto de Telegram

tg\_send\_message\_1(token, platform\_id, text, client\_message\_id, reply\_markup, parse\_mode, disable\_web\_page\_preview, protect\_content, disable\_notification, message\_thread\_id, entities, business\_connection\_id)

<table><thead><tr><th width="288.94140625">Parámetro</th><th>Descripción</th></tr></thead><tbody><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> token</strong></td><td>Token del bot de Telegram obtenido de BotFather</td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ID de usuario de Telegram al que se debe enviar un mensaje <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> text</strong></td><td>Texto del mensaje</td></tr><tr><td><strong>client_message_id</strong></td><td>ID del mensaje que se citará</td></tr><tr><td><strong>reply_markup</strong></td><td>Configuración del botón  <a href="/pages/98fdf38659522b5a68b06c8ada013b08b872a548#how-to-delete-reply-buttons"><strong>**</strong></a></td></tr><tr><td><strong>parse_mode</strong></td><td>Formato de texto en negrita y cursiva en la descripción <a href="/pages/8f1651c53f4d345e56eaa281516d005d11f8b904"><strong>***</strong></a><strong>.</strong> Puede tener valores como html, markdown, markdownV2.</td></tr><tr><td><strong>disable_web_page_preview</strong></td><td>Mostrar vista previa del enlace. Para desactivarla, pasa 1; de lo contrario, pasa 0 o déjalo vacío "".</td></tr><tr><td><strong>protect_content</strong></td><td>Bandera de protección del contenido. Pasa cualquier valor excepto 0, False o '' para activarla.</td></tr><tr><td><strong>disable_notification</strong></td><td>Bandera de notificación sonora (predeterminado: 0). Pasa 1 para desactivar la notificación, 0 para activarla.</td></tr><tr><td><strong>message_thread_id</strong> </td><td>ID del tema (disponible para supergrupos con la funcionalidad de foro habilitada)</td></tr><tr><td><strong>entities</strong></td><td>Esto te permite copiar texto preformateado junto con todos sus estilos y simplemente especificar el rango de caracteres donde debe aplicarse una fuente concreta. Puedes encontrar un ejemplo en tg_request en el campo correspondiente. El parámetro debe ser un diccionario.</td></tr><tr><td><strong>business_connection_id</strong></td><td>El <strong>ID de Business</strong> el valor se usa al conectar el bot y se muestra en los canales. Debe proporcionarse si se incluye un token del bot en los parámetros y el mensaje necesita enviarse a través de una cuenta de usuario vinculada al bot.</td></tr></tbody></table>

<details>

<summary>Ejemplo</summary>

Ejemplo de paso del parámetro:\
`entities = [{"offset":0,"length":5,"type":"bold"},{"offset":6,"length":4,"type":"text_link","url":"`<mark style="color:rojo;">**`https://mavibot.ai"},`**</mark>`{"offset":11,"length":9,"type":"strikethrough"},{"offset":21,"length":6,"type":"spoiler"},{"offset":29,"length":12,"type":"code"}]`

El ejemplo muestra solo el diccionario, mientras que el propio texto del mensaje se asigna a una variable separada.

</details>

## Cómo editar texto en un mensaje de Telegram

{% hint style="warning" %}
¡Ten en cuenta!&#x20;

La función de edición de mensajes solo está disponible para mensajes nuevos y enviados recientemente. <br>

La ventana de tiempo durante la cual se permite editar mensajes la determina el propio mensajero y depende de la carga/actividad de tu bot; puede acortarse para la edición. <br>

Según el soporte técnico del mensajero, el plazo óptimo para editar un mensaje es de 48 horas.
{% endhint %}

tg\_edit\_message\_text(platform\_id, message\_id, text, reply\_markup, parse\_mode, disable\_web\_page\_preview, entities)

<table><thead><tr><th width="270.03125">Parámetro</th><th>Descripción</th></tr></thead><tbody><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ID de usuario de Telegram al que se debe enviar un mensaje <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> message_id</strong></td><td>ID del mensaje que se va a editar. Este ID debe haberse guardado previamente al enviar el mensaje.</td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> text</strong></td><td>Texto del mensaje</td></tr><tr><td><strong>reply_markup</strong></td><td>Configuración del botón  <a href="/pages/98fdf38659522b5a68b06c8ada013b08b872a548#how-to-delete-reply-buttons"><strong>**</strong></a></td></tr><tr><td><strong>parse_mode</strong></td><td>Formato de texto en negrita y cursiva en la descripción <a href="/pages/8f1651c53f4d345e56eaa281516d005d11f8b904"><strong>***</strong></a><strong>.</strong> Puede tener valores como html, markdown, markdownV2.</td></tr><tr><td><strong>disable_web_page_preview</strong> </td><td>Mostrar vista previa del enlace. Para desactivarla, pasa 1; de lo contrario, pasa 0 o déjalo vacío "".</td></tr><tr><td><strong>entities</strong></td><td>Esto te permite copiar texto preformateado junto con todos sus estilos y simplemente especificar el rango de caracteres donde debe aplicarse una fuente concreta. Puedes encontrar un ejemplo en tg_request en el campo correspondiente. El parámetro debe ser un diccionario.</td></tr></tbody></table>

## Cómo enviar una reacción a un mensaje

tg\_set\_reaction(platform\_id, message\_id, reaction)

<table><thead><tr><th width="305.015625">Parámetro</th><th>Descripción</th></tr></thead><tbody><tr><td><mark style="color:rojo;"><strong>!</strong></mark> platform_id</td><td>ID del chat de Telegram</td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark> message_id</td><td>ID del mensaje</td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark> reacción</td><td>La reacción requerida se pasa como una cadena.</td></tr></tbody></table>

<details>

<summary>Ejemplo</summary>

Ejemplo de código para copiar:

react = tg\_set\_reaction(platform\_id, 1556, '👌')

Ejemplo en la calculadora:

<div align="center" data-with-frame="true"><figure><img src="/files/0d202a71217e050d25c6868b6258e2a1e7d83a5b" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

## Cómo editar la descripción de un archivo adjunto

**tg\_edit\_message\_caption(platform\_id, message\_id, caption, reply\_markup, parse\_mode, entities, show\_caption\_above\_media)**

<table><thead><tr><th width="305.015625">Parámetro </th><th>Descripción</th></tr></thead><tbody><tr><td><mark style="color:rojo;"><strong>!</strong></mark> platform_id</td><td>ID de usuario de Telegram al que se debe enviar un mensaje <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark> message_id</td><td>ID del mensaje que se va a editar</td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> caption</strong></td><td>Texto de la descripción</td></tr><tr><td><strong>reply_markup</strong></td><td>Configuración del botón <a href="#kak-propisyvat-knopki-v-parametre-reply_markup"><strong>**</strong></a></td></tr><tr><td><strong>parse_mode</strong></td><td>Formato de texto en negrita y cursiva en la descripción<a href="/pages/8f1651c53f4d345e56eaa281516d005d11f8b904"> <strong>***</strong></a><strong>.</strong>  Puede tener valores como html, markdown, markdownV2.</td></tr><tr><td><strong>entities</strong> </td><td><p>Esto te permite copiar texto preformateado junto con todos sus estilos y simplemente especificar el rango de caracteres donde debe aplicarse una fuente concreta. Puedes encontrar un ejemplo en tg_request en el campo correspondiente. El parámetro debe ser un diccionario.<br><br>Ejemplo de paso del parámetro:<br><code>entities = [{"offset":0,"length":5,"type":"bold"},{"offset":6,"length":4,"type":"text_link","url":"</code><mark style="color:rojo;"><strong><code>https://,mavibot.ai"}</code></strong></mark><code>,{"offset":11,"length":9,"type":"strikethrough"},{"offset":21,"length":6,"type":"spoiler"},{"offset":29,"length":12,"type":"code"}]</code></p><p></p><p>El ejemplo muestra solo el diccionario, mientras que el propio texto del mensaje se asigna a una variable separada.</p></td></tr><tr><td><strong>show_caption_above_media</strong></td><td>Toma el valor True; si se especifica este parámetro, el texto del mensaje se mostrará encima del archivo adjunto.</td></tr></tbody></table>

## Cómo editar adjuntos multimedia en un mensaje

<table><thead><tr><th width="270.03125">Parámetro</th><th>Descripción</th></tr></thead><tbody><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ID de usuario de Telegram al que se debe enviar un mensaje <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> message_id</strong></td><td>ID del mensaje que se va a editar. Este ID debe haberse guardado previamente al enviar el mensaje. </td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> media</strong></td><td><p>Un diccionario que describe el archivo multimedia:<br><em>Ejemplo de un diccionario JSON para reemplazar una foto enviada previamente:</em><br><code>media = '{"type": "photo", "media": "&#x3C;file_to_send>"}'</code></p><p></p><p>donde se recomienda que &#x3C;file_to_send> sea el file_id obtenido mediante el <a href="/pages/431d2efc787d98a3e416a3e8c2669e7091c556fa">webhook de Telegram</a>. </p><p></p><p>Para más detalles, los parámetros del diccionario se describen en la documentación oficial de Telegram <a href="/pages/1a4dba111ce14430c14789bc59e5dca46a34a77d">documentación de Telegram</a>. </p></td></tr><tr><td><strong>reply_markup</strong></td><td>Configuración del botón <a href="#kak-propisyvat-knopki-v-parametre-reply_markup"><strong>**</strong></a></td></tr></tbody></table>

## **Cómo editar un teclado en línea en un mensaje**

<table><thead><tr><th width="270.03125">Parámetro</th><th>Descripción</th></tr></thead><tbody><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ID de usuario de Telegram al que se debe enviar un mensaje <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> message_id</strong></td><td>ID del mensaje que se va a editar. Este ID debe haberse guardado previamente al enviar el mensaje. </td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> reply_markup</strong></td><td>Configuración del botón <a href="#kak-propisyvat-knopki-v-parametre-reply_markup"><strong>**</strong></a></td></tr></tbody></table>

{% hint style="warning" %}
Solo puedes editar un teclado en línea.
{% endhint %}

<details>

<summary><strong>Ejemplo: edición de mensajes con la API de Telegram</strong></summary>

A continuación puedes encontrar un ejemplo detallado de trabajo con las funciones de la API de Telegram para editar mensajes.&#x20;

</details>

## Cómo copiar un mensaje

**tg\_copy\_message(platform\_id, from\_chat\_id, message\_id, reply\_to\_message\_id, reply\_markup, parse\_mode, protect\_content, disable\_notification, caption, message\_thread\_id, entities, show\_caption\_above\_media)**

<table><thead><tr><th width="270.03125">Parámetro</th><th>Descripción</th></tr></thead><tbody><tr><td> <mark style="color:rojo;"><strong>!</strong></mark><strong> platform_id</strong> </td><td>ID de usuario de Telegram AL que se debe copiar un mensaje <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> from_chat_id</strong> </td><td>ID de usuario de Telegram DESDE el que se debe copiar un mensaje <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> message_id</strong></td><td>ID del mensaje que se copiará</td></tr><tr><td><strong>reply_to_message_id</strong> </td><td>ID del mensaje original si el mensaje copiado es un comentario</td></tr><tr><td><strong>reply_markup</strong> </td><td>Configuración del botón <a href="#kak-propisyvat-knopki-v-parametre-reply_markup"><strong>**</strong></a></td></tr><tr><td><strong>parse_mode</strong></td><td><p>Formato de texto en negrita y cursiva en la descripción <a href="/pages/8f1651c53f4d345e56eaa281516d005d11f8b904"><strong>***</strong></a><strong>.</strong></p><p>Puede tener valores como html, markdown, markdownV2.</p></td></tr><tr><td><strong>protect_content</strong></td><td>Bandera de protección del contenido. Pasa cualquier valor excepto 0, False o '' para activarla.</td></tr><tr><td><strong>disable_notification</strong> </td><td>Bandera de notificación sonora (predeterminado: 0). Pasa 1 para desactivar la notificación, 0 para activarla.                          </td></tr><tr><td><strong>caption</strong> - </td><td>Descripción de hasta 1024 caracteres.</td></tr><tr><td><strong>message_thread_id</strong> </td><td>ID del tema (disponible para supergrupos con la funcionalidad de foro habilitada)</td></tr><tr><td><strong>entities</strong> </td><td>Esto te permite copiar texto preformateado junto con todos sus estilos y simplemente especificar el rango de caracteres donde debe aplicarse una fuente concreta. Puedes encontrar un ejemplo en tg_request en el campo correspondiente. El parámetro debe ser un diccionario.<br><br>Ejemplo de paso del parámetro: <br><code>entities = [{"offset":0,"length":5,"type":"bold"},{"offset":6,"length":4,"type":"text_link","url":</code><mark style="color:rojo;"><strong><code>"https://mavibot.ai"}</code></strong></mark><code>,{"offset":11,"length":9,"type":"strikethrough"},{"offset":21,"length":6,"type":"spoiler"},{"offset":29,"length":12,"type":"code"}]</code>  <br><br>El ejemplo muestra solo el diccionario, mientras que el propio texto del mensaje se asigna a una variable separada.</td></tr><tr><td><strong>show_caption_above_media</strong> </td><td>Toma el valor True; si se especifica este parámetro, el texto del mensaje se mostrará encima del archivo adjunto.</td></tr></tbody></table>

## Cómo reenviar un mensaje

**tg\_forward\_message(platform\_id, from\_chat\_id, message\_id, protect\_content, disable\_notification,** **message\_thread\_id)**&#x20;

<table><thead><tr><th width="312.0703125">Parámetro</th><th>Descripción</th></tr></thead><tbody><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> platform_id</strong> </td><td>ID de usuario de Telegram AL que se debe enviar un mensaje <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> from_chat_id</strong></td><td>ID de usuario de Telegram DESDE el que se debe enviar un mensaje <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> message_id</strong></td><td>ID del mensaje reenviado</td></tr><tr><td><strong>protect_content</strong></td><td>Bandera de protección del contenido. Pasa cualquier valor excepto 0, False o '' para activarla.</td></tr><tr><td><strong>disable_notification</strong></td><td>Bandera de notificación sonora (predeterminado: 0). Pasa 1 para desactivar la notificación, 0 para activarla.</td></tr><tr><td><strong>message_thread_id</strong> </td><td>ID del tema (disponible para supergrupos con la funcionalidad de foro habilitada)</td></tr></tbody></table>

## Cómo eliminar un mensaje

**tg\_delete\_message(platform\_id, message\_id)**&#x20;

<mark style="color:rojo;">**!**</mark> Usa este método para eliminar un mensaje, incluidos los mensajes de servicio, con las siguientes restricciones:

* Un mensaje solo puede eliminarse si se envió hace menos de 48 horas.
* Los mensajes con dados en un chat privado solo pueden eliminarse si se enviaron hace más de 24 horas.
* Los bots pueden eliminar mensajes salientes en chats privados, grupos y supergrupos.
* Los bots pueden eliminar mensajes entrantes en chats privados.
* Los bots con el **can\_post\_messages** permiso pueden eliminar mensajes salientes en los canales.
* Si un bot es administrador de un grupo, puede eliminar cualquier mensaje allí.
* Si un bot tiene el **can\_delete\_messages** permiso en un supergrupo o canal, puede eliminar cualquier mensaje allí.&#x20;

<table><thead><tr><th width="294.3203125">Parámetro</th><th>Descripción</th></tr></thead><tbody><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> platform_id</strong> </td><td>ID de usuario de Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a> </td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> message_id</strong></td><td>ID del mensaje que se va a eliminar</td></tr></tbody></table>

## **Cómo eliminar varios mensajes**

tg\_delete\_messages(platform\_id, message\_ids)

<mark style="color:rojo;">**!**</mark> Usa este método para eliminar un mensaje, incluidos los mensajes de servicio, con las siguientes restricciones:

* Un mensaje solo puede eliminarse si se envió hace menos de 48 horas.
* Los mensajes con dados en un chat privado solo pueden eliminarse si se enviaron hace más de 24 horas.
* Los bots pueden eliminar mensajes salientes en chats privados, grupos y supergrupos.
* Los bots pueden eliminar mensajes entrantes en chats privados.
* Los bots con el **can\_post\_messages** permiso pueden eliminar mensajes salientes en los canales.
* Si un bot es administrador de un grupo, puede eliminar cualquier mensaje allí.
* Si un bot tiene el **can\_delete\_messages** permiso en un supergrupo o canal, puede eliminar cualquier mensaje allí.&#x20;

<table><thead><tr><th width="288.06640625">Parámetro</th><th>Descripción</th></tr></thead><tbody><tr><td><mark style="color:rojo;"><strong>!</strong></mark> platform_id</td><td>ID de usuario de Telegram </td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark> message_ids</td><td>Un array de IDs de mensajes que se eliminarán. Máximo de 100 elementos.</td></tr></tbody></table>

## **Ejemplo: envío de mensajes con la API de Telegram**

<details>

<summary>Ejemplo de código para copiar</summary>

Ejemplo 1

```
/*Es conveniente definir el texto en una variable previamente*/
text='Writing-writing-witing text'
/*Función de enviar un mensaje*/
soob=tg_send_message(platform_id, text)
/*Guardar el ID del mensaje enviado*/
soob_id=soob['result']['message_id']

```

Ejemplo 2

```
id_group=-1001847103100
text='Mensaje de prueba enviado mediante el método API. Por ejemplo, *texto en negrita*'
opts = {"inline_keyboard": [[{"text": "👍","callback_data":1}, {"text": "👎","callback_data":2}]]}
disable_web_page_preview=1
protect_content=''
disable_notification=1
parse_mode='markdown'
soob=tg_send_message(id_group, text,client_message_id, opts, parse_mode, disable_web_page_preview, protect_content, disable_notification) 


```

</details>

## **Ejemplo: edición de mensajes con la API de Telegram**

<details>

<summary>Ejemplo de configuración</summary>

Entonces, enviémonos un mensaje con un teclado en línea:

<div data-with-frame="true"><figure><img src="/files/ed0507063f3ba945561195ceacf6d052ca6138ff" alt="" width="563"><figcaption></figcaption></figure></div>

Luego, edita el texto del mensaje:

<div data-with-frame="true"><figure><img src="/files/1330e72ff4dbd7e97b7d7d881b6d7832ff4214c9" alt="" width="563"><figcaption></figcaption></figure></div>

Y edita los botones:

<div data-with-frame="true"><figure><img src="/files/23755d9d452c67dd17862d330fc81e0964a7de2f" alt="" width="563"><figcaption></figcaption></figure></div>

Intentemos editar un mensaje con una imagen. Para ello, envía un mensaje con una imagen y guarda el ID del mensaje enviado. Lee las instrucciones detalladas sobre cómo obtener la URL de la imagen [aquí](/doc/es/chatbot/mensajeros/telegram/api/messages.md):&#x20;

<div data-with-frame="true"><figure><img src="/files/d08f51e8c54323c073b6313e7d31cec55c97f5b5" alt="" width="563"><figcaption></figcaption></figure></div>

Ahora, editemos la imagen y su descripción:

<div data-with-frame="true"><figure><img src="/files/7f3346371a82c1dd954f839f3025c6bfc97b2c9f" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
/*Es conveniente definir los parámetros en una variable previamente.*/
text='¿Qué paquete te gustaría elegir?'
opts = {"inline_keyboard": [[{"text": "Paquete 1","callback_data":1}, {"text": "Paquete 2","callback_data":2}]]}
/*Función de enviar mensaje*/
soob=tg_send_message(platform_id, text, None, opts)
/*Guardar el ID del mensaje enviado*/
soob_id=soob['result']['message_id']

/*Editar el mensaje*/
text='¿Qué paquete te interesa?'
tg_edit_message_text(platform_id, soob_id, text, opts)  

/*Editar el teclado en línea*/
opts = {"inline_keyboard": [[{"text": "Estándar","callback_data":1}, {"text": "Premium","callback_data":2}]]}
tg_edit_message_reply_markup(platform_id, soob_id, opts)


/*Enviar imagen con la descripción*/
soob=tg_send_photo(platform_id, "AgACAgIAAxkBAAIPpWO4T7jhOgYHq6uR8rjnq9rIvBs-AAJlwDEb5fHASaGdhzgWjyn7AQADAgADeAADLQQ", "Esta es una imagen")
/*Guardar el ID del mensaje enviado*/
soob_id=soob['result']['message_id']

/*Editar la imagen*/
media='{"type": "photo", "media": "AgACAgIAAxkBAAIPrmO4UiH7Tazqn-3IbFVzPKNsVEZmAAJ1wDEb5fHASWcNXKah-egvAQADAgADeQADLQQ"}'
tg_edit_message_media(platform_id, soob_id, media)
/*Editar la descripción de la imagen*/
tg_edit_message_caption(platform_id, soob_id, '¡Esta soy YO!')
```

</details>

## **Ejemplo: copia de mensajes con la API de Telegram**

<details>

<summary>Ejemplo</summary>

Enviemos un mensaje y guardemos su ID.

<div data-with-frame="true"><figure><img src="/files/f78db232734f9ba18007751000b177325ca2fbc8" alt="" width="563"><figcaption></figcaption></figure></div>

Y copiemos el mensaje enviado previamente.

<div data-with-frame="true"><figure><img src="/files/7a832ba9a1e4df74c65c10b7b20b148e4e550af8" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
/*Es conveniente definir los parámetros en una variable previamente.*/
text='¿Qué paquete te gustaría elegir?'
opts = {"inline_keyboard": [[{"text": "Paquete 1","callback_data":1}, {"text": "Paquete 2","callback_data":2}]]}
/*Función de enviar mensaje*/
soob=tg_send_message(platform_id, text, None, opts)
/*Guardar el ID del mensaje enviado*/
soob_id=soob['result']['message_id']


/*Copiar el mensaje enviado*/
tg_copy_message('5081438490', '1840834360', soob_id, None, opts, None, None, 1)
```

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/doc/es/chatbot/mensajeros/telegram/api/messages.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
