README.md
junto con esta historia para guardar cualquier confusión.
Los bots de Twitter pueden hacer mucho más que solo hashtags de tendencias de spam y seguir a los usuarios sin descanso.
Tome el bot de alertas Twisst ISS, que le envía un mensaje directo cada vez que la estación espacial internacional (ISS) estará visible en su ubicación.
O bots de servicio público como Earthquake Robot, que tuitea sobre cualquier terremoto mayor de 5.0 en la escala de Richter mientras ocurre.
Y, por supuesto, un robot que tuitea poesía, poem.exe, junto con uno que retuiteará tus tuits que también resultan ser un Haiku accidental.
Personalmente, uso un bot para mejorar mi cuenta de @ScottDevTweets al dar me gusta y volver a tuitear los temas que me interesan.
El desafío de la comunidad # 100DaysOfCode lo felicitará por comenzar el desafío # 100DaysOfCode, y nuevamente cuando alcance hitos específicos.

También responderá con ánimo si detecta un sentimiento negativo (frustración) en un tweet que tiene el hashtag # 100DaysOfCode.

Una pregunta que me hacen con bastante frecuencia en las entrevistas de trabajo es "¿qué obtienes al trabajar con la tecnología?" Siempre respondo que “me gusta automatizar tareas repetitivas para ahorrarme tiempo y poder concentrarme en otras cosas. Me gusta la sensación de logro que conlleva haberme ahorrado algo de tiempo ".
En el caso de mi bot @ScottDevTweets, suele ser un punto de partida para una conversación con otra persona que me sigue. Para que el bot pueda iniciar la conversación, luego yo puedo continuar desde donde la dejó.
Teniendo esto en cuenta, un bot es tan ético como la persona que lo programó.
Si tiene alguna duda sobre la ética del bot que está creando, consulte la sección de ética de botwiki.
Entonces, ¿listo para empezar? OKAY. ¡Hagámoslo!
Cómo construir un bot de Twitter en 30 minutos
Vas a utilizar la twit
biblioteca para crear un bot de Twitter. Le gustará y volverá a tuitear lo que especifiques. También responderá a sus seguidores con una selección de respuestas enlatadas.
Antes de poner en marcha el reloj, deberá configurar algunas cuentas si aún no las tiene.
Lo que necesitarás
- Gorjeo
- IDE de Cloud9
- Heroku
Paso # 1: Configura una aplicación de Twitter
Cree una nueva cuenta de Twitter o utilice la suya propia para crear una nueva aplicación de Twitter.
Como ejemplo, configuraré mi antigua cuenta de Twitter @DroidScott para que puedas seguirme.
Asegúrese de agregar su número de teléfono a su cuenta de Twitter antes de hacer clic en el botón Crear su aplicación de Twitter .

Ahora debería estar en la sección 'Administración de aplicaciones', donde deberá tomar nota de sus claves. Debería tener su 'Clave de consumidor (clave de API)' y 'Secreto de consumidor (secreto de API)' ya disponibles.
Deberá desplazarse hasta la parte inferior de la página y hacer clic en Crear mi token de acceso para obtener el 'Token de acceso' y el 'Token de acceso secreto'. Tome nota de los cuatro que los necesitará al configurar el bot.
Paso 2: configura tu entorno de desarrollo
Para esto, solo voy a decir que use Cloud9, ya que puede estar listo y funcionando en minutos con uno de los entornos Node.js prefabricados.
Tenga en cuenta que si elige usar Heroku y / o Cloud9 IDE para crear esto (como lo hago yo en esta guía) en algunas regiones, se le pedirá que proporcione un número de tarjeta de crédito para crear estas cuentas.

Configurar el bot
En el árbol del proyecto borrar los archivos del proyecto de ejemplo client
, package.json
, README.md
y server.js
que no los necesita, puede dejarlos allí si lo desea.
En su nuevo entorno Node.js c9, vaya a la terminal e ingrese:
git clone //github.com/spences10/twitter-bot-bootstrap
Estructura del proyecto
El árbol del proyecto de entorno debería verse así:

Dependencias de nodo
Antes de configurar el bot, necesitaremos instalar las dependencias, cd en la carpeta del proyecto con cd tw*
esto lo moverá :~/workspace/twitter-bot-bootstrap (master) $
desde la terminal ingrese:
npm install
Esto instalará todas las dependencias enumeradas en el package.json
archivo.
Si obtiene algún error, le sugiero que instale las dependencias una por una desde el package.json
archivo con el mismo comando y el nombre del paquete al final:
Aquí hay un ejemplo del dependencies
en el package,json
archivo:
"dependencies": { "dotenv": "^4.0.0", "twit": "^2.2.5", "unique-random-array": "^1.0.0", "unirest": "^0.5.1" }
El comando npm para instalarlos todos:
npm install --save dotenv twit unique-random-array unirest
Si recibe algún WARN
mensaje como npm WARN package.json [email protected] No repository field
este, el bot no romperá, por lo que es seguro ignorarlo.
Ahora puedes configurar el bot. Desde la terminal ingrese:
npm init
Esto configurará el package.json
archivo con sus datos como desee. Sigue pulsando retorno si estás satisfecho con los valores predeterminados.
Ahora deberá agregar sus claves de Twitter al .env
archivo. Simplemente ingrese las claves en sus campos correspondientes y guarde el archivo.
If you can not find the .env
file in the file structure of your c9 project then you will need to enable the Show Hidden Files
option. In the file view select the settings cog then tick the Show Hidden Files
option if it is not already checked.

