# Telegram Bot

Consideremos un ejemplo de un robot que demuestra el trabajo con un bot de Telegram:

* recibir mensajes del bot;
* responder a un mensaje;
* guardar el archivo enviado en la carpeta del proyecto.

**Nota:** *la creación de un bot de Telegram se puede ver en el video de instrucciones del bloque "Bot. Crear conexión".*

**¡Importante!** *Los datos de conexión a Telegram se pueden encontrar en la ruta: c:\Users\User\AppData\Roaming\Sherpa RPA Data\Telegram\\*

Video de instrucciones para crear un bot en Telegram: <http://sherparpa.ru/videos/ru/telegrambot.mp4>

**Diagrama principal del proyecto** se ve así (para mayor comodidad, los bloques del diagrama están numerados):

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcrtMI_AbXcmjfypr9h3DEkgqri42Ac_wkH3uEjxyEBRQe2HX0r74fBZlQtXsuE3vTrm5SqJvgJKS1rPwKuhiEqKnimQ48VdG8I4pSoIoP2LfA9s0c_Eco989r_tacSvNPNsrx7Iw?key=30LNZh35UC4eIWihhlpMcBJd" alt=""><figcaption></figcaption></figure>

1. **Bloque “Inicio”** (desde este bloque comienza cualquier diagrama).
2. **Bloque “Bot. Crear conexión”** permite crear conexiones para el bot de Telegram. Para este bloque se especifican las siguientes propiedades:

* Token del bot (token del bot que se puede obtener de BotFather en el cliente de Telegram);
* Tiempo de espera (tiempo de espera para la respuesta del servidor de Telegram en segundos).

Como resultado se obtiene “Conexión” – una variable con el objeto de la conexión actual a Telegram. En los demás bloques es necesario especificar exactamente esta variable.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcfO_b95eQxdP5FC7N-w7MOMPuLFZirldO1epYLQMLsDIkKxLy9zK37q4sk2nAasMfF_QaQxHgMW2Py4LRmOD6x5ZTOE85656ZgoIu8GpQ8MaFqm5S-jvz4TA25DDmlaKxi85C0Qg?key=30LNZh35UC4eIWihhlpMcBJd" alt=""><figcaption></figcaption></figure>

3. **Bloque “Bot. Obtener mensaje”** permite obtener un mensaje o una llamada de retorno de la cola. Si no hay mensajes en la cola, se genera un error. Para este bloque se especifica la propiedad “Conexión” (objeto de conexión al bot. El nombre de la variable en esta propiedad debe coincidir con el nombre de la variable en la propiedad "Conexión", del bloque "Bot. Crear conexión" del grupo Telegram, que se utilizó anteriormente para conectarse al bot de Telegram).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdpg9y0oRd4iaFqVd9YvOWexDnP4KGuINrM-DWMAQc9kxUORPOANKz33USwPnRWCKqAfmCvaigsdamHd7ieBIcqNIBGBNSyZqP68LXQiw8icyYekVbjzGDJg4RUipylIiXX9qqzgw?key=30LNZh35UC4eIWihhlpMcBJd" alt=""><figcaption></figcaption></figure>

4. **Bloque “Condición”** verifica la condición especificada para su veracidad, después de lo cual la ejecución del escenario continúa hacia la salida “Sí” (si la condición se cumple) o hacia la salida “No” (si la condición no se cumplió).

La condición se escribe en el formato: “variable” es igual a (==)/ mayor que (>)/ menor que (<) “valor”.

Por ejemplo: $a == “Hola”, es decir, si el valor de la variable $a es igual a “Hola”, entonces salida “Sí”, de lo contrario – salida “No”.

$Result > 5, es decir, si el valor de la variable $Result es menor que 5, entonces salida “Sí”, de lo contrario – salida “No”.

En este caso, se establece como condición: $TMessage.Text=="stop". Es decir, el usuario escribió al bot de Telegram "stop".

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfG89LvD9netT91TdgCzoijpUe2qrHzJN4T45KMY9jGY16x7yxTA7ecaVHRZCqRBVFJDkgWrkBge8H5dtfrzaXv4MlbPkWDidFG9dTUL0zt4McO0vXUo7ejKlQclrWeDWtnK_X0HQ?key=30LNZh35UC4eIWihhlpMcBJd" alt=""><figcaption></figcaption></figure>

