# Cliente de Telegram

Consideremos un ejemplo de un robot que demuestra el trabajo con Telegram como cliente.

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

El proyecto del robot consta de un diagrama y un archivo en formato .mp3. Si se describe paso a paso, este robot funciona de la siguiente manera:

1. Crea una conexión a Telegram.
2. Obtiene la lista de contactos.
3. Exporta la lista de todos los chats.
4. Exporta mensajes del chat grupal.
5. Exporta mensajes del chat con un usuario.
6. Envía un mensaje, envía un archivo.
7. Recibe mensajes. (si en el mensaje hay un archivo, lo guarda, y si solo hay texto, muestra un cuadro de diálogo con ese texto).

**El diagrama 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_4nXeTVSmAA0KSdneA0p4IwD4KhbHRC0X22LYlxiguELSkdY4qAMSC4fXoV8Pb6KPkiGExR8umYok_2XDSfqCVl6Y5w_XlqzxMfAuuG11OwvghKpck6uk8nXPJdvF5_Fi5dYflIl3m1A?key=eIuXXe1wcakZ5HVC8JFqa2bC" alt=""><figcaption></figcaption></figure>

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

1. **Bloque "Inicio"** (desde este bloque comienza cualquier diagrama).
2. **Bloque "Cliente. Crear conexión"** permite crear una conexión a Telegram en forma de cliente. Para este bloque se especifican las siguientes propiedades:

* Nombre de la sesión (nombre de la sesión);
* 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 precisamente esta variable.

**¡Importante!** *Para mantener la autorización es necesario establecer un nombre de sesión único y posteriormente usarlo para la conexión. En el primer inicio se abrirá un formulario de autorización. Para la autorización será necesario ingresar el teléfono, luego el servicio enviará un código que llegará al cliente de Telegram ya conectado (por ejemplo, en el teléfono). Luego, ingrese este código y presione "Autorizar".*

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfEBZsUP-SV1SWUbHcDE-H-1eS6DrFiQB1AbVzKF-F9xrokYEjsoW__6v8JjZautTeswHc0OBcIN4RLz_LtW-GtNH3SnIpKJd7520_jxrpahSh0hNPNbJtuwMZYqTdXb6L9lDqJ?key=eIuXXe1wcakZ5HVC8JFqa2bC" alt=""><figcaption></figcaption></figure>

3. **Bloque "Cliente. Lista de contactos"** devuelve la lista de contactos. Para este bloque se especifica una propiedad "Conexión" (objeto de conexión del cliente. El nombre de la variable en esta propiedad debe coincidir con el nombre de la variable en la propiedad "Conexión", bloque "Cliente. Crear conexión" del grupo Telegram, que se utilizó anteriormente para conectar el cliente de Telegram). Como resultado se obtiene la propiedad "Contactos" (tabla de datos que contiene la lista de contactos. La tabla contiene las siguientes columnas: Id, Nombre de usuario, Nombre, Apellido, Teléfono)

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcFmpytElc8Xy4c6aZA8WYcTNhUVQuXkY40AMS9LGhq2MPBgNlaIlHIK4WmWtbupps65C3AURVM_uFHjtF_AG9A3iLBYcpbmDPGe-UXmabGcQZYqewA4lg7Fo1lBgTaWerAA5w9?key=eIuXXe1wcakZ5HVC8JFqa2bC" alt=""><figcaption></figcaption></figure>

4. **Bloque "Log"** permite registrar mensajes arbitrarios y/o valores de variables durante la ejecución del escenario del robot. Para este bloque se especifica la propiedad "Valor". En las comillas se indica una constante de texto, y el nombre de la variable comienza con el símbolo $. Es decir, registra la variable $Contacts en el log.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdTm9JP5hlelaZkmrQ7vnBEMwFWkyIVyosu8c3FYRFzJvGsKKNfwmszkFm4NZM6dxra4zgB3Qf4djuodwU8qQNHgbxBbEkJjGi5E_4pU_BRPEzcP-WYvw3nHANaqLmdsweLVU3rWg?key=eIuXXe1wcakZ5HVC8JFqa2bC" alt=""><figcaption></figcaption></figure>

5. **Bloque "Cliente. Exportar mensajes"** permite exportar mensajes del chat.

**Nota:** *la exportación de mensajes se realiza desde el último, es decir, de abajo hacia arriba.*

Para este bloque se especifican las siguientes propiedades:

