Bot de Discord que automatiza la reserva y compra de boletos del sistema de transporte del Instituto Tecnológico de Las Américas (ITLA), pensado para estudiantes que viajan en las mismas rutas y paradas cada semana.
- Te registras con tus credenciales del campus virtual del ITLA.
- Configuras tu horario semanal de rutas (días, paradas, horas de llegada y salida).
- El bot te notifica un día antes de cada clase presencial y te pregunta si deseas comprar los boletos.
- Si confirmas, el bot realiza la reserva y compra automáticamente mediante web scraping y te envía los boletos directamente al chat de Discord.
ITLA-Bus-Bot/
├── app/
│ ├── bot/
│ │ ├── cogs/ # Comandos y eventos del bot (slash commands)
│ │ ├── ui/ # Componentes de interfaz (modals, selects, botones)
│ │ ├── utils/ # Utilidades del bot
│ │ └── bot_discord.py # Punto de entrada del bot de Discord
│ │
│ ├── infrastructure/
│ │ ├── repository/ # Capa de acceso a datos
│ │ ├── scraper/ # Web scraping con Playwright
│ │ ├── database.py # Configuración de la base de datos
│ │ └── models.py # Modelos ORM
│ │
│ ├── schemas/ # Esquemas de validación (Pydantic, etc.)
│ ├── services/ # Lógica de negocio / servicios de la app
│ ├── main.py # Punto de entrada principal de la aplicación
│ └── routes_data.py # Data con las rutas de los buses
│
├── data/ # Almacenamiento local con la base de datos
│
├── .env # Variables de entorno (no se sube al repo)
├── .env.example # Plantilla de variables de entorno
├── .gitignore
├── .python-version
├── README.md
├── pyproject.toml # Configuración del proyecto (UV)
├── ruff.toml # Configuración del linter Ruff
└── uv.lock # Lock file de dependencias
- Python 3.11+
- UV — gestor de proyectos y entornos virtuales
- Un bot de Discord creado en el Discord Developer Portal con los intents necesarios habilitados
git clone https://github.com/tu-usuario/itla-bus-bot.git
cd itla-bus-bot# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"uv syncEsto crea automáticamente el entorno virtual e instala todas las dependencias definidas en
pyproject.toml.
uv run playwright install chromiumCopia el archivo de ejemplo y completa los valores:
cp .env.example .envEdita el archivo .env:
# Token del bot de Discord (obtenido en el Developer Portal)
DISCORD_TOKEN=tu_token_aqui
# Token para encriptar contraseñas (generado con cryptography.fernet)
ENCRYPTION_KEY=el_token_aquiuv run app/main.pyRegistra tu cuenta con las credenciales del campus virtual del ITLA.
- Utilizara los parametros del comando para agregar tu correo y contraseña.
- Las credenciales se almacenan de forma segura para realizar las reservas automáticas.
Configura tu horario de rutas del ITLA por cuatrimestre.
El horario que defines representa los días fijos de la semana (lunes a sábado) en que asistirás presencialmente durante ese cuatrimestre. El bot usará esta configuración para saber cuándo enviarte las notificaciones de compra.
El flujo es el siguiente:
- Modal de cuatrimestre — Ingresa el cuatrimestre en que te encuentras (ej:
2026-1). - Selección de días — Elige qué días de la semana asistirás al ITLA durante ese cuatrimestre (lunes a sábado).
- Configuración por día — Para cada día seleccionado, defines mediante menús desplegables:
Campo Descripción 🕐 Hora de llegada Hora a la que llegarás al ITLA 📍 Parada de recogida Parada donde el bus te recogerá 🕔 Hora de salida Hora a la que saldrás del ITLA
Comando para mostrar el horario de rutas del cuatrimestre actual del ususario campus virtual del ITLA.
Usuario Bot
│ │
├──/register──────────────────► │ Guarda credenciales del campus virtual
│ │
├──/set-schedule───────────────►│ Configura horario del cuatrimestre
│ │
│ (08:00 AM, día anterior) │
│◄── "¿Deseas comprar tus ─────┤ Notificación automática
│ boletos para mañana?" │
│ │
├──── ✅ Sí ───────────────────►│ Realiza reserva y compra con Playwright
│ │
│◄── 🎫 [Boletos adjuntos] ─────┤ Envía los boletos al chat
🕙 Hora de notificación: el bot envía el recordatorio cada mañana a las 08:00 AM, un día antes de cada clase presencial programada en tu horario. Para cambiar la hora, edita el archivo
app/bot/cogs/scheduler_task_cog.py.
| Tecnología | Uso |
|---|---|
| discord.py | Framework del bot de Discord |
| Playwright | Web scraping y automatización del portal ITLA |
| UV | Gestión de entorno y dependencias |
| Python 3.11+ | Lenguaje principal |
Este proyecto está bajo la licencia especificada en el archivo LICENSE.
Desarrollado para facilitar la vida de los estudiantes del ITLA 🎓