5. **Bloque “Bot. Cerrar conexión”** permite cerrar la conexión al bot de Telegram. Para este bloque se especifica la propiedad “Conexión” (objeto de conexión al bot. El nombre de la variable en esta propiedad debe coincidir con el nombre de la variable en la propiedad "Conexión", del bloque "Bot. Crear conexión" del grupo Telegram, que se utilizó anteriormente para conectarse al bot de Telegram).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcSbe-LNHt0JJrgvu3Llfz1rOJ77tJxOPnwtE7TQXxVycGxLeXcrN720tIQnWRUbyzSPeAsgDEZUgBsbWQ7YW6dfG3JqEr0JqkTWtj9PCBRUtpJiD917_6enV2Xpi6DGkFAmFLrcA?key=30LNZh35UC4eIWihhlpMcBJd" alt=""><figcaption></figcaption></figure>

6. **Bloque “Pausa”** suspende la ejecución del escenario durante un tiempo determinado. Para este bloque se especifican las siguientes propiedades:

* Unidad de medida (unidad de medida en la que se establece la duración de la pausa);
* Duración (valor del intervalo de tiempo en las unidades de medida especificadas);
* Iniciar inmediatamente (la bandera establecida activa la aplicación de la pausa inmediatamente en la primera pasada de este bloque desde el inicio del escenario del robot).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdt4ggzf2NyZ45dBTSIeFskhtQsielfmlRGlIvpeme07d7g__9BPmSIL3ipbczNIAF1SCcDoAZ1nFIFwURUIwRkaT8Bl5O6SU025luiWICGzYPXrXEN4a3vW9XS7qzs5xCyMD-NfQ?key=30LNZh35UC4eIWihhlpMcBJd" alt=""><figcaption></figcaption></figure>

7. **Bloque “Condición”** verifica la condición especificada para su veracidad, después de lo cual la ejecución del escenario continúa hacia la salida “Sí” (si la condición se cumple) o hacia la salida “No” (si la condición no se cumplió).

La condición se escribe en el formato: “variable” es igual a (==)/ mayor que (>)/ menor que (<) “valor”.

Por ejemplo: $a == “Hola”, es decir, si el valor de la variable $a es igual a “Hola”, entonces salida “Sí”, de lo contrario – salida “No”.

$Result > 5, es decir, si el valor de la variable $Result es menor que 5, entonces salida “Sí”, de lo contrario – salida “No”.

En este caso, se establece como condición: $TMessage.IsFile. Es decir, verifica si hay un archivo adjunto en el mensaje.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXf55H5o9boIuS6tlc5bq_hbKELOggDBdCMGfdgPNNQ5LhHyghnaHumeWXG591dIgnzuGW1CqDf5p4tT2gRjQ6XlPMeN6ccFvx8QxQkrmHktcWn1-iA9B-hbYbObIMa4DyhY4kAb?key=30LNZh35UC4eIWihhlpMcBJd" alt=""><figcaption></figcaption></figure>

8. **Bloque “Crear archivo”** permite crear un nuevo archivo de texto. Para este bloque se especifica la propiedad “Ruta” (ruta a la carpeta donde se encuentra el archivo necesario. Si se deja esta propiedad vacía, se tomará la carpeta donde se encuentra el proyecto. Si se especifica una carpeta, se producirá una concatenación con el nombre del archivo).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdP5CmVRgbZaGxjj52i9X_rqq7xTkvywKd3bH1WnhqUODVZ16Ea5bzUlQyjBIncvO-rXYjLcT_YfXPW57hcZFGuKZdCLyhaOTASMDhg2zbQeGKRmrJ6Xroh86_fRCNCQztMC1Ogjw?key=30LNZh35UC4eIWihhlpMcBJd" alt=""><figcaption></figcaption></figure>

9. **Bloque “Bot. Descargar archivo”** permite descargar un archivo de un mensaje. Para este bloque se especifican las siguientes propiedades:

