# Cómo crear un bot de Telegram

{% hint style="warning" %}

#### **Requisitos y límites de Telegram**

**1. Límites de mensajes**

* **Mensaje solo de texto:** Máximo de **4.096 caracteres**.
* **Mensaje con una imagen:** Máximo de **1.024 caracteres** (para una imagen de 1080x1080 px).

**2. Requisitos de imagen**

* **Formato:** Se prefieren imágenes cuadradas.
* **Tamaño óptimo:** 900x900 píxeles, máximo **5 MB**.

**3. Requisitos de archivo**

La API de Telegram tiene requisitos específicos para los archivos cargados:

* Los bots pueden enviar archivos de hasta **2 GB**.
* Puedes usar **file\_id** para trabajar con archivos subidos anteriormente. En este caso, los límites de archivo siguen la documentación de Telegram.
* Los archivos pueden enviarse usando un **URL** (el bot lo descarga y lo envía):
  * **Fotos:** ≤ 5 MB
  * **Otros archivos:** ≤ 20 MB
* Se aplican límites diferentes para la publicación:
  * **Fotos:** 10 MB
  * **Otros archivos:** 2 GB

[Lee más en la fuente original](https://core.telegram.org/bots/api#sending-files)
{% endhint %}

## Creación de bots de Telegram

Un bot de Telegram se crea a través de **BotFather**, el sistema oficial de gestión de bots de Telegram. Esta herramienta verificada (indicada por una marca azul) te permite crear un bot sin conocimientos de programación y te protege de imitadores fraudulentos.

**Pasos de creación:**

1. **Inicia un chat** por [BotFather](https://t.me/botfather).
2. Envía el comando: `/newbot`
3. **Elige un nombre** para tu bot (este es el nombre visible para los usuarios).
4. **Elige un nombre de usuario** para tu bot. Debe **obligatoriamente** terminar en `bot` o `_bot` (p. ej., `my_test_bot`).

Si el nombre de usuario está disponible, BotFather te enviará un mensaje de confirmación que contiene un **"token"**—una clave única para el acceso a la API.

> **Importante:** Este token es una contraseña para tu bot. Guárdalo de forma segura y **nunca lo compartas** con nadie.

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

Ve a la **Mensajeros** sección, selecciona **Telegram**, y pega el token de tu bot en el campo proporcionado.

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

Haz clic en el **Hecho** botón para completar la configuración del bot y activar la conexión con tu proyecto.

### Trabajar con grupos/canales de Telegram

**Información útil**

Un grupo de Telegram es un canal de comunicación entre participantes: todos los participantes pueden escribir en él.

El canal de Telegram es un medio de comunicación unidireccional. Solo el propietario o los administradores pueden enviar mensajes, mientras que el resto de los participantes solo puede verlos y dejar comentarios.

#### Cómo añadir un bot a un grupo/canal de Telegram

Esta función para el bot está incluida en BotFather:

Paso 1. Ve a la configuración del bot:

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

Paso 2. Haz clic en **"¿Permitir grupos?"**

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

Paso 3. Debe aparecer un estado habilitado.

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

### Añadir un bot como administrador en un grupo/canal

Para automatizar el trabajo en chats y canales, necesitas añadir tu propio bot como Administrador.

¿Cómo hacerlo?

Paso 1. Ve a la gestión de Grupo/Canal y selecciona la **Los administradores** pestaña

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

Paso 2. Haz clic en **"Añadir admin"** botón.

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

Paso 3. Introduce el nombre de usuario de tu bot en el cuadro de búsqueda.

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

Paso 4. Para una funcionalidad completa, asegúrate de que el bot tenga permisos para leer y eliminar mensajes.

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

### Variables para trabajar en chats

{% hint style="warning" %}
¡Ten en cuenta!

No está disponible guardar variables en chats de grupo para eventos como unirse a un chat, salir de un chat, nuevo like, etc.

Las variables solo estarán disponibles dentro del bloque que haya funcionado. Puedes mostrar estas variables en el bloque para seguir el trabajo.

Esto NO afectará de ninguna manera el funcionamiento de los chatbots; será imposible seguir quién entró/salió en la sección de clientes.
{% endhint %}

* Variables con información sobre el autor del mensaje

message\_from - el ID del autor del mensaje&#x20;

message\_from\_name - el nombre del autor del mensaje

message\_from\_username - el apodo del autor del mensaje en Telegram

<div data-with-frame="true"><figure><img src="/files/6e4f0ade3243fdee4b38c68161d8ab868a214f49" alt="" width="310"><figcaption></figcaption></figure></div>

* Variables con información sobre el mensaje reenviado

reply\_message\_id - el número del mensaje que se está reenviando&#x20;

reply\_from - quién es el autor del mensaje reenviado

reply\_from\_name - el nombre de la persona cuyo mensaje se está reenviando

reply\_from\_username - el apodo de la persona cuyo mensaje se está reenviando

reply\_from\_chat\_id - el número del diálogo desde el que se reenviaron los mensajes

* Añadir y eliminar de un grupo

En este caso, se activan los callbacks new\_chat\_member y left\_chat\_member (las variables no se guardan en la ficha del cliente):

chat\_member\_name - nombre de usuario&#x20;

chat\_member\_username - apodo del usuario

chat\_member\_id - número del usuario

### Callbacks en Telegram

client\_unsubscribed - el cliente se ha dado de baja, ha bloqueado el bot

client\_returned - el cliente ha desbloqueado el bot

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

#### Callbacks en grupos/canales

new\_chat\_member - se ha añadido un nuevo usuario

left\_chat\_member - el usuario ha salido del canal&#x20;

kicked\_chat\_member - el usuario fue eliminado por el administrador

chat\_join\_request - se ha recibido una solicitud para unirse al canal

edited\_channel\_post - la publicación en el canal ha sido editada (edited\_channel\_post + fecha y hora de la edición)

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

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

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

Los callbacks se muestran en la **Clientes** sección

bot\_added\_to\_group - se ha añadido un bot al chat (no importa cuál, responderá a cualquiera, incluso si el bot conectado fue añadido al propio grupo);

bot\_left\_group - un callback similar es eliminar el bot del canal;

new\_like - le gustó la publicación

like\_deleted - se eliminó un like de la publicación

<div data-with-frame="true"><figure><img src="/files/60f6e0935acb71d910dbda430962efb04e2699b7" alt="" width="358"><figcaption></figcaption></figure></div>

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

El número en el callback (new\_like; like\_deleted) es el ID del mensaje al que se respondió o del que se eliminó.

{% hint style="warning" %}
¡Ten en cuenta!

* ¡Los callbacks para reacciones no se muestran en los canales de Telegram! Los callbacks para reacciones solo llegan en grupos.
* Si una persona ha dado varios likes y luego elimina 1 de ellos, no se muestra cuál fue eliminado.
  {% endhint %}

Cuando aparecen callbacks con reacciones en grupos, las variables están disponibles en el bloque:

reaction\_on\_message\_id - contiene el ID del mensaje al que se respondió

reaction\_from - id de quien hubo una reacción

message\_from\_username - nombre de usuario de quien hubo una reacción (si lo hay)

reaction\_from\_name - nombre de quien hubo la reacción

<div data-with-frame="true"><figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfQptKK4YrlEATINQANRDaNEnpT95W_lgIGjMfOitIn387SG1GKI_n02rgWMZUrCP6hEGEnYAPiY99aZud2Ze4iOCYSlDCpzNsyHAMFdHd_mCxP5VfBpSx2iG7HzP1lgzDDly1Ziw?key=lL8rEUrFbZeHFjWugKFnxg" alt="" width="375"><figcaption></figcaption></figure></div>

Además, si Telegram responde a un mensaje, la variable reply\_text en la tarjeta contendrá el texto completo del mensaje al que se respondió.

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

Si un mensaje fue enviado como respuesta (citando un mensaje anterior), el sistema también generará la `tg_quote` variable, que contiene el texto citado.

<div data-with-frame="true"><figure><img src="/files/3eb628a625c91adc71732a9fe65eb1b45f8011da" alt="" width="188"><figcaption></figcaption></figure></div>

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

#### Callbacks con boost

* chat\_boost\_from usuario #{id\_user} - dio un boost al chat (o canal):

<div data-with-frame="true"><figure><img src="/files/318874dbccbdd95970c8b7dfd0417882a95afb49" alt="" width="375"><figcaption></figcaption></figure></div>

Cuando se activa este callback, se generan variables:

<div data-with-frame="true"><figure><img src="/files/114b25f69f2aca0254f16dc64f6025bfcd1a9bea" alt="" width="375"><figcaption></figcaption></figure></div>

* remove\_boost\_from usuario #{id\_user} - se retiró el boost del chat (o canal):

<div data-with-frame="true"><figure><img src="/files/0333a68a059eac7ce8650b2dcfb83b98fcfcadae" alt="" width="375"><figcaption></figcaption></figure></div>

Cuando se activa este callback, se generan variables:

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

* chat\_boost from giveaway - emitido durante el sorteo de estrellas en el canal
* remove\_chat\_boost from giveaway - el período de boost para el sorteo de estrellas en el canal ha terminado

#### Cómo automatizar la eliminación de notificaciones del sistema en grupos

Para eliminar automáticamente todos los mensajes del sistema, basta con asignar cualquier valor a la variable del\_tg\_system\_messages (la variable puede ser una constante del proyecto o una variable de transacción) y dar permiso al bot para eliminar mensajes.

La variable del\_tg\_system\_messages solo se puede usar en grupos. En los canales, asignar cualquier valor a esta variable no dará ningún resultado.

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

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

**Derechos de administrador en la configuración de grupos de Telegram**

Se eliminan los siguientes tipos de notificaciones del sistema:

\- El nombre del grupo ha sido cambiado

\- La foto del grupo ha sido cambiada

\- Foto del grupo eliminada

\- El mensaje está fijado

\- El usuario se unió al grupo

\- El usuario ha salido del grupo

Si quieres eliminar solo tipos seleccionados de notificaciones del sistema, entonces en lugar de la variable del\_tg\_system\_messages, crea la variable del\_tg\_chosen\_messages y pon en ella un array con los tipos de notificaciones a eliminar, separados por comas.

{% hint style="warning" %}
¡Ten en cuenta!

Estas variables solo funcionarán para grupos de Telegram, pero no para canales.
{% endhint %}

Opciones de notificación del sistema:

* 'new\_chat\_member' – el usuario se unió al grupo,
* 'left\_chat\_member' – el usuario salió del grupo,
* 'pinned\_message' – el mensaje está fijado,
* 'delete\_chat\_photo' – foto del grupo eliminada,
* 'new\_chat\_photo' –la foto del grupo ha sido cambiada,
* 'new\_chat\_title' – el nombre del grupo ha sido cambiado

Por ejemplo, necesitas eliminar todo tipo de mensajes del sistema excepto unirse a un grupo; entonces debes añadir todo tipo de callbacks a la variable constante del proyecto excepto "new\_chat\_member".

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

{% hint style="info" %}
¡Ten en cuenta!

Eliminar notificaciones del sistema no afectará a los callbacks. Solo se eliminará el mensaje del sistema del diálogo de Telegram.
{% endhint %}

### Foro en Telegram

Un foro es un grupo en el que puedes crear temas separados para la discusión. Puedes usar funciones estándar en el foro: adjuntar archivos multimedia, publicar encuestas y configurar notificaciones. También puedes fijar mensajes y añadir bots individuales a cada chat.

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

El propósito principal de un foro es **estructurar la comunicación** dentro de una gran comunidad.

En un chat de grupo estándar con muchos participantes, seguir las conversaciones y encontrar mensajes relevantes se vuelve difícil. Los foros resuelven esto organizando las discusiones en **hilos temáticos dedicados**. Esto segmenta automáticamente la comunidad por tema e interés, haciendo la comunicación más enfocada y manejable.

Solo el propietario del grupo puede crear un tema si hay más de 100 miembros en el grupo. Si el grupo está vinculado a un canal, entonces no podrás crear un tema. Los temas están habilitados en la **Configuración del grupo**:

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

Como administrador, puedes crear un tema en la configuración del grupo del foro:

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

Después de conectar los **Temas**, el avatar cambiará de redondo a cuadrado, lo que te permite distinguir el foro de otros chats de Telegram:

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

### ¿Cómo configurar un paquete de cliente de Telegram con un sitio web?

Lee más sobre cómo vincular un cliente de Telegram y un cliente del sitio web después [de un pago exitoso aquí](#how-to-configure-a-telegram-client-bundle-with-a-website).


---

# 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/chatbot.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.
