Skip to content

Un bot de WhatsApp para utilizar el servicio "Mendotran" de la ciudad de Mendoza.

License

Notifications You must be signed in to change notification settings

Lautauro/mendotran-whatsapp-bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mendotran-whatsapp-bot

Banner del proyecto

Mendotran-whatsapp-bot, como su nombre bien indica, es un bot para WhatsApp el cual nos permite, valiéndose del servicio Mendotran, saber los horarios de una parada de colectivos a través del uso de comandos.

Donde localizar el número de parada

Fuente de la fotografía: "MendoTran: comenzaron a instalar la señalética en algunas paradas" - Diario El Sol Mendoza

Demo de comando micro
Demo de comando parada

Note

Puede omitir la "M" y dejar solo el número de parada.

En el caso que la parada no posea cartel, o el mismo esté vandalizado, el bot puede localizarla usando su ubicación.

Metrotranvía

Con este comando podrá solicitar los horarios de una estación de metrotranvía.

Demo de comando estacion

Note

Este comando admite 3 formas de ser invocado: "estación" (con o sin tilde), "metro" y "metrotranvía".

Guia

Núcleo del bot: udmilla-whatsapp-bot. Librería: whatsapp-web.js

Instalación

1. Clonar el repositorio

git clone https://github.com/Lautauro/mendotran-whatsapp-bot.git
cd mendotran-whatsapp-bot

2. Instalar paquetes

npm i

3. Compilar el proyecto

npm run build

4. Iniciar servidor

npm start

La primera vez que inicie el servidor sucederán dos cosas:

  1. Se generará una base de datos local que servirá para comunicarse con Mendotran.
  2. Tendrá que sincronizar, a través del escaneo de un QR, la cuenta que usará de bot.

¿Cómo funciona?

Gráfica del funcionamiento del bot

Fuentes: smartphone.svg whatsapp-icon.svg server.svg

La primera vez que inicie el bot (como ilustra la imagen de abajo) hará una serie de peticiones al servidor de Mendotran con el fin de generar una base de datos local del mismo, ésta contendrá información sobre los colectivos y paradas de la ciudad de Mendoza. Luego de generarla puede encontrar el archivo en /build/json/mendotran-data.json .

Base de datos mendotran

Así se verá más o menos la estructura de la base de datos:

"stops": {
    "M8845": {
        "id": "1606_62489",
        "position": {
            "lat": "-33.2228834",
            "lon": "-68.8925633"
        },
        "address": "Av. San Martín (Luján de Cuyo, Mendoza)",
        "busList": [
            "701",
            "705",
            "704",
            "708"
        ]
    }
},
"buses": {
    "701": {
        "linea": "701",
        "id": "1606_166733",
        "shortName": "701 UGARTECHE - Bº TIERRA SOL Y LUNA",
        "color": "🟦"
    }
}

Todos esta información será de gran utilidad para el bot a la hora de solicitar los horarios de un colectivo. Si por algún motivo quiere o necesita regenerar este archivo, bastará con iniciar el bot de la siguiente manera:

npm run refresh

Así se creará una nueva base de datos y el archivo viejo será conservado bajo el nombre de mendotran-data.json.old .

Note

En mi experiencia el número de paradas de colectivo que recolecta varía según si se hace un día de semana o un fin de semana. No estoy seguro del porqué de esto pero es necesario que lo mencione.

Parada cercana a tu ubicación

Si se desconoce el número de parada, enviando una ubicación al bot y respondiendo a la misma con alguno de los comandos, el sistema se encargará de buscar la parada más cercana y despachar sus horarios.

Comando "micro" para saber los horarios de UNA línea en específico:

Demo de comando 'micro' usando la ubicación enviada por el usuario

Comando "parada" para mostrar los horarios de TODOS los colectivos de una parada:

Demo de comando 'parada' usando la ubicación enviada por el usuario

Pros y contras

PROS CONTRAS
En caso de tener WhastApp gratis con su compañía de celular, no necesita gastar datos entrando a la app oficial de Mendotran. Usted deberá hostear el bot por su cuenta en un servidor, o bien valerse de uno alojado por otro usuario.
Puede hasta ser más rápido que usar la aplicación oficial. Esto dependerá de la velocidad del servidor y de la experiencia previa del usuario con el uso de bots. Requiere más o menos tiempo habituarse a la lógica de los comandos. Habrá personas que prefieran el uso de una interfaz gráfica de usuario (GUI) antes que una interfaz de texto (TUI).
Si la privacidad le parece un tema importante, en principio ésta forma de usar el servicio debería ser más privada, ya que no es el cliente quien hace las peticiones a Mendotran sino el servidor (Menos riesgo de recolección de datos). Más info en como usa nuestros datos la app oficial aquí. Estás usando WhatsApp, si la privacidad es algo que te concierne probablemente estés en el sitio equivocado. Mendotran afirma en su Play Store que no recolecta datos del usuario, sin embargo se contradice en las políticas de privacidad de su sitio web.
No tiene que tener instalada la aplicación de Mendotran en su celular, lo que es igual a más espacio libre. Necesita saber el número de la parada de colectivos, en el caso contrario puede pedirle al bot que busque la parada más cercana a su ubicación actual. Esto último hace que pierda sentido el punto de usar menos datos, ya que Google Maps haría uso de los mismos.

Lista de comandos

Alias Sintaxis Función Ejemplo
Micro
M
Micro [Línea] [Nº de parada] Obtener los horarios de un colectivo en una parada. Micro 120 M14408
(La "M" es opcional)
Parada
P
Parada [Nº de parada] Obtener todos los horarios de una parada de colectivos. Parada M5707
(La "M" es opcional)
Estación
Metro
Metrotranvía
Estacion [Nombre de la estación] Obtener los horarios de una estación de metrotranvía. Estacion Godoy
Ayuda
Help
?
Ayuda [Comando] Solicitar información sobre el uso de un comando. Ayuda Micro

También existe la alternativa de localizar una parada por cercanía. Tan solo basta con enviar una ubicación, citarla y utilizar alguno de los comandos. Vea el ejemplo.