* Conexión (objeto de conexión del cliente. El nombre de la variable en esta propiedad debe coincidir con el nombre de la variable en la propiedad "Conexión", bloque "Cliente. Crear conexión" del grupo Telegram, que se utilizó anteriormente para conectar el cliente de Telegram);
* Destino (objeto de destino. Esta cadena puede contener los siguientes valores: Id del chat, nombre del chat, Id del usuario, combinación "Nombre Apellido" del usuario, valor del Nombre de usuario del usuario, teléfono del usuario);
* Desplazamiento (identificador del mensaje desde el cual comienza la exportación. Por defecto, se establece el valor 0, que indica la carga de mensajes desde el más reciente);
* Cantidad (límite en la cantidad de mensajes exportados a la vez).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXe9-CNn93huf-1vZ7rLAFMHMO2lC649PY2vTt3_6x9nBzVM1JgQevcKnIEWM4mLOFjG6d0NEoyLpL-3ik_2oHn3GGo63WJI1Za8ouJxDAVfWr9tup96rYfyAyVUe4cNgXwy7iNr?key=eIuXXe1wcakZ5HVC8JFqa2bC" alt=""><figcaption></figcaption></figure>

6. **Bloque "Log"** permite registrar mensajes arbitrarios y/o valores de variables durante la ejecución del escenario del robot. Para este bloque se especifica la propiedad "Valor". En las comillas se indica una constante de texto, y el nombre de la variable comienza con el símbolo $. Es decir, registra la variable $Chats en el log.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfQQo3GkoKwgmDd9S5hKt8lAiMlLmcp_RzFLrNaYRdnOjtuYp0t7cA3561AtCZzHnQ54blT1YuY3C6QoGJuAiel0of3IZfRCOMljyf6SgTAZ6A9-gDQiMrWDeneN8CYwvVlPRBeYA?key=eIuXXe1wcakZ5HVC8JFqa2bC" alt=""><figcaption></figcaption></figure>

7. **Bloque "Cliente. Exportar mensajes"** permite exportar mensajes del chat. Para este bloque se especifican las siguientes propiedades:

* Conexión (objeto de conexión del cliente. El nombre de la variable en esta propiedad debe coincidir con el nombre de la variable en la propiedad "Conexión", bloque "Cliente. Crear conexión" del grupo Telegram, que se utilizó anteriormente para conectar el cliente de Telegram);
* Destino (objeto de destino. Esta cadena puede contener los siguientes valores: Id del chat, nombre del chat, Id del usuario, combinación "Nombre Apellido" del usuario, valor del Nombre de usuario del usuario, teléfono del usuario);
* Desplazamiento (identificador del mensaje desde el cual comienza la exportación. Por defecto, se establece el valor 0, que indica la carga de mensajes desde el más reciente);
* Cantidad (límite en la cantidad de mensajes exportados a la vez).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcQj6Lv06tw9iLK88FHkpy5LOeRb-L8Uj8Od1eTZwarIX0BIbuBNENnPPx-4n4pd1sAQ7HZUuq6mQblRdjNH-zXmatKJ7u8rhRd5HDuwIU7iFiTV0iLBunWAMGREPdL-at1_m1A?key=eIuXXe1wcakZ5HVC8JFqa2bC" alt=""><figcaption></figcaption></figure>

8. **Bloque "Log"** permite registrar mensajes arbitrarios y/o valores de variables durante la ejecución del escenario del robot. Para este bloque se especifica la propiedad "Valor". En las comillas se indica una constante de texto, y el nombre de la variable comienza con el símbolo $. Es decir, registra la variable $Messages en el log.

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

9. **Bloque "Cliente. Enviar mensaje"** permite enviar un mensaje de texto. Para este bloque se especifican las siguientes propiedades:

* Conexión (objeto de conexión del cliente. El nombre de la variable en esta propiedad debe coincidir con el nombre de la variable en la propiedad "Conexión", bloque "Cliente. Crear conexión" del grupo Telegram, que se utilizó anteriormente para conectar el cliente de Telegram);\* Destino (objeto de destino. Esta cadena puede contener los siguientes valores: Id del chat, nombre del chat, Id del usuario, combinación "FirstName LastName" del usuario, valor del Username del usuario, teléfono del usuario);
* Permitir importación (la bandera establecida permite intentar importar al usuario en los contactos si no se encuentra. Esta posibilidad está disponible si se establece un número de teléfono registrado en Telegram como "Destino". Solo después de esto se podrá enviar mensajes al usuario a su teléfono);
* Texto (texto del mensaje).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeOoFYEfytgJ4BR1BQroum0nIktd_BYAQiKW55b3l2ZCTvMh5qqQzlusdIMG8b6AOe7Bo4frQL9J77j1W0JfsFE0v1-tXfecj5sshRC8Ljd0_3KGuCsrG7ZimTe8ti3VCDayA8q?key=eIuXXe1wcakZ5HVC8JFqa2bC" alt=""><figcaption></figcaption></figure>

10. **Bloque “Cliente. Enviar archivo”** permite enviar un archivo, en este caso “test.mp3”. Para este bloque se especifican las siguientes propiedades:

* Conexión (objeto de conexión del cliente. El nombre de la variable en esta propiedad debe coincidir con el nombre de la variable en la propiedad "Conexión", del bloque "Cliente. Crear conexión" del grupo Telegram, que se utilizó anteriormente para conectar al cliente de Telegram);
* Destino (objeto de destino. Esta cadena puede contener los siguientes valores: Id del chat, nombre del chat, Id del usuario, combinación "FirstName LastName" del usuario, valor del Username del usuario, teléfono del usuario);
* Nombre del archivo (nombre y ruta del archivo que se enviará).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcDeF2FmKsYLyOQ7bjwAOFqB7QhxPtID-qJFmRoWVlDcs4ofGK9qHnXJyywvkj8zcm1Q9nBmymD_uYtZB2DRmwgqYhuU_YKbt_ETaA5D5Oiq49XzZN6HUOmGM5LQ-RYrrtTH3GD_A?key=eIuXXe1wcakZ5HVC8JFqa2bC" alt=""><figcaption></figcaption></figure>

11. **Bloque “Cliente. Obtener mensaje”** permite obtener un mensaje de la cola. Para este bloque se especifica la propiedad “Conexión” (objeto de conexión del cliente. El nombre de la variable en esta propiedad debe coincidir con el nombre de la variable en la propiedad "Conexión", del bloque "Cliente. Crear conexión" del grupo Telegram, que se utilizó anteriormente para conectar al cliente de Telegram). La salida obtenida es “Mensaje” (se devuelve el objeto mensaje. Propiedades disponibles: Id - id del mensaje; Fecha - fecha; De - de quién es el mensaje; Para - a quién es el mensaje; FromId - Id del usuario de quién es el mensaje; Título - nombre del chat; Texto - texto del mensaje; Tipo - designación textual del tipo de mensaje; IsFile - indica si hay un archivo en el mensaje (aquí se puede definir más precisamente el tipo usando las propiedades IsDocument, IsPhoto). Por ejemplo: $TMessage.IsPhoto - si es igual a $true, entonces hay una foto en el mensaje)

**Nota:** *si no hay mensajes en la cola, se genera un error.*

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfsjRn2XJ3nNtydpuBaJvRNQIOSpiwwpz86-KoATce7IVgRq667HzS-Mo-aOhBsLlMN5ioYrurcCEIvFoynBZvxQawS7Xxi9uPXeON17IYvD9WfN_b-jzVtVKN3sFbT4WpuzgqHBw?key=eIuXXe1wcakZ5HVC8JFqa2bC" 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 establece 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_4nXd9_866ERuDG15RzCLhFGvwAurbzQAI0lzi9APfQxHC5g66TuWRboUb4vLrbDTjM8ZjH2KNMUGWZbhripKqrBoFxXdrV-YsF1gBW-lxGc9GPEIfcx9ORIzoGdTOKV8PlG1x_u6eaQ?key=eIuXXe1wcakZ5HVC8JFqa2bC" alt=""><figcaption></figcaption></figure>

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

La condición se escribe en el formato: “variable” es igual (==)/ mayor (>)/ menor (<) “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, si hay en el texto del mensaje la palabra "stop".

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfetvGdQh1RBAn6_QxmnDu-YVINpLpUETdL-eow5ssPae1kTPCXSeBF8tPVaAJprEsdJbMr_cae656kWQeOcmhS0_Ny6cBJzxBUYRxwYM4tuLyUifBt59Hzi6FYc_AgYyFBVOCFaQ?key=eIuXXe1wcakZ5HVC8JFqa2bC" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdDa91e0EquIwRY1ZntFjdRf5dC-91hn3LUqjacjJ_L3kgQbXERDi2zFdxSW3AViUySJIkMjF6Q-SXQdBuwq7-C6RXfCMz1yfhZBheOSsvXrQK7rZIwM1z0xYAMx7mQrdiCmk0p7A?key=eIuXXe1wcakZ5HVC8JFqa2bC" alt=""><figcaption></figcaption></figure>

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

