# Configuración del chat de Telegram y del mensajero

**Trabajando con IDs de plataforma en MaviBot**

En MaviBot, todas las entidades de Telegram (usuarios, grupos, canales) se identifican mediante una `platform_id` variable genérica. Esta variable no distingue entre tipos de entidad.

**Problema:** Para usar funciones como `aceptar` o `rechazar` que requieren tipos específicos de entidad, necesitas conocer tanto el *chat* ID como el *usuario* ID por separado.

**Solución:** Cuando recibas una callback o un mensaje, guarda inmediatamente el `platform_id` valor en dos variables distintas, con nombres según su propósito:

* **`chat_id`** – para almacenar el ID del grupo/canal.
* **`user_id`** – para almacenar el ID del usuario individual.

Esto te permite hacer referencia al ID correcto más adelante en la lógica de tu aplicación.

## Cómo cambiar el nombre del chat mediante un bot de Telegram

<details>

<summary>Descripción</summary>

**tg\_set\_group\_title(platform\_id, title)** -&#x20;

Parámetros:

<table><thead><tr><th width="294.828125">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>el ID del chat dentro 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> title</strong></td><td>nuevo nombre del chat</td></tr></tbody></table>

</details>

## Cómo cambiar la descripción del chat mediante un bot de Telegram

<details>

<summary>Descripción</summary>

**tg\_set\_chat\_description(platform\_id, description)**

<table><thead><tr><th width="294.828125">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>el ID del chat dentro 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> description</strong></td><td>nuevo nombre del chat</td></tr></tbody></table>

</details>

## Cómo establecer un avatar en un grupo/chat en Telegram

<details>

<summary>Descripción</summary>

**tg\_set\_chat\_photo(platform\_id, photo)**

<table><thead><tr><th width="294.828125">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 del chat dentro de Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a><strong>,</strong> en el que quieres establecer un avatar</td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong>  foto</strong></td><td>enlace de la foto</td></tr></tbody></table>

</details>

## Cómo eliminar un avatar en un grupo/chat en Telegram

<details>

<summary>Descripción</summary>

**tg\_delete\_chat\_photo(platform\_id)**

<table><thead><tr><th width="294.828125">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 del chat dentro de Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a><strong>,</strong> en el que necesitas establecer un avatar</td></tr></tbody></table>

</details>

## Cómo banear un grupo de Telegram

<details>

<summary>Descripción</summary>

**tg\_ban\_chat\_sender\_chat(platform\_id, sender\_chat\_id)**&#x20;

Parámetros:

<table><thead><tr><th width="294.828125">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 del chat dentro de Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a><strong>, que necesitas banear</strong></td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> sender_chat_id</strong></td><td>ID del chat que va a ser baneado</td></tr></tbody></table>

Al mismo tiempo, el propietario del chat baneado no puede escribir en nombre de sus otros chats hasta que sea desbaneado.

</details>

## Cómo desbanear un grupo de Telegram

<details>

<summary>Descripción</summary>

**tg\_unban\_chat\_sender\_chat(platform\_id, sender\_chat\_id)**

Parámetro:

<table><thead><tr><th width="294.828125">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 del chat dentro de Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a><strong>,</strong> en el que desbaneas </td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> sender_chat_id</strong></td><td>ID del chat que desbaneas </td></tr></tbody></table>

</details>

## Cómo crear un enlace de invitación para unirse a un chat de Telegram

<details>

<summary>Descripción</summary>

**tg\_create\_chat\_invite\_link(platform\_id, member\_limit, hours, request, name)**&#x20;

Parámetro:

<table><thead><tr><th width="282.87109375">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 del chat en Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a> </td></tr><tr><td><strong>member_limit</strong></td><td>límite en el número de participantes</td></tr><tr><td><strong>hours</strong></td><td>Tiempo de expiración del enlace (en horas)</td></tr><tr><td><strong>request</strong></td><td>un parámetro que, al hacer clic en el enlace, debe generar una solicitud para unirse al chat.</td></tr><tr><td><strong>name</strong> </td><td>nombre del enlace</td></tr></tbody></table>

{% hint style="info" %}
Al pasar el **member\_limit** parámetro, el valor del **request** parámetro cambia automáticamente a **Falso**. Si necesitas aceptar solicitudes de membresía, deja el **member\_limit** parámetro vacío.
{% endhint %}

**Creación de enlace de invitación al chat**

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

</details>

## Cómo eliminar un enlace de invitación al chat en Telegram

<details>

<summary>Descripción</summary>

**tg\_revoke\_chat\_invite\_link(platform\_id, invite\_link)**

Parámetros:

<table><thead><tr><th width="294.828125">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 del chat dentro 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> invite_link</strong></td><td>enlace que necesitas eliminar</td></tr></tbody></table>

</details>

## Cómo inactivar todos los enlaces existentes y reemplazarlos por un solo enlace&#x20;

<details>

<summary>Descripción</summary>

&#x20;**tg\_export\_chat\_link(platform\_id)**

Parámetros:

<table><thead><tr><th width="294.828125">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 del chat dentro 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> invite_link</strong></td><td>enlace, que necesitas eliminar</td></tr></tbody></table>

El resultado es que un enlace será la única forma de entrar al grupo hasta que se creen enlaces adicionales de otras maneras.

{% hint style="warning" %}
Úsalo con precaución. Todos los enlaces de acceso existentes a tu grupo quedarán inactivos.
{% endhint %}

</details>

## Cómo aceptar una solicitud y añadir un usuario en un canal/chat de Telegram

<details>

<summary>Descripción</summary>

**tg\_approve\_chat\_join\_request(chat\_id, user\_id)**

Parámetros:

<table><thead><tr><th width="279.9765625"></th><th></th></tr></thead><tbody><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> chat_id</strong></td><td>ID del grupo/canal dentro 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> user_id</strong></td><td>ID del usuario dentro de Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a> </td></tr></tbody></table>

Aceptación de la solicitud:

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

</details>

## Cómo rechazar una solicitud en un canal/chat de Telegram

<details>

<summary>Descripción</summary>

**tg\_decline\_chat\_join\_request(chat\_id, user\_id)**&#x20;

Parámetros:

<table><thead><tr><th width="279.9765625"></th><th></th></tr></thead><tbody><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> chat_id</strong></td><td>ID del grupo/canal dentro 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> user_id</strong></td><td>ID del usuario dentro de Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a> </td></tr></tbody></table>

Rechazo de la solicitud

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

</details>

## Cómo bloquear a un usuario en Telegram

<details>

<summary>Descripción</summary>

**tg\_ban\_chat\_member(chat\_id, user\_id, hours)**&#x20;

Parámetros:

<table><thead><tr><th width="283.67578125">Parámetro</th><th>Descripción</th></tr></thead><tbody><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> chat_id</strong></td><td>ID del chat dentro 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> user_id</strong></td><td>ID del usuario dentro de Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a> para bloquear</td></tr><tr><td><strong>hours</strong></td><td>Duración del bloqueo en horas. Por defecto, el bloqueo es permanente. Si especificas una duración de bloqueo superior a 366 días, el bloqueo se establecerá como permanente.</td></tr></tbody></table>