The SENTIMENT_KEY
you can get a new API key at //market.mashape.com/vivekn/sentiment-3 your key is in the REQUEST EXAMPLE
Take a look at the gif, click the link, sign up for or sign into mashape
, click on node
in the right hand panel and select out your API key, it will be in the space highlighted

Add your API key to the .env
file along with your Twitter API keys ?
Here you should add your Twitter account name, and how often you want the bot to run the retweet and favorite functions in minutes.
NOTE none of the .env
items have quotes ''
round them.CONSUMER_KEY=Fw***********P9CONSUMER_SECRET=TD************CqACCESS_TOKEN=31**************UCACCESS_TOKEN_SECRET=r0************S2SENTIMENT_KEY=Gj************lFTWITTER_USERNAME=DroidScottTWITTER_RETWEET_RATE=5TWITTER_FAVORITE_RATE=5
You can then add some keywords into the strings.js
file for what you want to search for as well as sub-queries.

When adding sub-query strings make sure you leave a space at the beginning of the string so ' handy tip'
gets concatenated onto 'node.js'
as node.js handy tip
and not node.jshandy tip
.
That should be it, go to the terminal and enter npm start
you should get some output:

Check the Twitter account:

Step #3: Setting up Heroku
Cool, now we have a bot that we can test on our dev environment but we can’t leave it there, we’ll need to deploy it to Heroku.
If you haven’t done so already set up a Heroku account then select Create a new app from the dropdown box top right of your dashboard, in the next screen name the app it if you want, then click Create App.

You’ll be presented with your app dashboard and instructions for the deployment method.

Your app name should be displayed on the top of your dashboard, you’ll need this when logging in with the Heroku command line interface, which we’ll use to deploy your app.

Heroku CLI
We’re going to deploy initially via the Heroku Command Line Interface (CLI).
On your c9 environment terminal, log into Heroku [it should be installed by default]
heroku login
Enter your credentials:
cd twitter-bot-bootstrap git init heroku git:remote -a your-heroku-app-name
Deploy your application:
git add . git commit -am 'make it better' git push heroku master
You should get build output in the terminal:

Then check the output with:
heroku logs -t
All good? Cool! ?
Configuring Heroku variables
Now that we have our bot on Heroku we need to add environment variables to store our Twitter keys. This is because the .env
file where we stored our keys is listed in the .gitignore
file, which tells git not to upload that file to Heroku. It also makes it so if in the future we want to add our code to GitHub we don't have to worry about the .env
file making our keys public, because the file will automatically be ignored.
All you need to do is go to the console of your Heroku app and select the ‘Settings’ sections and add in your Twitter keys from the .env
file. Click the 'Reveal Config Vars' button and add in the variables with their corresponding values:
CONSUMER_KEYCONSUMER_SECRETACCESS_TOKENACCESS_TOKEN_SECRETSENTIMENT_KEY
Once you have the Heroku vars set up, take a look at the config.js
file of this project. You are going to delete this line:
require('dotenv').config();
You’re now ready to deploy to Heroku again. Your console commands should look something like this:
$ git add .$ git commit -m 'add environment variables'$ git push heroku master
Then you can check the Heroku logs again with:
$ heroku logs -t
You should now have a bot you can leave to do its thing forever more, or until you decide you want to change the search criteria ?
Heroku deployment via GitHub
You can also deploy your app by connecting to GitHub and deploy automatically to Heroku each time your master branch is updated on GitHub, this is straight forward enough.
Go to the ‘Deploy’ dashboard on Heroku, select GitHub as the deployment method if you have connected your GitHub account to your Heroku account then you can search for the repository so if you forked this repo then you can just enter twitter-bot-bootstrap
and Search you can then click the Connect button, you can then auto deploy from GitHub.

Heroku troubleshooting
What do you mean it crashed!?

Ok, I found that sometimes the worker
is set as web
and it crashes out, try setting the worker
again with:
heroku ps:scale worker=0 heroku ps:scale worker=1
If that still crashes out then try setting the Resources
on the Heroku dashboard, I found if you toggle between the web
, heroku
and worker
it usually settles down. Basically you need to be set to the worker
Dyno this is what causes the Error R10 (Boot timeout)
crashes because it's trying to use one of the other resources when it should be using the worker
Dyno.

Other useful Heroku commands I use:
heroku restart
By default you can only push your master branch if you are working on a development branch i.e. dev
branch. If you want to test on Heroku, then you can use:
git push heroku dev:master
Handy tip
If you want to add this to your own GitHub repo and don’t want to share your API keys ? with the world then you should turn off tracking on the .env
file. From the terminal enter this git command:
$ git update-index --assume-unchanged .env
I have added my most used git command I use in this gist
Wrapping up
Your Twitter bot should now be live. You can tinker with it and further configure it.
Here’s my repository if you’d like to fork it and contribute back using pull requests. Any contributions large or small — major features, bug-fixes, integration tests — are welcome, but will be thoroughly reviewed and discussed.
Acknowledgements
Credit for the inspiration for this should go to @amanhimself and his posts on creating your own twitter bot.
create-a-simple-twitter-bot-with-node-js
how-to-make-a-twitter-bot-with-nodejs
twitter-mctwitbot
awesome-twitter-bots
Other posts detailing useful Twitter bots.
www.brit.co/twitter-bots-to-follow
www.hongkiat.com/using-twitter-bots
Made it this far? Wow, thanks for reading! If you liked this story, please don’t forget to recommend it by clicking the ❤ button on the side, and by sharing it with your friends through social media.
If you want to learn more about me, visit my blog, my Github, or tweet me @ScottDevTweets.
You can read other articles like this on my blog.