La condición se escribe en el formato: “variable” es igual (==)/ mayor (>)/ menor (<) “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_4nXcBPBjszGJWlbzTtIY2DzwI2DmLC1pbJaUf89xAsqfdGKq2hXY59IpTo1eKNVZa8XK32A-i8TocRCGtlbknVBzYevfEIc35L7MXo6UB3Lam3orqoGFp8Qmz5IlW2yOKZ_r9myG5wQ?key=eIuXXe1wcakZ5HVC8JFqa2bC" alt=""><figcaption></figcaption></figure>

16. **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 esta propiedad se deja vacía, se tomará la carpeta donde se encuentra el proyecto. Si se especifica una carpeta, se concatenará con el nombre del archivo).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXebWNvbfIE32GYSqXxsRrKU4a1Hdjw3V9Rd5TLyLTeMmupf_W5BduuupvEabnxUsOt2UF1UxCriF0W6nrGmT6W9W-3byWRxctuI9qkIEpyGdyBZD3jzljB7gezFvjS3oHCoM-xRVQ?key=eIuXXe1wcakZ5HVC8JFqa2bC" alt=""><figcaption></figcaption></figure>

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

* Conexión (objeto de conexión del cliente. El nombre de la variable en esta propiedad debe coincidir con el nombre de la variable en la propiedad "Conexión", del bloque "Cliente. Crear conexión" del grupo Telegram, que se utilizó anteriormente para conectar al cliente 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 "Cliente. Obtener mensaje" o del array de la propiedad "Mensajes" del bloque "Cliente. Descargar mensajes" del grupo Telegram);
* Nombre del archivo (nombre y ruta del archivo en el que se guardará el archivo del mensaje).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfPN92M1HrbsqIEV40vw68T092xf361Q3FkF0xT6r7SlUXNMldo_Cm_RTcrLcwmQk8jOhLn1LuWaV5UYpCKddQzuAbjwGDRiDLbl3Bs_NUSS5HF_DM7BRc0rvyUi4h_Nc-ycmrqNA?key=eIuXXe1wcakZ5HVC8JFqa2bC" alt=""><figcaption></figcaption></figure>

18\. \*\*Bloque “Ventana para ingresar texto”\*\* permite mostrar un cuadro de diálogo modal, destinado a obtener información del usuario. Para este bloque se especifican las siguientes propiedades:

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

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeTNB8BIkiHjnSlsNozPvyQsnuO52Eu1o7Guv-p2NE8WhK2sGA7qjIaVklMBSTS-4kKheOJzRsqLu6uLkccUb28dCZmASx_G21mBUY-LSjGuQOWB_XoRfNUqYd7ixldGDxLmtUHhg?key=eIuXXe1wcakZ5HVC8JFqa2bC" alt=""><figcaption></figcaption></figure>

19. **Bloque “Cliente. Enviar mensaje”** permite enviar un mensaje de texto. Para este bloque se especifican las siguientes propiedades:

* Conexión (objeto de conexión del cliente. El nombre de la variable en esta propiedad debe coincidir con el nombre de la variable en la propiedad "Conexión", del bloque "Cliente. Crear conexión" del grupo Telegram, que se utilizó anteriormente para conectar al cliente de Telegram);
* Destino (objeto de destino. Esta cadena puede contener los siguientes valores: Id del chat, nombre del chat, Id del usuario, combinación "FirstName LastName" del usuario, valor del Username del usuario, teléfono del usuario);
* Permitir importación (la bandera establecida permite intentar importar al usuario en los contactos, si no se encuentra. Esta posibilidad está disponible si como “Destino” se establece un número de teléfono que está registrado en Telegram. Solo después de esto se podrá enviar mensajes al usuario a su teléfono);
* Texto (texto del mensaje).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXendbYfPyL-NgLO_bfP99aCrSG6wmZ9QK2wYIcEPTqjGwTfQYJ_uEyLS57dFbYvBktFRPTzBXMOF7GT6sc7z5T84A6oc_LmDikt1iV6_gbNFugs0x7fe5sediX6Clck_mPlE0gB?key=eIuXXe1wcakZ5HVC8JFqa2bC" alt=""><figcaption></figcaption></figure>

20. **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 establece 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 momento de inicio del script del robot).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXftEIQowakugkMdWOm3fC9RPFqtGaG0i1iYH80Wu2ox43IyRNGydqS-iPCcRM7JshtzEehYlGvQo15C--5kSMoAXBPdJEOqeWJIbcCtTS0hRHLLnNAr8ULwklEbda40dsm8MlpJUg?key=eIuXXe1wcakZ5HVC8JFqa2bC" alt=""><figcaption></figcaption></figure>

\
21\. **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-client.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.