</details>

## Cómo desbloquear a un usuario en Telegram&#x20;

<details>

<summary>Descripción</summary>

**tg\_unban\_chat\_member(chat\_id, user\_id)** &#x20;

Parámetros:

<table><thead><tr><th width="283.67578125">Parámetro</th><th>Descripción</th></tr></thead><tbody><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> chat_id</strong></td><td>ID del chat dentro 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> user_id</strong></td><td>ID del usuario dentro de Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a><strong>,</strong>  a quien necesitas desbloquear</td></tr></tbody></table>

</details>

## Cómo comprobar el estado de suscripción en Telegram

<details>

<summary>Descripción</summary>

**tg\_get\_chat\_member(chat\_id, user\_id)**&#x20;

Parámetros:

<table><thead><tr><th width="283.67578125">Parámetro</th><th>Descripción</th></tr></thead><tbody><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> chat_id</strong></td><td>ID del chat dentro 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> user_id</strong></td><td>ID del usuario dentro de Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a><strong>,</strong> cuya suscripción estamos comprobando</td></tr></tbody></table>

</details>

## Cómo determinar el número de miembros en un canal/chat&#x20;

<details>

<summary>Descripción</summary>

**tg\_get\_chat\_member\_count(platform\_id)**

Parámetros:

<table><thead><tr><th width="283.67578125">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 del chat en Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr></tbody></table>

</details>

## Cómo comprobar si un miembro del chat está en una lista específica

<details>

<summary><strong>some_client_in_list(list_id, recepient)</strong></summary>

Parámetros:

<table><thead><tr><th width="283.67578125">Parámetro</th><th>Descripción</th></tr></thead><tbody><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> list_id</strong></td><td>número de lista</td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> recepient</strong></td><td> ID del usuario dentro de Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a>. Para los clientes de chat, este valor está en la variable chat_member_id.</td></tr></tbody></table>

</details>

## Cómo mostrar las acciones del bot al usuario (escribir/seleccionar un sticker, etc.)

<details>

<summary>Descripción</summary>

**tg\_send\_chat\_action(platform\_id, bot\_action,  message\_thread\_id)**

<mark style="color:predeterminado;background-color:green;">**¡Trabaja con cuenta de Telegram Business!**</mark>

Parámetros:

<table><thead><tr><th width="286.74609375">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 del chat en 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> bot_action</strong></td><td>acción del bot de la lista</td></tr><tr><td><strong>message_thread_id</strong> </td><td>ID del tema (disponible para supergrupos si la funcionalidad de foro está disponible).</td></tr></tbody></table>

</details>

<details>

<summary><mark style="color:naranja;">Lista de acciones disponibles <strong>bot_action</strong></mark></summary>

***typing*** para mensajes de texto, \
\&#xNAN;***upload\_photo*** para fotos, \
\&#xNAN;***record\_video*** o ***upload\_video*** para vídeos, \
\&#xNAN;***record\_voice*** o ***upload\_voice*** para notas de voz, \
\&#xNAN;***upload\_document*** para documentos comunes, \
\&#xNAN;***choose\_sticker*** para stickers, \
\&#xNAN;***find\_location*** para datos de ubicación, \
\&#xNAN;***record\_video\_note*** o ***upload\_video\_note*** para nota de vídeo.&#x20;

</details>

{% hint style="info" %}
Esta notificación se mostrará hasta que se reciba cualquier respuesta del bot, pero no más de 5 segundos.
{% endhint %}

## Cómo mostrar una notificación de alerta al usuario

<details>

<summary>Descripción</summary>

**tg\_answer\_callback\_query(callback\_query\_id, text,show\_alert,cache\_time)**&#x20;

<table><thead><tr><th width="309.5234375">Parámetro</th><th>Descripción</th></tr></thead><tbody><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> callback_query_id</strong> <strong>(obligatorio)</strong></td><td>Este ID te permite identificar a la persona que hizo clic en el botón y mostrarle la notificación de alerta.</td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> text (obligatorio)</strong> </td><td>Texto de la notificación de alerta.</td></tr><tr><td><strong>show_alert</strong></td><td>Indicación de notificación emergente (False — notificación tipo tooltip que se desvanece, True — notificación persistente en ventana)</td></tr><tr><td><strong>cache_time</strong></td><td>La cantidad máxima de tiempo, en segundos, durante la cual el resultado de una solicitud de callback puede almacenarse en caché del lado del cliente. Las aplicaciones de Telegram admitirán el almacenamiento en caché a partir de la versión 3.14. El valor predeterminado es 0</td></tr></tbody></table>

</details>

<details>

<summary>Ejemplo</summary>

Las notificaciones de alerta se muestran solo como resultado de hacer clic en el botón de callback en Telegram.

\
Por ejemplo, usamos los siguientes botones:

\[{"line":0,"index\_in\_line":0,"text":"111","type":"inline","callback":"first"}, {"line":1,"index\_in\_line":0,"text":"222","type":"inline","callback":"second"}, {"line":2,"index\_in\_line":0,"text":"333","type":"inline","callback":"third"}]&#x20;

<figure><img src="/files/4b86891f7038d98c6374743dcda4c412e40cb7b1" alt="" width="563"><figcaption></figcaption></figure>

Después de hacer clic en un botón, llega una callback con el texto contenido en el campo correspondiente. Cuando haces clic en el botón “111”, recibirás una callback con el texto “first".

<figure><img src="/files/2b726fdf79ddf268b24afa0ecb90fae1d5ea9d20" alt="" width="563"><figcaption></figcaption></figure>

Creemos un bloque Start y especifiquemos el texto deseado en el disparador. En nuestro caso: **"first**

<figure><img src="/files/b1b836514ba5a37c375f10afdcac5583db476d5c" alt=""><figcaption></figcaption></figure>

Si en el **Coincide con** campo seleccionas **Ignorar errores e imprecisiones**, este bloque puede reutilizarse más adelante para todas las variantes similares que difieren en 1–2 caracteres. Por ejemplo, para agradecer al usuario por proporcionar una calificación con un botón así.

A continuación, en la calculadora, usa la **tg\_answer\_callback\_query** función y pasa los siguientes parámetros:\
**callback\_query\_id** - este ID te permite identificar al usuario que pulsó el botón y mostrarle la notificación de alerta              \
**text** - texto de la notificación de alerta.

<figure><img src="/files/0e0e5735233233fe01fe445f72937773ee1b6c1c" alt="" width="563"><figcaption></figcaption></figure>

Ejemplo de código para copiar:

`tg_answer_callback_query('#{callback_query_id}', "You pressed the button 111")`&#x20;

{% hint style="warning" %}
¡Atención! El parámetro callback\_query\_id debe pasarse exactamente como se muestra en el ejemplo, es decir, dentro de '#{}'
{% endhint %}

Si todo está configurado correctamente, al pulsar el botón se mostrará una notificación de alerta con el texto especificado. En la versión móvil, el nombre del bot aparecerá como encabezado sobre el texto.

