Demo Github
La comunicación en una cuenta de Twitter es importante, atrae más usuarios, genera expectativa y mantiene a tus seguidores enganchados a tus publicaciones. Una manera interesante de darle dinámica y actividad a tu cuenta de Twitter es haciendo uso de un Bot que haga determinadas tareas sin necesidad que muevas un dedo o el mouse, en este Post te voy a enseñar a crear un Bot para Twitter con Node JS.
Antes de continuar con este Post te recomiendo leer los siguientes artículos:
Con esto estarás familiarizado con Node JS, si ya conoces sobre Node JS, puedes continuar con el Post, no hay problema.
API Twitter
Lo primero que haré es crear una nueva API en Twitter Developers, solo debo seguir los pasos que son sencillos, nada del otro mundo. Tras crear la API se me generan 2 KEYS (Consumer Key, Consumer Secret) y 2 TOKENS (Access Token, Access Token Secret)
Las Keys y Tokens generados al crear la API en Twitter las usaremos mas adelante.
Creación del Bot en Node JS
Bien comenzaré creando un nuevo proyecto en Node JS, abro la consola de comandos en un lugar o en un directorio en donde deseo que se cree el proyecto y ejecuto el siguiente comando
1 2 3 |
npm init |
Tras ejecutar el comando anterior, la consola te va pedir que ingreses los detalles para tu aplicación con Node JS, tras finalizar todo los pasos, me genera un archivo llamado package.json con los siguientes datos:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
{ "name": "bot-twitter", "version": "1.0.0", "description": "Bot para Twitter con Node JS 13.3", "main": "app.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "Nube Colectiva", "license": "MIT" } |
Bien ahora creo un archivo llamado app.js y agrego lo siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
// Paquete Twit const Twit = require('twit'); const T = new Twit({ consumer_key: "TU CONSUMER KEY", // Se Generó cuando creamos la API en Twitter Developers consumer_secret: "TU CONSUMER SECRET", // Se Generó cuando creamos la API en Twitter Developers access_token: "TU ACCESS TOKEN", // Se Generó cuando creamos la API en Twitter Developers access_token_secret: "TU ACCESS TOKEN SECRET", // Se Generó cuando creamos la API en Twitter Developers timeout_ms: 60*20000, // Ejecutar tarea cada 20 segundos strictSSL: true, // Le indico que trabaje los procesos con SSL (Secure Sockets Layer o Capa de Sockets Seguros) }); // Retwittear Tweets que contenga el Hashtag #css const stream = T.stream('statuses/filter', { track: '#css' }); // Registro errores en las solicitudes function responseCallback(err, data, response) { console.log(err); } // Tareas stream.on('tweet', tweet => { // Retweet T.post('statuses/retweet/:id', { id: tweet.id_str }, responseCallback); // Me Gusta T.post('favorites/create', { id: tweet.id_str }, responseCallback); }); |
Puedes ver en el código anterior que explico con Comentarios que es lo que hace ciertas líneas del código.
Ahora al inicio de mi archivo app.js estoy llamando al Paquete Twit, este paquete me permite realizar determinadas tareas en mi cuenta de Twitter haciendo uso la API de Transmisión de Twitter,
1 2 3 4 |
// Paquete Twit const Twit = require('twit'); |
Para instalar el Paquete Twit ejecuto el siguiente comando:
1 2 3 4 5 6 7 |
npm install twit --save + twit@2.2.11 added 51 packages from 62 contributors and audited 66 packages in 8.817s found 0 vulnerabilities |
Luego coloco las 2 KEYS y los 2 TOKENS que se generaron al crear mi API en Twitter Developers
1 2 3 4 5 6 7 8 9 10 |
const T = new Twit({ consumer_key: "TU CONSUMER KEY", // Se Generó cuando creamos la API en Twitter Developers consumer_secret: "TU CONSUMER SECRET", // Se Generó cuando creamos la API en Twitter Developers access_token: "TU ACCESS TOKEN", // Se Generó cuando creamos la API en Twitter Developers access_token_secret: "TU ACCESS TOKEN SECRET", // Se Generó cuando creamos la API en Twitter Developers timeout_ms: 60*20000, // Ejecutar tarea cada 20 segundos strictSSL: true, // Le indico que trabaje los procesos con SSL (Secure Sockets Layer o Capa de Sockets Seguros) }); |
Le indico que busque los Hashtags con el texto #css
1 2 3 4 |
// Retwittear Tweets que contenga el Hashtag #css const stream = T.stream('statuses/filter', { track: '#css' }); |
Por último le asigno 2 tareas a mi Bot, la primera tarea es Retwittear los Tweets que contengan el Hashtag #css y la segunda tarea es darle me gusta (corazón) al Tweet Retwitteado que contenía el Hashtag #css
1 2 3 4 5 6 7 8 9 |
// Tareas stream.on('tweet', tweet => { // Retweet T.post('statuses/retweet/:id', { id: tweet.id_str }, responseCallback); // Me Gusta T.post('favorites/create', { id: tweet.id_str }, responseCallback); }); |
Si necesitas que tu Bot realice otras Tareas puedes revisar la documentación oficial del paquete Twit
Inicio mi aplicación ejecutando el siguiente comando:
1 2 3 |
node app |
Si voy a mi cuenta de Twitter puedo ver que el Bot busca un Tweet que contenga el Hashtag #css y lo Retwittea.
El Bot busca cada 20 segundos (el es el tiempo que le especifique), los Tweets con el Hashtag #css
Conclusión
Con Node JS hemos creado rápidamente un Bot para Twitter haciendo uso de un paquete, en el mundo real es importante hacer uso de librerías, herramientas y paquetes para crear nuestras aplicaciones, esto es parte del Desarrollo de Software Ágil.
Si el paquete no cumple tus expectativas, puedes optar por crear un Bot desde 0 con Node JS, una herramienta que te puede ayudar es Socket IO.
Nota(s)
- No olvides que debemos usar la Tecnología para hacer cosas Buenas por el Mundo.
- Algunos pasos mencionados en este artículo pueden dejar de existir o continuar en el futuro, esto no depende de nosotros si no de los Desarrolladores que dan Soporte a Node JS y a la librería Twit.
Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.