Personalize your Bot
There are tons of free, easily accessible data sources you can use to create interesting bots. Some of my favorites are:
- Wikimedia provides free, public APIs for all of their services including Wikipedia and Wikihow. Uses simple GET requests with no authentication required. There is documentation as well as a Python wrapper. Cool bots that use the Wikimedia API include @wikisext and @how2butt.
- Tweepy, the library we used to send tweets from our sample bot, can also be used to search and reply to tweets. Tweepy is very well documented.
- Google has a lot of different free, public APIs that have basic authentication and usage limit requirements. The whole list of Google APIs is here. @earthroverbot and @youareherebot use the Google Maps API.
- ITunes has a search API that provides information on music, movies, and other media for free and with no authentication.
- Pokeapi has a wealth of pokemon data free and with no authentication steps.
Here's a mostly complete list of Python API wrappers.
It's also possible to make a unique bot without many changes or additions to the template. @everyportland is a bot that has very minor differences from the original template. It tweets from a list of English nouns instead of a book, plus a Portland-specific modifier (i.e. "Natural abacuses").
You can check out the source code for these Python Twitter bots for ideas or examples:
- @taco_helper creates fantastical Taco Bell menu items and suggests them to people who are selected based on their recent tweets.
- @angryrichpeople posts 1 star reviews of $$$$ Yelp reviews
- @crystalliser takes an image and "crystallizes" it.
- @emoji_haiku creates haikus out of emoji.
- @gutendelight makes rhyming couplets out of hip hop lyrics and classic literature.
- @kaikkisanat is tweeting every word in Finnish.
- @permitbot reports on building permits filed in Chicago.
BotWiki maintains a list of Twitter bots which are not all open source or written in Python.
Pick out a couple APIs that look interesting to you, even if you're not sure how you'll turn it into a bot. We'll go over how to use an API in the next chapter.