Python Twitter Bot

The purpose of this program was to automate the jokes I have been posting on my facebook account thru twitter. Although I haven’t figured out AWS Lambda yet, I believe I’ll get there in no time.

This program is run thru IDLE, which, according to Wikipedia, is bundled with the Mac OS X Python since 1.5.2b1.

We start learning with “Getting started with the Twitter API“, then we progress to calling the icanhazdadjoke api throughout the article.

In this program, I learned 4 things:

  • How to apply & create the Twitter API keys used in this application

  • How to use Twython to send tweets using Python

  • How to call an API &

  • How to search for the right questions on a search engine to get the right answer

First, we apply for a Twitter Developer account with the help of this. Upon completing the application, we will receive an email confirmation from Twitter to confirm our email address. Then we wait for our application to be approved. We can check the status at developer.twitter.com.

After getting approved for the developer account, we login to developer.twitter.com to get our application registered to get our API Keys.

Review the developer terms and click create.

Click on keys and tokens to view your keys and access tokens then click create under Access token & access token secret.

Coding the program and sending our first tweet

Create an auth.py file on IDLE and paste your keys inside then hit save

consumer_key = ‘ENTER_YOUR_CONSUMER_KEY’

consumer_secret = ‘ENTER_YOUR_CONSUMER_SECRET’

access_token = ‘ENTER_YOUR_ACCESS_TOKEN’

access_token_secret = ‘ENTER_YOUR_ACCESS_TOKEN’

Create another file and import twython from Twython and the requests module

from twython import Twython

import requests

Also import the variables from auth.py

from auth import (

consumer_key,

consumer_secret,

access_token,

access_token_secret

)

save this as twitter.py

Create a connection with the Twitter API using Twython

twitter = Twython (

consumer_key,

consumer_secret,

access_token,

access_token_secret

)

We’ll use the update_status() function of Twitter’s API to send a tweet

message = “Hello world!”

twitter.update_status(status=message)

print(‘Tweeted: ‘ % message)

Now we run the module by using F5 or from tweet.py -> Run -> Run Module.

View from the mobile :

View from the CLI :

View from the browser :

Calling the icanhazdadjoke API

Fortunately, icanhazdadjoke can be called without an authentication by the GET method. Read through their docs here if you want to learn more

url = ‘https://icanhazdadjoke.com/’

headers = {‘Accept’: ‘application/json’}

joke_msg = requests.get(url, headers=headers).json().get(‘joke’)

print(joke_msg)

The response is : :raised_hands::raised_hands::raised_hands:

Now, we play around the codes.

Designing the Code Structure

We want the output of the icanhazdadjoke tweeted on our twitter account so we use the url variable to call their API. I start with the output, going back to calling the API.

We end up with this code :

url = ‘https://icanhazdadjoke.com/’

headers = {‘Accept’: ‘application/json’}

joke_msg = requests.get(url, headers=headers).json().get(‘joke’)

twitter.update_status(status=joke_msg)

print(“Tweeted: ” + joke_msg)

The output is :

CLI :

Browser :

Mobile :

Next step here would be to figure out AWS Lambda to automate the tweets twice a day and forget about it.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.