<figure><img src="/files/9d3d1c2de3319cbad304dc0c1bd0f68b5f59572b" alt="" width="563"><figcaption></figcaption></figure>

Si quieres mostrar un simple **mensaje emergente** en su lugar, pasa **Falso** como tercer parámetro, como se muestra en el siguiente ejemplo:\
tg\_answer\_callback\_query('#{callback\_query\_id}', "You passed the button 222", False)

<figure><img src="/files/b4b2c7f3eb53b05c61355424f8b0318b48b19802" alt="" width="563"><figcaption><p>Cuando se pulsa el botón<br>con estos parámetros, aparecerá durante unos segundos una notificación de este tipo.</p></figcaption></figure>

</details>

## Añadiendo una redirección del bot con una etiqueta como respuesta de botón de callback

<details>

<summary>Descripción</summary>

**tg\_callback\_url\_open(callback\_query\_id, url, cache\_time)**

Parámetros:

<table><thead><tr><th width="309.5234375">Parámetros</th><th>Descripción</th></tr></thead><tbody><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> callback_query_id</strong></td><td>Este ID te permite identificar a la persona que hizo clic en el botón y mostrarle la notificación de alerta.</td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> url</strong> </td><td>URL que apunta al bot y un parámetro (formato: t.me/your_bot?start=XXXX, donde your_bot es el nombre del bot)</td></tr><tr><td><strong>cache_time</strong></td><td>La cantidad máxima de tiempo, en segundos, durante la cual el resultado de una solicitud de callback puede almacenarse en caché del lado del cliente. Las aplicaciones de Telegram admitirán el almacenamiento en caché a partir de la versión 3.14. El valor predeterminado es 0</td></tr></tbody></table>

</details>

<details>

<summary>Ejemplo</summary>

En la respuesta del botón de callback, puedes añadir una transición al bot usando una etiqueta, tg\_callback\_url\_open('#{callback\_query\_id}', 't.me/bot\_name?start=XXXX')

Por ejemplo, usemos los siguientes botones:

\[{"line":0,"index\_in\_line":0,"text":"111","type":"inline","callback":"first"}, {"line":1,"index\_in\_line":0,"text":"222","type":"inline","callback":"second"}, {"line":2,"index\_in\_line":0,"text":"333","type":"inline","callback":"third"}]

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

Después de hacer clic en un botón, llega una callback con el texto contenido en el campo correspondiente. Cuando haces clic en el botón “111”, recibirás una callback con el texto “first".

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

Crea un bloque con una comprobación de condición principal y especifica el texto deseado en la condición. En nuestro caso: “first”:

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

Si en el **Opción coincidente** campo seleccionas **Ignorar errores e imprecisiones**, este bloque puede reutilizarse más adelante para todas las variantes similares que difieren en 1–2 caracteres. Por ejemplo, para agradecer al usuario por proporcionar una calificación con un botón así.

A continuación, en la calculadora del bloque, especifica tg\_callback\_url\_open('#{callback\_query\_id}', 't.me/bot\_name?start=XXXX'):

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

</details>

## Cómo promover a un usuario a administrador en un supergrupo o canal

<details>

<summary>Descripción</summary>

**tg\_promote\_user(platform\_id, user\_id, promote\_options\_list)**

Parámetros:

<table><thead><tr><th width="269.9765625">Parámetro</th><th width="515.17578125">Descripción</th></tr></thead><tbody><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> platform_id</strong></td><td>el identificador de un supergrupo o, si se usa en un canal, el nombre de usuario del canal en el formato @channelusername dentro 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> user_id</strong></td><td>el identificador de un usuario dentro 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> promote_options_list</strong></td><td>lista de permisos que se habilitarán. </td></tr></tbody></table>

</details>

<details>

<summary><mark style="color:rojo;">Parámetro obligatorio: <strong>promote_options_list</strong></mark></summary>

Se pueden especificar los siguientes permisos en la **promote\_options\_list** :

1. **is\_anonymous** — oculta la presencia del administrador en el chat,&#x20;
2. **can\_manage\_chat** — el administrador puede acceder al registro de eventos del chat, estadísticas del chat, estadísticas de mensajes en canales, ver miembros del canal, ver administradores anónimos en supergrupos y omitir el modo lento. Este nivel de permiso se concede por defecto si se especifica cualquiera de los privilegios siguientes
3. **can\_post\_messages** — — el administrador puede crear publicaciones en el canal <mark style="color:rojo;">(solo canales)</mark>
4. **can\_edit\_messages** — el administrador puede editar mensajes de otros usuarios y fijar mensajes <mark style="color:rojo;">(solo canales)</mark>&#x20;
5. **can\_delete\_messages** — el administrador puede eliminar mensajes de otros usuarios
6. **can\_manage\_video\_chats** — el administrador puede gestionar chats de vídeo,
7. **can\_restrict\_members** — el administrador puede restringir miembros, baneárselos/desbaneárselos en el chat,&#x20;
8. **can\_promote\_members** — el administrador puede nombrar nuevos administradores con un subconjunto de sus propios privilegios, o degradar a administradores que haya nombrado directa o indirectamente (por ejemplo, administradores nombrados por él/ella)
9. **can\_change\_info** — el administrador puede cambiar el título del chat, la foto y otras configuraciones
10. **can\_invite\_users** — el administrador puede invitar a nuevos usuarios al chat
11. **can\_pin\_messages** — el administrador puede fijar mensajes <mark style="color:rojo;">(solo supergrupos).</mark>

</details>

<details>

<summary>Ejemplo</summary>

Ejemplo: promover a un usuario a administrador en un supergrupo:

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

En este ejemplo, además de los permisos especificados, el permiso can\_manage\_chat se concederá por defecto.

<div data-with-frame="true"><figure><img src="/files/90837b1fa11ca8eb70131ef6780f568522476fb9" alt="" width="563"><figcaption><p>Asignar permisos a un usuario</p></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/1d0491f5fcfc792e5fe963f201ffe729ccbb512c" alt="" width="563"><figcaption><p>Establecer un título personalizado de administrador</p></figcaption></figure></div>

Ejemplo de código para copiar

<pre data-full-width="false"><code><strong>Ejemplo 1. 
</strong><strong>promote_options_list = ‘[“can_promote_members”,”can_change_info”,”can_invite_users”]’ 
</strong>tg_promote_user(platform_id, user_id, promote_options_list)

Ejemplo 2. 
promote_options_list = '["can_manage_chat","can_post_messages","can_edit_messages","can_delete_messages","can_manage_video_chats","can_promote_members","can_restrict_members","can_invite_users","can_pin_messages"]' 
result=tg_promote_user(platform_id, reply_from, promote_options_list)  
</code></pre>

</details>

## Cómo cambiar el título de administrador usando un bot en Telegram

<details>

<summary>Descripción</summary>

**tg\_set\_administrator\_title(platform\_id, user\_id, title)** &#x20;

Parámetros:&#x20;

