peiche / capnsparrowbot

Twitter bot to correct people when they talk about Jack Sparrow but woefully fail to mention that he's a captain.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Twitter bot bootstrap

Greenkeeper badge Standard - JavaScript Style Guide license Chat

Click to expand TOC

Since doing this initial guide I have discovered the awesomeness of Zeit's now, the master branch of this project will now use now for deployment, if you want to use Heroku you can refer to the deploy with Heroku branch πŸ‘.

This is a bootstrap for setting up a simple Twitter bot with Node.js using the twit module. The bot will retweet what you specify when configuring it. It will also reply to followers with a selection of canned responses.

As a primer for this, there is a great post by @amanhimself on making your own twitter bot. This is an expansion on that with further detail on configuration and deployment with now.

Before starting the clock you'll need to set up some accounts if you don't have them already.

What you'll need

  • Twitter account
  • Development environment with Node.js and npm
  • Zeit account

Setup twitter

Set up an application on the Twitter account you want to retweet from via: https://apps.twitter.com/app/new

As an example, I'll configure the old @DroidScott twitter account I have so you can follow along.

Straight forward enough for the twitter application, make sure you add your phone number to your Twitter account before clicking the Create your Twitter application button.

You should now be in the 'Application Management' section where you will need to take note of your keys. You should have your 'Consumer Key (API Key)' and 'Consumer Secret (API Secret)' already available. You'll need to scroll to the bottom of the page and click the Create my access token to get the 'Access Token' and 'Access Token Secret' take note of all four of them as you'll need them when setting up the bot.

Setup development environment

If you don't already have a dev environment with node installed then for a quick-start I'd suggest using Cloud9 you can be up and running in minutes with one of the pre made Node.js environments.

Note that in some regions you will be prompted to enter credit card information to use Cloud9 you will not be charged, there are other options to use like Glitch if you don't have a credit card. For this guide I'm going to be using Cloud9 which is what will be in the images.

Set up the bot

In the project tree delete the example project files of client, node_modules, package.json, README.md and server.js. You won't need them, but you can leave them there if you so desire.

In your new Node.js c9 environment go to the terminal and enter:

git clone https://github.com/spences10/twitter-bot-bootstrap

Project structure

The environment project tree will look something like this:

twitter-bot-bootstrap/
β”œβ”€ images
β”œβ”€ node_modules/
β”œβ”€ src/
β”‚  └─ api
β”‚  └─ helpers
β”œβ”€ .env
β”œβ”€ .gitignore
β”œβ”€ .snyk
β”œβ”€ index.js
β”œβ”€ LICENSE
β”œβ”€ package.json
β”œβ”€ Procfile
└─ README.md

Node dependencies

Before configuring the bot we'll need to install the dependencies, cd into the project folder with cd tw* in the terminal this will move you to :~/workspace/twitter-bot-bootstrap (master) $ from the terminal enter:

npm install

This will install all the dependencies listed in the package.json file.

If you get an errors then I suggest installing the dependencies one by one from the package.json file with the same command and the package name at the end:

Here is an example of the dependencies in the package,json file:

  "dependencies": {
    "dotenv": "4.0.0",
    "snyk": "1.31.0",
    "twit": "2.2.5",
    "unique-random-array": "1.0.0"
  }

The npm command to install them all:

npm install --save dotenv twit unique-random-array snyk

Now you can configure the bot. From the terminal enter:

npm init

This will configure the package.json file with your details as desired. Just keep hitting return if you're happy with the defaults.

Now you'll need to add your Twitter keys to the .env file. Just input the keys in their corresponding fields and save the file.

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.

Add your API keys to the .env file πŸ”‘

The .env file is where we can configure our bot, here we set what we want to search on, check out the twitter-bot-playground for information on Twitter search.

QUERY_STRING should be what you want to retweet tweets on with the search terms separated with commas. RANDOM_REPLY again is comma separated replies with the ${ScreenName} which is replaced when replying to the follower. TWITTER_RETWEET_RATE is in minutes.

NOTE none of the .env items have quotes '' round them or spaces between the key and the value KEY=value

TWITTER_CONSUMER_KEY=Fw***********P9
TWITTER_CONSUMER_SECRET=TD************Cq
TWITTER_ACCESS_TOKEN=31**************UC
TWITTER_ACCESS_TOKEN_SECRET=r0************S2

QUERY_STRING=mango,horses,"donald -trump -duck" 
RANDOM_REPLY=Hi @${screenName} thanks for the follow! What are you working on today?,@${screenName} thanks for following! What are you working on today?

RESULT_TYPE=mixed
LANG=en

TWITTER_RETWEET_RATE=120
TWITTER_SEARCH_COUNT=20

That should be it. Go to the terminal, enter npm start and you should get some output:

Check the Twitter account:

You now have a tweet bot, if you want to have this deployed so it's not just running from your machine or from the c9 machine [which is against their terms of service] then we can go over that next.

Deploy with now

Got your Zeit account set up? Now is the time if not, then install now from the terminal:

npm i -g now

Then now from the terminal and you will be prompted to enter your email, you will be sent a confirmation email, click the link and you're ready to go!

If you take a look at the package.json file in the "scripts" section you see there is one for "deploy" this is the command to deploy the bot to now, so from the terminal:

npm run deploy

This will use all our environment variables we defined within our .env file for use on the now servers.

You will get terminal output with a URL for where your bot is located, click the link and you can watch it get built.

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 commands I use in this repo I use it on a daily basis, please feel free to use it.

Contributing

Please fork this repository and contribute back using pull requests.

Any contributions, large or small, major features, bug fixes and integration tests are welcomed and appreciated but will be thoroughly reviewed and discussed.

Links

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


Standard - JavaScript Style Guide

License

MIT License

Copyright (c) 2017, Scott Spence. All rights reserved.

About

Twitter bot to correct people when they talk about Jack Sparrow but woefully fail to mention that he's a captain.

License:MIT License


Languages

Language:JavaScript 100.0%