* Conexión (objeto de conexión al bot. El nombre de la variable en esta propiedad debe coincidir con el nombre de la variable en la propiedad "Conexión", del bloque "Bot. Crear conexión" del grupo Telegram, que se utilizó anteriormente para conectarse al bot de Telegram);
* Mensaje (objeto mensaje. El nombre de la variable en esta propiedad debe coincidir con el nombre de la variable en la propiedad "Mensaje", del bloque "Bot. Obtener mensaje" del grupo Telegram);
* Nombre del archivo (nombre y ruta del archivo en el que se guardará el archivo del mensaje. Los mensajes de voz deben descargarse en formato .ogg).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd2HeJ40DAzTnyL-BhnbpGjM4v64Lh95hw_HofY7X0vmMedcIOiqaUDbyzPag9IXwP6kGndooUPTDNOTjJuc4eOorMCZRyei_wFIxYuFN6zKsOWipAZIRSvPEILCjABazrbS_Z99g?key=30LNZh35UC4eIWihhlpMcBJd" alt=""><figcaption></figcaption></figure>

10. **Bloque “Ventana para entrada de texto”** permite mostrar una ventana de diálogo modal, destinada a obtener información del usuario. Para este bloque se especifican las siguientes propiedades:

* Título (texto que se mostrará en el encabezado de la ventana de diálogo. En este caso: “Telegram”);
* Mensaje (texto que se mostrará dentro de la ventana de diálogo. En este caso se establece en la variable $TMessage.Text).

  <figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcfdOU-RXo77_qIaIW8V8L3mzsis2Nx3kH-weV3yf1uJV4utpNsyHrJXJCYf_vZKDMRRRTUJ5-rfs4F-hLA5cGjBWyGnIwZ7e_1M0vSkMbtB2tVZ1Nqia84OC69ULzBR5hWj5Hg9w?key=30LNZh35UC4eIWihhlpMcBJd" alt=""><figcaption></figcaption></figure>

11. **Bloque “Bot. Enviar mensaje”** permite enviar un mensaje de texto en el chat. Para este bloque se especifican las siguientes propiedades:

* Conexión (objeto de conexión al bot. El nombre de la variable en esta propiedad debe coincidir con el nombre de la variable en la propiedad "Conexión", del bloque "Bot. Crear conexión" del grupo Telegram, que se utilizó anteriormente para conectarse al bot de Telegram);
* ID del chat (Id del chat. Este valor se obtiene del bloque "Bot. Obtener mensaje" en la propiedad "Mensaje");
* ID del mensaje (ID del mensaje al que se debe responder. Este valor se puede obtener del bloque "Bot. Obtener mensaje" en la propiedad "Mensaje");
* Texto (texto del mensaje).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdkQp9_WTCRrDV8fQuTSGBka9BfnNY2EdfCzU9NQGAQAvqXruZTyye-TEGp1w8NQr-aq-1f0QW0YWkD5wH9D9Sj9Tc9pg4drCAMIZ8YwExtxWLVLz5DxMAnY8FF5sapG1x1XpLD?key=30LNZh35UC4eIWihhlpMcBJd" alt=""><figcaption></figcaption></figure>

12. **Bloque “Pausa”** suspende la ejecución del script durante un tiempo determinado. Para este bloque se especifican las siguientes propiedades:

* Unidad de medida (unidad de medida en la que se especifica la duración de la pausa);
* Duración (valor del intervalo de tiempo en las unidades de medida especificadas);
* Ejecutar inmediatamente (la bandera establecida activa la aplicación de la demora inmediatamente en la primera pasada de este bloque desde el inicio del script del robot).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdDVVa1MB9t37-KMFfEUcRUDXKIycu-MA5v8N0YJEmJ1xqBhGVTAIPFenesGSSpTS1cS1f0RrzAVM2WkZ0fHvLwotVpz4C5NWTlKveKHu6hIaMyGPtLlee9Ofna7_bEpbN9b1AlNw?key=30LNZh35UC4eIWihhlpMcBJd" alt=""><figcaption></figcaption></figure>

13. **Bloque “Fin”** (este bloque finaliza la ejecución del script o devuelve el diagrama del subproceso al proceso principal).


---

# 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.sherparpa.ru/es/sherpa-rpa/sherpa-designer/primery-robotov/telegram-bot.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.