<table><thead><tr><th width="303.94921875">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>identificador del supergrupo dentro 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> user_id</strong></td><td>identificador del usuario dentro 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> title</strong></td><td><p>título de administrador</p><p>Restricciones para el título:</p><p>Longitud: 0–16 caracteres, no se permiten emojis</p></td></tr></tbody></table>

{% hint style="warning" %}
¡IMPORTANTE!&#x20;

Esto solo funciona para usuarios que fueron promovidos a administradores en el supergrupo por el bot
{% endhint %}

Ejemplo de código para copiar:

```
result=tg_set_administrator_title(platform_id, reply_from, "firetitle")
```

</details>

## Restricciones generales para miembros normales del chat o usuarios específicos de Telegram

<details>

<summary>Descripción</summary>

**tg\_chat\_permission(platform\_id, permission, media\_permissions)**

Parámetros:

<table><thead><tr><th width="318.76171875">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>identificador del chat dentro 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> permission</strong></td><td><p>un array de valores de la lista de restricciones (ver más abajo).</p><p>1 = la acción está permitida</p><p>0 = la acción está prohibida</p><p>El índice del array corresponde a la posición en la lista de restricciones</p></td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> media_permissions</strong></td><td><p>un array de valores que define permisos relacionados con medios (detalles más abajo).</p><p>1 = la acción está permitida</p><p>0 = la acción está prohibida</p><p>El índice del array corresponde a la posición en la lista de permisos de medios</p></td></tr></tbody></table>

</details>

<details>

<summary><strong>Lista de restricciones para el parámetro requerido </strong><mark style="color:rojo;"><strong>permission</strong></mark></summary>

**Lista de restricciones para** **permission:**\
1\. <mark style="color:rojo;">**!**</mark>**&#x20;can\_send\_messages** - permiso para enviar mensajes de texto, contactos, ubicaciones y lugares.\
2\. <mark style="color:rojo;">**!**</mark>**&#x20;can\_send\_media\_messages** - permiso para enviar audio, documentos, fotos, vídeos, notas de vídeo y notas de voz. Requiere **can\_send\_messages**\
3\. <mark style="color:rojo;">**!**</mark>**&#x20;can\_send\_polls** - permiso para enviar encuestas. Requiere **can\_send\_messages**\
4\. <mark style="color:rojo;">**!**</mark>**&#x20;can\_send\_other\_messages** - permiso para enviar animaciones, juegos, stickers y para usar bots en línea. Requiere **can\_send\_media\_messages**\
5\. <mark style="color:rojo;">**!**</mark>**&#x20;can\_add\_web\_page\_previews** - permiso para añadir vistas previas de páginas web a los mensajes. Requiere **can\_send\_media\_messages**\
6\. <mark style="color:rojo;">**!**</mark>**&#x20;can\_change\_info** - permiso para cambiar el título del chat, la foto y otras configuraciones. Esto se ignora en supergrupos públicos.\
7\. <mark style="color:rojo;">**!**</mark>**&#x20;can\_invite\_users** - permiso para invitar usuarios\
8\. <mark style="color:rojo;">**!**</mark>**&#x20;can\_pin\_messages** - permiso para fijar mensajes. Esto se ignora en supergrupos públicos.\
9\. **can\_manage\_topics** - permiso para crear temas en grupos de foro. Si se usa en un grupo del tipo incorrecto, la función fallará y devolverá un error.

</details>

<details>

<summary><strong>Lista de valores para el parámetro requerido </strong><mark style="color:rojo;"><strong>media_permissions</strong></mark></summary>

#### Valores para conceder permisos relacionados con medios **media\_permissions:**&#x20;

1\. **can\_send\_audios** - permiso para enviar archivos de audio\
2\. **can\_send\_documents** -permiso para enviar documentos\
3\. **can\_send\_photos** - permiso para enviar fotos\
4\. **can\_send\_videos**  - permiso para enviar vídeos\
5\. **can\_send\_video\_notes** - permiso para enviar mensajes de vídeo circulares\
6\. **can\_send\_voice\_notes** - permiso para enviar mensajes de vozя

</details>

## Restricciones personales de Telegram para usuarios normales del chat o para usuarios específicos de Telegram

<details>

<summary>Descripción</summary>

**tg\_restrict\_chat\_member(platform\_id, user\_id, minutes, permission, media\_permissions).**

Parámetros:

| Parámetro                                                    | Descripción                                                                                                                                                                                                                      |
| ------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <mark style="color:rojo;">**!**</mark>**&#x20;platform\_id** | ID del chat en Telegram [**\***](#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii)                                                                                                                                               |
| <mark style="color:rojo;">**!**</mark>**&#x20;user\_id**     | ID de usuario en Telegram [**\***](#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii)                                                                                                                                             |
| **minutes**                                                  | el número de minutos durante los cuales la restricción permanecerá activa. Si no estableces un valor, el predeterminado es **3600**, que equivale a **60 horas**. Si lo estableces en **0**, la restricción se vuelve permanente |
| **permission**                                               | un array de valores de la [lista de restricciones de permiso](#list-of-restrictions-for-the-required-parameter-permission).                                                                                                      |
| **media\_permissions**                                       | una lista de valores para conceder permisos relacionados con medios                                                                                                                                                              |

</details>

<details>

<summary><strong>Lista de restricciones para el parámetro requerido </strong><mark style="color:rojo;"><strong>permission</strong></mark></summary>

**Lista de restricciones para** **permission:**\
1\. <mark style="color:rojo;">**!**</mark>**&#x20;can\_send\_messages** - permiso para enviar mensajes de texto, contactos, ubicaciones y lugares.\
2\. <mark style="color:rojo;">**!**</mark>**&#x20;can\_send\_media\_messages** - permiso para enviar audio, documentos, fotos, vídeos, notas de vídeo y notas de voz. Requiere **can\_send\_messages**\
3\. <mark style="color:rojo;">**!**</mark>**&#x20;can\_send\_polls** - permiso para enviar encuestas. Requiere **can\_send\_messages**\
4\. <mark style="color:rojo;">**!**</mark>**&#x20;can\_send\_other\_messages** - permiso para enviar animaciones, juegos, stickers y para usar bots en línea. Requiere **can\_send\_media\_messages**\
5\. <mark style="color:rojo;">**!**</mark>**&#x20;can\_add\_web\_page\_previews** - permiso para añadir vistas previas de páginas web a los mensajes. Requiere **can\_send\_media\_messages**\
6\. <mark style="color:rojo;">**!**</mark>**&#x20;can\_change\_info** - permiso para cambiar el título del chat, la foto y otras configuraciones. Esto se ignora en supergrupos públicos.\
7\. <mark style="color:rojo;">**!**</mark>**&#x20;can\_invite\_users** - permiso para invitar usuarios\
8\. <mark style="color:rojo;">**!**</mark>**&#x20;can\_pin\_messages** - permiso para fijar mensajes. Esto se ignora en supergrupos públicos.\
9\. **can\_manage\_topics** - permiso para crear temas en grupos de foro. Si se usa en un grupo del tipo incorrecto, la función fallará y devolverá un error.&#x20;

</details>

<details>

<summary>Lista de valores para el parámetro requerido <mark style="color:rojo;"><strong>media_permissions</strong></mark></summary>

#### Valores para conceder permisos relacionados con medios **media\_permissions:**&#x20;

1\. **can\_send\_audios** - permiso para enviar archivos de audio\
2\. **can\_send\_documents** -permiso para enviar documentos\
3\. **can\_send\_photos** - permiso para enviar fotos\
4\. **can\_send\_videos**  - permiso para enviar vídeos\
5\. **can\_send\_video\_notes** - permiso para enviar mensajes de vídeo circulares\
6\. **can\_send\_voice\_notes** - permiso para enviar mensajes de vozя

</details>

<details>

<summary>Ejemplo</summary>

Ejemplo de uso de la función, donde se restringe todo al usuario durante 3 minutos:

<figure><img src="/files/2a01f2a8d402cebce2dae7f45cfc74c465348549" alt="" width="563"><figcaption></figcaption></figure>

Cuando el usuario entra al chat, verá una notificación de que no puede enviar mensajes en el chat.\
Si se establece un límite de tiempo, también verá la duración de esta restricción.

<figure><img src="/files/a32419fff753926c9abcaadbc87721f782d861e7" alt=""><figcaption></figcaption></figure>

Ejemplo de código para copiar:

```
permission = [0, 0, 0, 0, 0, 0, 0, 0] 
tg_restrict_chat_member(-1001607137668, 473737685, 3, permission)
```

</details>

## Cómo fijar un mensaje

<details>

<summary>Descripción</summary>

**tg\_pin\_chat\_message(platform\_id, message\_id, disable\_notification)**&#x20;

Parámetros:

<table><thead><tr><th width="311.3359375">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 del chat dentro de Telegram  <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><strong>message_id</strong></td><td>ID del mensaje que debe fijarse</td></tr><tr><td><strong>disable_notification</strong></td><td>El parámetro define si se debe enviar una notificación a todos los miembros del chat sobre un nuevo mensaje fijado (las notificaciones siempre están desactivadas en canales y chats privados).<br>Si no quieres enviar notificaciones, establece el parámetro <strong>disable_notification</strong> a <strong>1</strong>.<br>De lo contrario, establécelo en <strong>0</strong>.</td></tr></tbody></table>

</details>

## Cómo desfijar un mensaje

<details>

<summary>Descripción</summary>

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

Parámetros:

<table><thead><tr><th width="311.3359375">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 del chat dentro de Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><strong>message_id</strong></td><td>ID del mensaje que debe desfijarse. Si no se proporciona message_id, se desfijará el mensaje fijado más reciente (por fecha de envío)</td></tr></tbody></table>

</details>

## Cómo desfijar todos los mensajes fijados

<details>

<summary>Descripción</summary>

**tg\_unpin\_all(platform\_id)**

Parámetros:

<table><thead><tr><th width="311.3359375">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 del chat dentro de Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr></tbody></table>

{% hint style="warning" %}
¡ATENCIÓN!

Telegram tiene una limitación para las funciones de fijar/desfijar mensajes.&#x20;

Los límites de tiempo para usar **tg\_pin\_chat\_message / tg\_unpin\_chat\_message / tg\_unpin\_all&#x20;**<mark style="color:rojo;">**NO están establecidos por el sistema MaviBot.**</mark>&#x20;

**Si el tiempo permitido para fijar un mensaje ha pasado, la función seguirá devolviendo true, pero Telegram no aplicará el cambio.**

También es importante tener en cuenta que los mensajes fijados pueden permanecer en caché, por lo que puede que no desaparezcan visualmente de inmediato.
{% endhint %}

</details>

## Cómo crear una encuesta en Telegram

<details>

<summary>Descripción</summary>

**tg\_send\_poll(platform\_id, question, options, is\_anonymous, allows\_multiple\_answers, reply\_markup, disable\_notification, protect\_content, token, reply\_to\_message\_id,  message\_thread\_id, business\_connection\_id)**

Parámetros:

<table><thead><tr><th width="311.3359375">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 del chat en 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> question</strong> </td><td>question</td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> options</strong></td><td>un array de opciones de respuesta</td></tr><tr><td><strong>is_anonymous</strong></td><td>1 - encuesta anónima, '' - no anónima </td></tr><tr><td><strong>allows_multiple_answers</strong></td><td>1 - se permiten múltiples respuestas, '' - una sola respuesta</td></tr><tr><td><strong>reply_markup</strong> </td><td>teclado o '' - sin teclado </td></tr><tr><td><strong>disable_notification</strong></td><td>indicador para enviar con notificación sonora (predeterminado 0)<br>1 – desactivar la notificación al recibir, 0 – enviar con notificación</td></tr><tr><td><strong>protect_content</strong></td><td>1 para proteger de copias y capturas de pantalla, '' sin protección</td></tr><tr><td><strong>token</strong></td><td>token del bot; si no se proporciona, se usa el actual</td></tr><tr><td>r<strong>eply_to_message_id</strong></td><td>ID del mensaje citado</td></tr><tr><td><strong>message_thread_id</strong></td><td>ID del tema (disponible para supergrupos si existe la funcionalidad de foro)</td></tr><tr><td><strong>business_connection_id</strong></td><td>valor al conectar un bot (Business ID). Se muestra en los canales. Debe proporcionarse si se usa el token del bot y el mensaje debe enviarse a través de una cuenta de usuario conectada al bot</td></tr></tbody></table>

</details>

<details>

<summary>¡Importante saberlo!</summary>

Notas

1\. La función devuelve una respuesta de Telegram con **message\_id**. Es mejor guardarla. Usando message\_id, puedes detener la encuesta con **tg\_stop\_poll** (ver descripción abajo) y obtener el resultado.

2\. Si un usuario añade una encuesta en un mensajero, se envía una callback al chat:

**poll\_added** - parte invariable \
YOUR QUESTION - texto de la pregunta de la encuesta

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

Ejemplo de callback al añadir una encuesta al canal

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

Ejemplo de callback al añadir una encuesta al chat

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

La segunda callback después de poll\_added contiene números - no es otra cosa que el identificador del usuario en Telegram que añadió la encuesta.

{% hint style="warning" %}
**Cuando la encuesta la crea el bot, la callback no llega.**
{% endhint %}

&#x33;**.** En el canal solo se pueden crear encuestas anónimas

{% hint style="info" %}
**¡Atención, se recomienda enviar al grupo solo encuestas anónimas!**
{% endhint %}

4\. Después de crear la encuesta, guarda su identificador en una variable para entender a qué encuesta llegó la callback.

</details>

<details>

<summary>Ejemplo</summary>

La opinión de los clientes es clave para nuestro crecimiento. Las encuestas ofrecen un método sencillo para captar esta opinión y convertirla en conclusiones empresariales concretas.

Ejemplo de código para copiar:

```
/* Ejemplo de creación de una encuesta simple */
options = ["white", "red", "blue", "green"]
poll1 = tg_send_poll(platform_id, 'What is your favorite color?', options, 1, '', '', 1, '')
```

**Función para crear una encuesta en Telegram:**

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

**La encuesta que creamos en Telegram**

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

</details>

## Cómo crear un quiz en Telegram

<details>

<summary>Descripción</summary>

**tg\_send\_quiz\_poll(platform\_id, question, options, explanation, correct\_option\_id, is\_anonymous, reply\_markup, parse\_mode, protect\_content, disable\_notification, token, reply\_to\_message\_id, message\_thread\_id )**

Parámetros:&#x20;

<table><thead><tr><th width="311.25">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 del chat dentro 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> question</strong> </td><td>question</td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> options</strong></td><td>un array de opciones de respuesta</td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> explanation</strong></td><td>texto que se muestra cuando un usuario selecciona una respuesta incorrecta o hace clic en el icono de la lámpara en una encuesta tipo quiz, 0–200 caracteres con no más de dos saltos de línea después del análisis de entidades.</td></tr><tr><td><mark style="color:rojo;"><strong>!</strong></mark><strong> correct_option_id</strong></td><td>número de la respuesta correcta, numeración desde 1</td></tr><tr><td><strong>is_anonymous</strong></td><td>1 - encuesta anónima, '' - no anónima </td></tr><tr><td><strong>reply_markup</strong></td><td>teclado o '' - sin teclado </td></tr><tr><td><strong>parse_mode</strong></td><td>formato de explicación: <code>markdown</code>, <code>html</code>, o <code>''</code> (cadena vacía para no aplicar formato)</td></tr><tr><td><strong>protect_content</strong></td><td>1 para proteger de copias y capturas de pantalla, '' sin protección</td></tr><tr><td><strong>disable_notification</strong></td><td>indicador para enviar con notificación sonora (predeterminado 0)<br>1 – desactivar la notificación al recibir, 0 – enviar con notificación</td></tr><tr><td><strong>token</strong></td><td>token del bot; si no se proporciona, se usa el actual</td></tr><tr><td><strong>reply_to_message_id</strong></td><td>ID del mensaje citado</td></tr><tr><td><strong>message_thread_id</strong></td><td>ID del tema (disponible en supergrupos con funciones de foro activas)</td></tr></tbody></table>

</details>

<details>

<summary><mark style="color:naranja;">¡Importante saberlo!</mark></summary>

#### **Notas**

**1. Guarda el `message_id`**

La función de la API devuelve una respuesta de Telegram que contiene un **`message_id`**. Guarda siempre este ID, ya que se necesita para:

* Terminar el quiz usando la `tg_stop_poll` función (ver descripción abajo).
* Obtener los resultados finales.

**2. Callback `poll_added`**

Si un usuario añade una encuesta a un **canal**, el bot recibe una callback:

* **Formato:** `poll_added` + **Pregunta de la encuesta**
* **Si se añade a un chat de grupo:** la callback también incluye el **Telegram User ID** de la persona que añadió la encuesta.

{% hint style="warning" %}
**Si fue creada por el bot:** No `poll_added` se envía ninguna callback.
{% endhint %}

**3. Restricción de canal**

Solo **quizzes anónimos** pueden crearse en los canales.

**4. Callback `poll_answer` (voto del usuario)**

Cuando un usuario vota en un quiz enviado a un **chat privado** o **group**, se envía una callback al diálogo del bot con ese cliente:

* **Formato:** `poll_answer` + **ID de la encuesta** + **\[Índice de respuesta]**
* **Ejemplo:** `poll_answer 5325838371359031648 [3]`
* **Nota:** la numeración de respuestas comienza en **0**. `[3]` significa que el usuario seleccionó la cuarta opción de respuesta.

**5. Webhook para encuestas de grupo no anónimas**

Para **encuestas no anónimas** en grupos donde el bot es administrador, se envía un webhook por *cada voto*. Al recibirlo, el bot reenviará la `poll_answer` callback (como en el punto 4) a su diálogo con el cliente correspondiente.

**6. Requisito de activación y mejor práctica**

* **Requisito:** un bot no puede iniciar una conversación. Si un cliente nunca ha contactado con el bot, no puedes enviarle un mensaje directo en respuesta a su voto hasta que **active primero el bot** (por ejemplo, enviando un `/start` comando).

{% hint style="info" %}
**Recomendación:** para evitar esta limitación, **se recomienda encarecidamente enviar solo quizzes anónimos a los grupos.**
{% endhint %}

**7. Haz seguimiento de tus encuestas**

Inmediatamente después de crear un quiz, guarda su **ID de la encuesta** único en una variable. Esto te permite identificar a qué encuesta específica se refiere una callback entrante.

</details>

<details>

<summary>Ejemplo</summary>

Ejemplo de código para copiar.

```
options = ["white", "red", "blue", "green"] 
r = tg_send_quiz_poll(platform_id, "What color is a crocodile?", options, "That is the explanation", 4, '', '', '', '', 1)
```

Ejemplo: creación de quiz.

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

</details>

## Cómo terminar una encuesta

<details>

<summary>Descripción</summary>

**tg\_stop\_poll(platform\_id, message\_id)**

Parámetros:

<table><thead><tr><th width="303.45703125">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 del chat en 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 de encuesta/quiz. Puede obtenerse del webhook</td></tr></tbody></table>

{% hint style="info" %}
Llamar a esta función para terminar una encuesta/cuestionario devuelve un diccionario que contiene los resultados finales.
{% endhint %}

</details>

## Cómo trabajar con temas en Telegram

{% hint style="warning" %}
Importante: el tema principal del grupo no tiene un ID y requiere funciones separadas para trabajar con él.
{% endhint %}

### Cómo cambiar el nombre del Tema General del grupo

<details>

<summary>Descripción</summary>

**tg\_edit\_general\_forum\_topic(platform\_id, topic\_name)**

Parámetros:

<table><thead><tr><th width="303.1171875">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 del chat dentro 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> topic_name</strong></td><td>nuevo nombre del tema</td></tr><tr><td>bot_name</td><td><p>parámetro opcional: nombre del bot.</p><p>Al trabajar con temas, puedes especificar qué bot debe ejecutar la función. Esto es útil si tu proyecto usa varios bots de Telegram. Encuentra el nombre del bot en la sección "Channels", en el campo "Group ID".</p></td></tr></tbody></table>

</details>

<details>

<summary>Ejemplo</summary>

El Tema General de los grupos se puede cambiar usando la `tg_edit_general_forum_topic()` función. Requiere dos parámetros obligatorios: el ID del chat y el nuevo nombre para el Tema del Grupo:

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

</details>

<details>

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

*renombrar el chat del Tema General*/\
`answer = tg_edit_general_forum_topic(-1001839380031, 'General')`

</details>

### Cómo cerrar el Tema General

<details>

<summary>Descripción</summary>

**tg\_close\_general\_forum\_topic(platform\_id)**

Parámetros:

<table><thead><tr><th width="315.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 del chat dentro de Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td>bot_name</td><td><p>parámetro opcional: nombre del bot.</p><p>Al trabajar con temas, puedes especificar qué bot debe ejecutar la función. Esto es útil si tu proyecto usa varios bots de Telegram. Encuentra el nombre del bot en la sección "Channels", en el campo "Group ID".</p></td></tr></tbody></table>

</details>

<details>

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

/*cerrar el chat del Tema General*/\
`answer = tg_close_general_forum_topic(-1001839380031)`

</details>

### Cómo reabrir un Tema General previamente cerrado

<details>

<summary>Descripción</summary>

**tg\_reopen\_general\_forum\_topic(platform\_id)**&#x20;

Parámetros:

<table><thead><tr><th width="315.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 del chat dentro de Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td>bot_name</td><td><p>parámetro opcional: nombre del bot.</p><p>Al trabajar con temas, puedes especificar qué bot debe ejecutar la función. Esto es útil si tu proyecto usa varios bots de Telegram. Encuentra el nombre del bot en la sección "Channels", en el campo "Group ID".</p></td></tr></tbody></table>

</details>

<details>

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

/*reabrir el chat del Tema General*/\
`answer = tg_reopen_general_forum_topic(-1001839380031)`

</details>

### Cómo ocultar el Tema General

<details>

<summary>Descripción</summary>

**tg\_hide\_general\_forum\_topic(platform\_id)**&#x20;

Parámetros:

<table><thead><tr><th width="315.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 del chat dentro de Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td>bot_name</td><td><p>parámetro opcional: nombre del bot.</p><p>Al trabajar con temas, puedes especificar qué bot debe ejecutar la función. Esto es útil si tu proyecto usa varios bots de Telegram. Encuentra el nombre del bot en la sección "Channels", en el campo "Group ID".</p></td></tr></tbody></table>

El chat del Tema General puede cerrarse para los participantes del Tema (pueden leer pero no escribir) y ocultarse de la lista general de chats de Telegram para los nuevos usuarios.

</details>

<details>

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

/ocultar el chat del Tema General/\
`answer = tg_hide_general_forum_topic(-1001839380031)`

</details>

### **Cómo mostrar el Tema General o restaurar su visibilidad**

<details>

<summary>Descripción</summary>

**tg\_unhide\_general\_forum\_topic(platform\_id)**&#x20;

Parámetros:

<table><thead><tr><th width="315.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 del tema dentro de Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td>bot_name</td><td><p>parámetro opcional: nombre del bot.</p><p>Al trabajar con temas, puedes especificar qué bot debe ejecutar la función. Esto es útil si tu proyecto usa varios bots de Telegram. Encuentra el nombre del bot en la sección "Channels", en el campo "Group ID".</p></td></tr></tbody></table>

{% hint style="warning" %} <mark style="color:rojo;">**¡Importante!**</mark>&#x20;

Esta función no reabre el Tema General; solo lo hace visible.
{% endhint %}

</details>

<details>

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

/*mostrar el chat del Tema General*/\
`answer = tg_unhide_general_forum_topic(-1001839380031)`

</details>

### Cómo crear un nuevo tema en Telegram

<details>

<summary>Descripción</summary>

**tg\_create\_forum\_topic(platform\_id, name, icon, icon\_color)**&#x20;

Parámetros:

<table><thead><tr><th width="312.953125">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 del chat dentro 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> name</strong></td><td>nuevo nombre del tema</td></tr><tr><td><strong>icon</strong></td><td>ID del emoji que se establecerá para el tema. Se pasa como una cadena. Solo puedes usar emojis de la lista recuperada por la <code>tg_get_forum_icon</code> función.</td></tr><tr><td><strong>icon_color</strong></td><td>color del emoji de la lista: 7322096, 16766590, 13338331, 9367192, 16749490, 16478047. No todos los emojis admiten cambios de color.</td></tr><tr><td>bot_name </td><td><p>parámetro opcional: nombre del bot.</p><p>Al trabajar con temas, puedes especificar qué bot debe ejecutar la función. Esto es útil si tu proyecto usa varios bots de Telegram. Encuentra el nombre del bot en la sección "Channels", en el campo "Group ID".</p></td></tr></tbody></table>

{% hint style="info" %}
El color establecido no se puede cambiar; el color solo se puede asignar al crear el tema.
{% endhint %}

Al ejecutarse, la función devolverá una respuesta que contiene los parámetros del nuevo tema, incluido el ID del tema (necesario para varias funciones).

</details>

<details>

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

Para crear un chat de tema adicional\
`answer = tg_create_forum_topic(-1001839380031, 'second_bot_topic', None, 7322096)`

Para guardar el ID del chat de tema adicional creado\
`answer={"ok":true,"result":{"message_thread_id":254,"name":"second_bot_topic","icon_color":7322096}}/`\
`idtema1=answer['result']['message_thread_id']`

</details>

### Cómo editar un tema. Cómo renombrar y/o cambiar el emoji de un tema

<details>

<summary>Descripción</summary>

**tg\_edit\_forum\_topic(platform\_id, message\_thread\_id, name, icon)**&#x20;

Parámetros:

<table><thead><tr><th width="301.7578125">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 del chat dentro 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_thread_id</strong></td><td>ID del chat del tema adicional</td></tr><tr><td><strong>name</strong></td><td>nuevo nombre del tema</td></tr><tr><td><strong>icon</strong></td><td>ID del emoji que se establecerá para el tema. Se pasa como una cadena. Solo puedes usar emojis de la lista recuperada por la <code>tg_get_forum_icon</code> función.</td></tr><tr><td>bot_name</td><td><p>parámetro opcional: nombre del bot.</p><p>Al trabajar con temas, puedes especificar qué bot debe ejecutar la función. Esto es útil si tu proyecto usa varios bots de Telegram. Encuentra el nombre del bot en la sección "Channels", en el campo "Group ID".</p></td></tr></tbody></table>

</details>

<details>

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

`answer = tg_edit_forum_topic(-1001839380031, 254)`

</details>

### Cómo cerrar un tema seleccionado

<details>

<summary>Descripción</summary>

Cerrar un tema significa dejarlo solo de lectura; no se permite escribir en un tema cerrado.

**tg\_close\_forum\_topic(platform\_id, message\_thread\_id)**&#x20;

Parámetros:

<table><thead><tr><th width="300.9765625">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 del chat dentro 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_thread_id</strong></td><td>ID del chat del tema adicional</td></tr><tr><td>bot_name</td><td><p>parámetro opcional: nombre del bot.</p><p>Al trabajar con temas, puedes especificar qué bot debe ejecutar la función. Esto es útil si tu proyecto usa varios bots de Telegram. Encuentra el nombre del bot en la sección "Channels", en el campo "Group ID".</p></td></tr></tbody></table>

</details>

<details>

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

`answer = tg_close_forum_topic(-1001839380031, 254)`

</details>

### Cómo reabrir un tema previamente cerrado

<details>

<summary>Descripción</summary>

**tg\_reopen\_forum\_topic(platform\_id, message\_thread\_id)**&#x20;

Parámetros:

<table><thead><tr><th width="300.9765625">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 del chat dentro 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_thread_id</strong></td><td>ID del chat del tema adicional</td></tr><tr><td>bot_name</td><td><p>parámetro opcional: nombre del bot.</p><p>Al trabajar con temas, puedes especificar qué bot debe ejecutar la función. Esto es útil si tu proyecto usa varios bots de Telegram. Encuentra el nombre del bot en la sección "Channels", en el campo "Group ID".</p></td></tr></tbody></table>

</details>

<details>

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

`answer = tg_reopen_forum_topic(-1001839380031, 254)`

</details>

### Cómo eliminar un tema y todos sus mensajes

<details>

<summary>Descripción</summary>

**tg\_delete\_forum\_topic(platform\_id, message\_thread\_id)**&#x20;

Parámetros:

<table><thead><tr><th width="300.9765625">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 del chat dentro 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_thread_id</strong></td><td>ID del chat del tema adicional</td></tr><tr><td>bot_name</td><td><p>parámetro opcional: nombre del bot.</p><p>Al trabajar con temas, puedes especificar qué bot debe ejecutar la función. Esto es útil si tu proyecto usa varios bots de Telegram. Encuentra el nombre del bot en la sección "Channels", en el campo "Group ID".</p></td></tr></tbody></table>

</details>

<details>

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

`answer = tg_delete_forum_topic(-1001839380031, 254)`

</details>

### Cómo desanclar todos los mensajes de un tema

<details>

<summary>Descripción</summary>

**tg\_unpin\_topic\_messages(platform\_id, message\_thread\_id)**&#x20;

Parámetros:

<table><thead><tr><th width="300.9765625">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 del chat dentro 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_thread_id</strong></td><td>ID del chat del tema adicional</td></tr><tr><td>bot_name</td><td><p>parámetro opcional: nombre del bot.</p><p>Al trabajar con temas, puedes especificar qué bot debe ejecutar la función. Esto es útil si tu proyecto usa varios bots de Telegram. Encuentra el nombre del bot en la sección "Channels", en el campo "Group ID".</p></td></tr></tbody></table>

</details>

<details>

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

`answer = tg_unpin_topic_messages(-1001839380031, 254)`

</details>

### Cómo obtener la lista de emojis para un Tema de Telegram

<details>

<summary>Descripción</summary>

<mark style="color:predeterminado;background-color:blue;">**Cómo obtener la lista de emojis**</mark>

`tg_get_forum_icon()` – esta función devuelve una lista de emojis disponibles para usar como iconos de temas del foro. El resultado debe asignarse a una variable, ya que devuelve un diccionario en el que cada clave es un emoji y su valor correspondiente es el identificador único del emoji (`id`).

Parámetros: <mark style="color:verde;">**ninguno.**</mark>&#x20;

</details>

<details>

<summary>El contenido de la lista de emojis</summary>

Para obtener la lista de emojis de un chat de Tema, envía el comando al chat correspondiente.

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

La función devolverá la lista de emojis en su respuesta. Esto significa que la variable `answer` contendrá un diccionario como valor.

{'📰': '5434144690511290129', '💡': '5312536423851630001', '⚡️': '5312016608254762256', '🎙': '5377544228505134960', '🔝': '5418085807791545980', '🗣': '5368697802761185083', '🆒': '5420216386448270341', '❗️': '5379748062124056162', '📝': '5357193964787081133', '📆': '5433614043006903194', '📁': '5357315181649076022', '🔎': '5309965701241379366', '📣': '5309984423003823246', '🔥': '5312241539987020022', '❤️': '5312138559556164615', '❓': '5377316857231450742', '📈': '5350305691942788490', '📉': '5350713563512052787', '💎': '5309958691854754293', '💰': '5350452584119279096', '💸': '5309929258443874898', '\U0001fa99': '5377690785674175481', '💱': '5310107765874632305', '⁉️': '5377438129928020693', '🎮': '5309950797704865693', '💻': '5350554349074391003', '📱': '5409357944619802453', '🚗': '5312322066328853156', '🏠': '5312486108309757006', '💘': '5310029292527164639', '🎉': '5310228579009699834', '‼️': '5377498341074542641', '🏆': '5312315739842026755', '🏁': '5408906741125490282', '🎬': '5368653135101310687', '🎵': '5310045076531978942', '🔞': '5420331611830886484', '📚': '5350481781306958339', '👑': '5357107601584693888', '⚽️': '5375159220280762629', '🏀': '5384327463629233871', '📺': '5350513667144163474', '👀': '5357121491508928442', '\U0001fae6': '5357185426392096577', '🍓': '5310157398516703416', '💄': '5310262535021142850', '👠': '5368741306484925109', '✈️': '5348436127038579546', '\U0001f9f3': '5357120306097956843', '🏖': '5310303848311562896', '⛅️': '5350424168615649565', '🦄': '5413625003218313783', '🛍': '5350699789551935589', '👜': '5377478880577724584', '🛒': '5431492767249342908', '🚂': '5350497316203668441', '🛥': '5350422527938141909', '🏔': '5418196338774907917', '🏕': '5350648297189023928', '🤖': '5309832892262654231', '\U0001faa9': '5350751634102166060', '🎟': '5377624166436445368', '🏴\u200d☠️': '5386395194029515402', '🗳': '5350387571199319521', '🎓': '5357419403325481346', '🔭': '5368585403467048206', '🔬': '5377580546748588396', '🎶': '5377317729109811382', '🎤': '5382003830487523366', '🕺': '5357298525765902091', '💃': '5357370526597653193', '\U0001fa96': '5357188789351490453', '💼': '5348227245599105972', '\U0001f9ea': '5411138633765757782', '👨\u200d👩\u200d👧\u200d👦': '5386435923204382258', '👶': '5377675010259297233', '🤰': '5386609083400856174', '💅': '5368808634392257474', '🏛': '5350548830041415279', '\U0001f9ee': '5355127101970194557', '🖨': '5386379624773066504', '👮\u200d♂️': '5377494501373780436', '\U0001fa7a': '5350307998340226571', '💊': '5310094636159607472', '💉': '5310139157790596888', '\U0001f9fc': '5377468357907849200', '\U0001faaa': '5418115271267197333', '🛃': '5370947704199323325', '🍽': '5350344462612570293', '🐟': '5384574037701696503', '🎨': '5310039132297242441', '🎭': '5350658016700013471', '🎩': '5357504778685392027', '🔮': '5350367161514732241', '🍹': '5350520238444126134', '🎂': '5310132165583840589', '☕️': '5350392020785437399', '🍣': '5350406176997646350', '🍔': '5350403544182694064', '🍕': '5350444672789519765', '\U0001f9a0': '5312424913615723286', '💬': '5417915203100613993', '🎄': '5312054580060625569', '🎃': '5309744892677727325'}

</details>

<details>

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

```
answer = tg_get_forum_icon()
```

</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/chat.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.
