Find file
Fetching contributors…
Cannot retrieve contributors at this time
36 lines (25 sloc) 1.92 KB


FollowBackBot is a scala library for twitter API bots that follow/unfollow back and @reply based on custom criterea. Because they only respond to people who follow them, these bots adhere to Twitter's terms of service for automated @replying.

FollowBackBot uses Twitter4j to access both the REST and streaming Twitter APIs. The UserStream is used to monitor follows and statuses, and a periodic "reciprocity" process runs to make sure follow/unfollows are respected.

A Responder class defines what statuses are responded to, and is simply a type alias for twitter4j.Status => Option[twitter4j.StatusUpdate]. A SimpleResponder class, which is a type alias for String => Option[String], can also be used, with the Responder.simple(_) method, which takes care of truncation, proper handling of retweeted text, and setting in_reply_to_status_id.

An example is provided, the source code for the @YourMomBot account. Creating a new bot is as simple as defining a single function:

package nu.glen.yourmombot

import nu.glen.followbackbot.{FollowBackBot, Responder, SimpleResponder}

object YourMomResponder extends SimpleResponder {
  private[this] val Regex = ".*?\\b([a-z\\-A-Z]+[iI][nN][gG])\\b(.*)".r

   * extremely naive for now. just extracts tweets with words ending in "ing"
  def apply(status: String): Option[String] = status match {
    case Regex(gerrand, rest) => Some("Your mom's %s%s".format(gerrand.toLowerCase, rest))
    case _ => None

object YourMomBot extends FollowBackBot(Responder.simple(YourMomResponder)) with App

FollowBackBot authenticates with OAuth, and requires the presense of the following system properties or environment variables: