renfe-bot

June 21, 2025 · View on GitHub

CI Nightly Tests Python Version from PEP 621 TOML codecov license

Versión de Python soportadaPlataformas soportadas
Python >= 3.12Linux macOS Windows

You can also read this in English

Descripción

Renfe-bot es un bot de Telegram diseñado para ayudar a los usuarios a comprar billetes de tren de Renfe, el principal operador ferroviario de España. El bot monitoriza la disponibilidad especialmente en situaciones en las que los billetes se agotan y sólo se pueden comprar cuando alguien cancela su reserva, y avisa rápidamente a los usuarios cuando hay billetes disponibles. El bot ahora es compatible con una interfaz de chatbot de Telegram para mejorar la interacción con el usuario.

Nuevo en la versión v0.3.0: Ahora el paquete incluye una interfaz de línea de ocmandos ligera (CLI) para hacer búsquedas rápidas directamente desde la consola, perfecta para hacer scripting.

La gestión de errores no es perfecta, por lo que si te encuentras con algún problema, reintentar el comando debería funcionar. Si el problema persiste, abre una incidencia en GitHub.

Como utilizar

Opción 1: correr el programa localmente en tu ordenador

Requisitos

Este proyecto requiere al menos Python 3.12, y funciona en macOS, Linux y Windows.

Instalación

Sigue los siguientes pasos para instalar y configurar Renfe-bot:

Clona este repositorio en tu máquina local

git clone git@github.com:emartinez-dev/renfe-bot.git

Instala las dependencias necesarias utilizando el siguiente comando

pip install -r requirements.txt

Ejecuta el bot con este comando

PYTHONPATH=src/ python src/bot.py

o este otro si estás en la terminal de Windows ``bash setx PYTHONPATH src/ python src/bot.py


Todo lo que sea necesario, como la clave API, se te pedirá cuando ejecutes el bot por primera vez.


### Opción B: Correrlo en local como un contenedor de Docker

#### Requisitos

Para ejecutar esto en Docker, sólo necesitará tener una instalación válida de Docker,
todo lo demás se proporciona en el Dockerfile.

#### Instalación

Primero necesitas construir la imagen, hazlo con el siguiente comando:

```bash
docker build -t renfe-bot .

Cuando la imagen termine el build, ya se puede ejecutar con el siguiente comando:

docker run -it -v $(pwd):/app renfe-bot

O si usas Windows:

docker run -it -v %cd%:/app renfe-bot

Opción C: Usando la interfaz de línea de comandos (CLI)

La CLI es la manera más rápida de buscar trenes, directamente desde la terminal.

Inicio rápido

Una vez instaladas las dependencias (ver Opción A – Instalación), puedes lanzar el programa con la siguiente sintaxis:

PYTHONPATH=./src python src/cli.py -o <ORIGIN> -d <DESTINATION> --departure_date DD/MM/YYYY

Ejemplo:

PYTHONPATH=./src python src/cli.py -o Madrid -d Barcelona --departure_date 21/06/2025

El programa imprime una tabla como esta:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃          Trains from Madrid to Barcelona – 21/06/2025        ┃
┡━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━┯━━━━━━━━━┯━━━━━━━┩
│ Train type   │ Departure    │ Arrival      │ Duration │ Price │
├──────────────┼──────────────┼──────────────┼─────────┼───────┤
│ AVE          │ 06:30        │ 08:59        │ 2.5 h.   │ 46.90€│
│ AVE          │ 07:30        │ 10:05        │ 2.6 h.   │ 38.15€│ ← cheaper‑than‑avg highlighted in green
└──────────────┴──────────────┴──────────────┴─────────┴───────┘

Parámetros

  • -o, --origin (obligatorio) – Estación de origen.
  • -d, --destination (obligatorio) – Estación de destino.
  • --departure_date (obligatorio) – Fecha de salida en formato DD/MM/YYYY.

Uso

Bot

Para utilizar el bot, envía un mensaje a tu bot en Telegram. Tienes que proporcionar datos como las estaciones de origen y destino, y las fechas. El bot monitorizará la disponibilidad de billetes y te notificará inmediatamente cuando haya un billete disponible para tu viaje.

CLI

See Option C above.

Contribución

Este proyecto es de código abierto y las contribuciones son más que bienvenidas. Si quieres contribuir al proyecto, siga estos pasos:

  1. Fork el repositorio.
  2. Crea una nueva rama para tus cambios.
  3. Realice sus cambios.
  4. Pushea los cambios al fork.
  5. Envía una pull request con una descripción de los cambios.

Antes de fusionarlos, todos los cambios se probarán para garantizar que funcionan correctamente. Las contribuciones no se limitan a cambios en el código, cualquier sugerencia o feedback son igualmente valiosas.

Licencia

Este proyecto está licenciado bajo los términos de la MIT License.

La Licencia MIT es una licencia permisiva que permite la reutilización de software dentro de software propietario siempre que todas las copias del software licenciado incluyan una copia de los términos de la Licencia MIT y el aviso de copyright.

Esto significa que usted es libre de utilizar, copiar, modificar, fusionar, publicar, distribuir sublicenciar y/o vender copias del software, siempre que incluya la atribución atribución necesaria y proporcione una copia de la licencia MIT.

Puede consultar el texto completo de la licencia en el archivo LICENSE.