# Telegram bot CLI

# Introducción

<p class="callout info"><span style="font-weight: 400;">**Versión** 080621.  
</span></p>

<span dir="ltr" role="presentation">Conector CLI de bots de **Telegram®** para usar en [alertas](https://pandorafms.com/manual/en/documentation/pandorafms/management_and_operation/01_alerts "PFMS: Sistema de alertas")</span>[ ](https://pandorafms.com/manual/en/documentation/pandorafms/management_and_operation/01_alerts "PFMS: Sistema de alertas")<span dir="ltr" role="presentation">[de Pandora FMS](https://pandorafms.com/manual/en/documentation/pandorafms/management_and_operation/01_alerts "PFMS: Sistema de alertas").</span>

# Matriz de compatibilidad

- <span dir="ltr" role="presentation">Python versión 3 para el código fuente.</span>
- <span dir="ltr" role="presentation">Linux® x64 para código compilado.</span>
- <span dir="ltr" role="presentation">**Incompatible en sistemas MS Windows®.**  
    </span>

# Prerrequisitos

<span dir="ltr" role="presentation">Los requisitos son los siguientes:</span>

- <span dir="ltr" role="presentation">Una cuenta de Telegram® para crear el *bot*.</span>
- <span dir="ltr" role="presentation">Añadir el *bot* al grupo de noti</span><span dir="ltr" role="presentation">fi</span><span dir="ltr" role="presentation">cación.</span>
- <span dir="ltr" role="presentation">Obtener la **id** del grupo.</span>
- <span dir="ltr" role="presentation">Tener instalado Python versión 3</span> <span dir="ltr" role="presentation">en el PFMS Server con el </span><span dir="ltr" role="presentation">módulo: `request` (solamente para código fuente).</span>

# Configuración

#### <span dir="ltr" role="presentation"><span dir="ltr" role="presentation">Creación del BOT en Telegram</span></span>

<span dir="ltr" role="presentation">Desde una cuenta de Telegram® se debe escribir</span> `<span dir="ltr" role="presentation">/start</span>` <span dir="ltr" role="presentation">al usuario</span> [**<span dir="ltr" role="presentation">BotFather</span>**](https://telegram.me/botfather "BotFather is the one bot to rule them all. Use it to create new bot accounts and manage your existing bots.") <span dir="ltr" role="presentation">para crear un *bot*. </span>

<span dir="ltr" role="presentation">Devolverá una serie de parámetros e instrucciones</span> <span dir="ltr" role="presentation">disponibles para la </span><span dir="ltr" role="presentation">creación y manipulación de *bots*:</span>

[![image-1626693442412.png](https://pandorafms.com/guides/public/uploads/images/gallery/2021-07/scaled-1680-/image-1626693442412.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-07/image-1626693442412.png)

<span dir="ltr" role="presentation"><span dir="ltr" role="presentation">Utilizar la opción</span> `<span dir="ltr" role="presentation">/newbot</span>` para crear<span dir="ltr" role="presentation"> un nuevo *bot*.</span></span>

<span dir="ltr" role="presentation"><span dir="ltr" role="presentation">Preguntará el nombre, para este caso</span><span dir="ltr" role="presentation"> </span><span dir="ltr" role="presentation">`Pandora_FMS_Test_bot` ,</span> <span dir="ltr" role="presentation">se puede utilizar el nombre que</span> se <span dir="ltr" role="presentation">pre</span><span dir="ltr" role="presentation">fi</span><span dir="ltr" role="presentation">era</span></span><span dir="ltr" role="presentation" style="left: 613.166px; top: 1257.61px; font-size: 18.3333px; font-family: sans-serif; transform: scaleX(1.03875);">.  
</span>

<span dir="ltr" role="presentation"><span dir="ltr" role="presentation">Ahora pedirá un **id** de usuario para el bot, este</span> <span dir="ltr" role="presentation">tiene que terminar en `_bot`. En este caso se </span><span dir="ltr" role="presentation">utiliza el mismo anterior:</span> `<span dir="ltr" role="presentation">Pandora_FMS_Test_bot</span>`.</span>

<span dir="ltr" role="presentation"><span dir="ltr" role="presentation">Ahora devolverá la información de nuestro *bot*</span> <span dir="ltr" role="presentation">y algunas instrucciones para su </span><span dir="ltr" role="presentation">administración, se debe copiar y guardar</span> <span dir="ltr" role="presentation">el API token que es con el que nos </span><span dir="ltr" role="presentation">autenticaremos como ese *bot*</span>.</span>

[![image-1629719317095.png](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/image-1629719317095.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/image-1629719317095.png)

<span dir="ltr" role="presentation"> </span>

#### <span dir="ltr" role="presentation">Crear un grupo y añadir el bot</span>

  
<span dir="ltr" role="presentation">Para crear un grupo desde Telegram se debe </span><span dir="ltr" role="presentation">hacer clic en crear grupo y </span><span dir="ltr" role="presentation"><span dir="ltr" role="presentation">seleccionar los usuarios que estarán en ese grupo. **Es importante que uno de esos usuarios** </span></span><span dir="ltr" role="presentation">**<span dir="ltr" role="presentation">sea nuestro bot para poder enviar mensajes a ese grupo</span> <span dir="ltr" role="presentation">especí</span><span dir="ltr" role="presentation">fi</span>**<span dir="ltr" role="presentation">**co**.</span></span>

<p class="callout info"><span dir="ltr" role="presentation"><span dir="ltr" role="presentation">También se puede </span></span><span dir="ltr" role="presentation"><span dir="ltr" role="presentation">simplemente añadir el *bot* a un grupo existente</span></span><span dir="ltr" role="presentation">.  
</span></p>

#### [![image-1626695074691.png](https://pandorafms.com/guides/public/uploads/images/gallery/2021-07/scaled-1680-/image-1626695074691.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-07/image-1626695074691.png)

#### <span dir="ltr" role="presentation">Obtener la id del grupo para enviar mensajes desde</span> <span dir="ltr" role="presentation">el CLI</span>

<span dir="ltr" role="presentation"><span dir="ltr" role="presentation">Ahora se necesita obtener la **id** del grupo en el que</span> <span dir="ltr" role="presentation">hemos añadido nuestro *bot*, hay </span><span dir="ltr" role="presentation">diferentes formas de hacerlo. Una de las más sencillas</span> <span dir="ltr" role="presentation">es añadir otro *bot* que extrae esa </span><span dir="ltr" role="presentation">información muy fácilmente</span> [**<span dir="ltr" role="presentation">GetIDs Bot</span>**](https://t.me/getidsbot "This bot gives you telegram-internal information about messages")<span dir="ltr" role="presentation">.</span></span>

<span dir="ltr" role="presentation"><span dir="ltr" role="presentation">Lo añadimos al grupo que queremos conocer el **id** y</span> <span dir="ltr" role="presentation">dará una serie de instrucciones </span><span dir="ltr" role="presentation">para su uso. Solamente con añadirlo ya proporciona la</span> <span dir="ltr" role="presentation">información que necesitamos (</span><span dir="ltr" role="presentation">**id** del grupo).</span></span>

[![image-1629719396585.png](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/image-1629719396585.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/image-1629719396585.png)

<span dir="ltr" role="presentation"><span dir="ltr" role="presentation">Una vez tengamos la id del grupo lo copiamos y guardamos.</span></span>

<p class="callout info"><span dir="ltr" role="presentation"><span dir="ltr" role="presentation">Podemos eliminar este [**GetIDs Bot**](https://t.me/getidsbot "This bot gives you telegram-internal information about messages") del </span><span dir="ltr" role="presentation">grupo porque ya ha cumplido el objetivo de darnos</span> <span dir="ltr" role="presentation">el id.</span></span></p>

#### <span dir="ltr" role="presentation"><span dir="ltr" role="presentation"><span dir="ltr" role="presentation">Con</span><span dir="ltr" role="presentation">fi</span><span dir="ltr" role="presentation">gurar Pandora-Telegram CLI</span></span></span>

<span dir="ltr" role="presentation"><span dir="ltr" role="presentation"><span dir="ltr" role="presentation">  
</span></span></span><span dir="ltr" role="presentation"><span dir="ltr" role="presentation"><span dir="ltr" role="presentation"><span dir="ltr" role="presentation">Para usar el Pandora Telegram CLI (source code) se debe </span></span></span></span><span dir="ltr" role="presentation"><span dir="ltr" role="presentation"><span dir="ltr" role="presentation"><span dir="ltr" role="presentation">tener instalado Python versión 3 y Pip versión 3 </span><span dir="ltr" role="presentation">para las dependencias. </span><span dir="ltr" role="presentation">Para instalar las dependencias, en el paquete a descargar</span><span dir="ltr" role="presentation"> verá el </span><span dir="ltr" role="presentation">fi</span><span dir="ltr" role="presentation">chero </span><span dir="ltr" role="presentation">`requirements.txt`, nos posicionamos en su directorio</span> <span dir="ltr" role="presentation">y ejecutamos:</span></span></span></span>

```
pip3 install -r requirements.txt
```

<span dir="ltr" role="presentation">Esto descargará e instalará las dependencias necesarias.</span>

<span dir="ltr" role="presentation">Una vez instaladas las dependencias ejecutamos el</span> <span dir="ltr" role="presentation">fi</span><span dir="ltr" role="presentation">chero `pandora-telegram-cli.py -h` con </span><span dir="ltr" role="presentation">el intérprete de Python para ver su ayuda:</span>

```
python3 pandora-telegram-cli.py -h
usage: pandora-telegram-cli.py [-h] -m MESSAGE -t TOKEN -c CHAT_ID
Bot telegram cli
optional arguments:
-h, --help show this help message and exit
-m MESSAGE, --message MESSAGE
Message to be send
-t TOKEN, --token TOKEN
Bot token
-c CHAT_ID, --chat_id CHAT_ID
chat id to send messages
```

<p class="callout success"><span dir="ltr" role="presentation"><span dir="ltr" role="presentation">Si vemos la ayuda sin error alguno pues ya estamos listos</span> <span dir="ltr" role="presentation">para usarlo.</span></span></p>

# Parámetros generales del plugin

```
# [Optional parameter]
python pandora-telegram-cli.py \ 
  -t <bot_token> \ 
  -c <chat_id> \ 
  -m <MESSAGE> \ 
  [ --api_conf <API_CONF> ] \ 
  [ --module_graph <MODULE_GRAPH> ] \ 
  [ --tmp_dir <TMP_DIR> ]
```

[![image-1626777891772.png](https://pandorafms.com/guides/public/uploads/images/gallery/2021-07/scaled-1680-/image-1626777891772.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-07/image-1626777891772.png)

<span dir="ltr">Si las credenciales son correctas nos devolverá en </span><span dir="ltr">formato JSON la información del mensaje </span><span dir="ltr">que acabamos de enviar, que podremos ver recibido en </span><span dir="ltr">nuestro grupo de Telegram:</span>

[![image-1626778321184.png](https://pandorafms.com/guides/public/uploads/images/gallery/2021-07/scaled-1680-/image-1626778321184.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-07/image-1626778321184.png)

# Uso en Pandora FMS

<p class="callout info"><span dir="ltr">El *plugin* Telegram® viene plenamente integrado en Pandora FMS versión 800.</span></p>

<span dir="ltr">El *script* por defecto está ubicado en:</span><span dir="ltr"> </span><span dir="ltr">`/usr/share/pandora_server/util/pandora-telegram-cli.py`.</span><span dir="ltr"> No obstante se </span><span dir="ltr">puede usar cualquier ubicación </span><span dir="ltr">siempre que el PFMS Server tenga acceso a </span><span dir="ltr">esta.</span>

<span dir="ltr">**Se debe asegurar de que se tienen todas las dependencias instaladas**, p</span><span dir="ltr">ara comprobarlo se ejecuta</span><span dir="ltr">:</span>

```
python3 pandora-telegram-cli.py
```

Se obtendrá una respuesta similar a esta:

[![image-1626779978941.png](https://pandorafms.com/guides/public/uploads/images/gallery/2021-07/scaled-1680-/image-1626779978941.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-07/image-1626779978941.png)

<span dir="ltr">En caso de tener algún error se deberán reinstalar las dependencias:</span>

```bash
pip3 install -r requirements.txt
```

#### <span dir="ltr">Comando de alerta Telegram</span>

<span dir="ltr">Teniendo el *plugin* en el servidor y funcionando correctamente, </span><span dir="ltr">ahora tenemos que </span><span dir="ltr">configurarlo en la Consola web de Pandora FMS. </span><span dir="ltr">Una vez accedemos como usuario administrador (o con permisos </span><span dir="ltr">de gestión de alertas) se</span> verifica la instalación del comando de alerta Telegram en el menú **Management → Alerts→Commands**. En **Filter** introduzca la clave de búsqueda:

[![pfms-telegram-integration-140.png](https://pandorafms.com/guides/public/uploads/images/gallery/2026-01/scaled-1680-/pfms-telegram-integration-140.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2026-01/pfms-telegram-integration-140.png)

Este comando carece de acciones de edición y borrado por lo que se considera de solamente lectura, utilizado por el sistema. Por ello deberá ir a la configuración general para grabar el *token* obtenido en el tema anterior.

Menú **Managements → Settings → System settings → General setup → Alerts configuration**:

[![pfms-telegram-integration-142.png](https://pandorafms.com/guides/public/uploads/images/gallery/2026-01/scaled-1680-/pfms-telegram-integration-142.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2026-01/pfms-telegram-integration-142.png)

<p class="callout warning">El campo muestra en *texto plano* el *token*, tómese las precauciones del caso antes visualizaciones por terceros del mismo.</p>

Al finalizar pulse el botón **Update** para guardar el *token* de Telegram en la base de datos.

#### Acción de alerta Telegram

Vaya al menú **Management→ Alerts→ Actions** y en **Filter** elija **Pandora Telegram** en el campo **Command**. Serán mostradas las acciones de alerta que utilizan el comando **Pandora Telegram**:

[![pfms-telegram-integration-144.png](https://pandorafms.com/guides/public/uploads/images/gallery/2026-01/scaled-1680-/pfms-telegram-integration-144.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2026-01/pfms-telegram-integration-144.png)

Bien puede:

- Utilizar la acción que viene por defecto al instalar Pandora FMS.
- Copiar la acción anterior y personalizar según necesidades. Puede darse el caso de que varios grupos de agentes utilicen distintas acciones de alerta configuradas según cada caso.
- Crear una acción basada en el comando de alerta (de solo lectura) Telegram.

<p class="callout info">Para cualquiera de los tres casos **siempre** se deberá configurar el **Chat ID**, obtenido según se indica en [tema anterior](https://pandorafms.com/guides/public/books/telegram-bot-cli/page/configuracion).</p>

Sea edición, copia y edición o creación, el proceso de configuración es similar:

[![pfms-telegram-integration-146.png](https://pandorafms.com/guides/public/uploads/images/gallery/2026-01/scaled-1680-/pfms-telegram-integration-146.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2026-01/pfms-telegram-integration-146.png)

- En nombre y grupo indique y elija según el caso.
- Asegúrese que en la lista **Command** esté seleccionado **Pandora Telegram**.
- En **Chat ID** introduzca el identificador correspondiente. *Este campo no acepta macros, solamente introduzca dicho identificador.*
- En el campo **Message** para **Triggering**, si está vacío, inserte `[PANDORA] Alert FIRED on _agent_ / _module_ / _timestamp_ / _data_` . Consulte las demás [macros disponibles](https://pandorafms.com/manual/es/documentation/pandorafms/management_and_operation/01_alerts#ks15) para insertar más información.
- En el campo **Message** para **Recovery**, si está vacío, inserte `[PANDORA] Alert RECOVERED on _agent_ / _module_ / _timestamp_ / _data_` . Consulte las demás [macros disponibles](https://pandorafms.com/manual/es/documentation/pandorafms/management_and_operation/01_alerts#ks15) para insertar más información.
- Presione el botón **Create** si es está creando una acción de alerta o( **Update** si se está editando) para guardar los parámetros.

Haga clic en **Create**. Una vez haya creado esta acción de alerta, esta puede ser incluida en [una política](https://pandorafms.com/manual/es/documentation/pandorafms/complex_environments_and_optimization/02_policy "PFMS: Políticas de monitorización"), [una plantilla](https://pandorafms.com/manual/es/documentation/pandorafms/technical_annexes/34_pfms_templates_policies_massives "PFMS: Diferencias entre Plantillas, Políticas y Operaciones Masivas") o [Módulo](https://pandorafms.com/manual/es/documentation/pandorafms/management_and_operation/01_alerts#ks5_2 "PFMS: Gestionar alertas desde el agente").

<p class="callout info">Si se requiere información adicional visite la [documentación del *plugin*](https://pandorafms.com/library/telegram-bot-cli/).</p>