Code Monkey home page Code Monkey logo

simple-hangouts-bot's Introduction

⚠️ This repository is not longer maintained ⚠️

Nodejs-hangouts-robot

Robot de chat para Google hangouts desarrollado con Node.js. Permite el uso de la Terminal/Consola, Twitter, Alchemy Api... entre otras cosas...

foto

IMPORTANTE!

Crea una cuenta de Google separada para el robot. Una vez lo hayas hecho, pincha en este link desde esa cuenta para autorizar el uso de aplicaciones menos seguras.

Configuración

Previo

  • Es necesario que ambos usuarios se acepten via Google Hangouts. Es el primer paso para comunicarse y una manera efectiva de filtrar usuarios.
  • Debes tener Node y NPM instalados en la máquina.

Config.js Toda la configuración se realizará desde el archivo config.js

  • Primer paso es poner la contraseña y usuario de nuestro robot aquí. Igual que si entraras en el email
botEmail: "[email protected]",
botPassword: "PASS"
  • Instalamos las dependencias y ejecutamos
npm install && node index
  • Preguntamos al robot Quien soy? en el chat y respondera con algo parecido a esto
[email protected]/lorem_lorem_123456789
  • Paramos la ejecucción de Node en la terminal con Ctrl+C dos veces.
  • Rellenamos los datos que faltan en la configuración partiendo de la respuesta de antes
usuarioId: "loremloremymaslorem1123",
usuarioAutorizado: "[email protected]",
  • Lanzamos de nuevo el robot node robot y nos saludará automaticamente por el chat Hola de nuevo, Jefe!.

Eventos Automáticos

Las siguientes comunicaciones solo son relevantes a config.usuarioAutorizado, que será quien recibirá los mensajes.

  • Al arrancar la aplicación de Node... el robot saluda Hola de nuevo, Jefe!
  • Al cerrar la aplicación vía Ctrl+C... el robot se despide Me piro! Ya no me quieres como antes...
  • Al terminarse de manera natural la ejecucción... el robot se despide Me piro! Vaciones por fín!
  • Al tener un error inesperado y cerrarse... el robot se despide Me piro! Cierre inesperado...

Capturas

captura_1

captura_2

Manejo de servicios externos:

Twitter y Alchemy pueden ser desactivados/activados desde config.json

Preguntas y respuestas posibles:

Nota: Los acentos e interrogantes del inicio no se han incluido para agilizar la comunicación por chat. Si deseas cambiarlo, solo tienes que reescribir las cadenas de texto en las lineas correspondientes

Por defecto...

  • Si nuestro mensaje no cumple al menos uno de los siguientes casos, por defecto el robot nos respondera No te entiendo... Explicate mejor, Humano!

Ayuda

  • Responde con un listado de ids (preguntas/respuestas) disponibles.
  • Puedes ampliar los detalles (descripción, ejemplo, etc..) de un id en particular enviando ayuda {id}

Hola (Expresión regular)

  • Se dispara cuando nuestro mensaje empieza con la palabra Hola/hola.
  • Responde con Hola Humano! Qué tal?

Quien eres?

  • Responde con Soy un Robot... ayudo a desarrolladores que lo necesitan.

Que version eres?

  • Responde con la versión del del package.json

Quien es tu creador?

  • Responde con la información del autor/es del package.json

Quien soy?

  • Responde con tu ID en formato [email protected] que es lo necesario para configurar el usuarioAutorizado en config.js

hora

  • Responde con la fecha y la hora en formato MM/DD/YYYY, HH:MM:SS AM/PM

Tweet

  • Envia un tweet directamente. Puedes usar #hashtags y @menciones

System info

  • Información del sistema(Kernel, Uptime, etc...) y su uso (Disco duro, memoria, cpu, procesos...)

Echo

  • Devuelve el mensaje.

Alchemy (Estatus)

  • Nos permite saber cuantas llamdas nos quedan a la API de Alchemy.

Alchemy (Reconocimiento Facial)

  • Podemos enviar la URL de una foto y Alchemy relaizará un analisis.
  • Nos devuelve la información sobre lso personajes famosos que aparecen o datos biometricos relevantes si no.

Alchemy (Idioma)

  • Reconoce el idioma de un texto o url.
  • Nos devuelve información relevante sobre el idioma, incluido un enlace a Wikipedia.

Alchemy (sentimiento)

  • Análisis de sentimiento de un texto o url

Alchemy (emociones)

  • Analisis por emociones de un texto o url

Terminal

  • Se dispara cuando nuestro mensaje empieza con la palabra Terminal/terminal.
  • Valida que el ID del usuario que nos pide este comando es realmente el mismo que esta almacenado en config.usuarioId.
  • Si se intentan lanzar comandos de terminal por parte de usuarios no autorizados, el propio robot avisa al config.usuarioAutorizado con los datos del usuario y comando deseado
  • Una vez confirmada la autenticidad, lanza el código por la consola que es el texto despues de "Terminal "
  • Responde con *Respuesta: * o con "Error: " y el texto que saldría por la consola en ambos casos.
  • Se utilizan procesos hijo, lo que permite mantener funcionando el hilo principal aunque ocurrar errores.

Terminal: Ejemplos

  • Ejemplo simple

Usuario: Terminal ps Robot:

Respuesta: 
PID TTY TIME CMD
435 pts/0 00:00:00 bash
449 pts/0 00:00:00 bash
2652 pts/0 00:00:00 node
2711 pts/0 00:00:00 sh
2712 pts/0 00:00:00 ps
  • Concatenando comandos:

Usuario: Terminal node -v && npm -v Robot:

Respuesta: 
v4.4.5 
2.15.5
  • En caso de comandos erroneos

Usuario: Terminal me lo invento Robot:

Error: 
Error: Command failed: /bin/sh -c me lo invento
/bin/sh: 1: me: not found
  • En caso de peticiones por usuarios distintos a config.usuarioAutorizado

Usuario Normal: Terminal echo Hacked! Robot a usuario Normal:

Buen intento.. pero con esas zapatillas no ejecutas comandos!

Robot a config.usuarioAutorizado:

Intento de ejecutar código por parte de [email protected]/lorem_lorem_123456789
Ha solicitado Terminal echo Hacked!

Pendiente

  • Controlar un Arduino desde el Robot

simple-hangouts-bot's People

Contributors

ulisesgascon avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.