Hashtag retweet bot

A bot that retweets all tweets tagged by a certain hashtag. Ideal for conferences, meetup groups, communities, etc.

As an example, let's say you want to retweet every tweet found with the hashtag #icecream every 5 minutes (300 seconds). This ruby gem will let you do it as easily as running:

hashtag_retweet_bot icecream 300

Installation

gem install hashtag_retweet_bot

Create the database:

mysqladmin create my_conference_db

Create a directory where you will run the bot from, and a config directory with 2 files in it: database.yml for your database settings and either

  • oauth.yml to make the bot use OAuth (RECOMMENDED)
  • bot.yml for the login/password of the twitter account (DEPRECATED)

    mkdir -p bot_for_my_conference/config cd config/bot_for_my_conference touch database.yml

If you want to use OAuth, register a new application on Twitter and put in consumer key (token) and secret in oauth.yml: consumer: token: my_apps_consumer_key secret: my_apps_consumer_secrets

Don't worry now about request and access token/secret pairs, the bot will guide you the first time you launch it. And every time access token/secret will become invalid and need re-creating (as of June 2010, Twitter is not expiring access tokens, but they can be invalidated by removing the app).

If you want to use HTTP Auth (it's DEPRECATED by Twitter and will be no longer supported after August 2010), put the credentials for the twitter account in bot.yml:

login: my_conference_bot
password: secret

Put the database connection attributes in database.yml:

adapter: mysql
username: root
host: localhost
password:
database: my_conference_db

And create the table on the database that will hold the tweets:

hashtag_retweet_bot create_db_table

Run it

Now the only thing left to do is running the bot, telling it what tag to follow, like that:

hashtag_retweet_bot tag_to_follow

This will launch the bot with a default pause of 180 seconds. If you want a different time schedule you can specify other value for the seconds parameter, but I've experienced Twitter connection problems when trying to update every 60 seconds or less:

hashtag_retweet_bot tag_to_follow seconds_between_updates

Example:

hashtag_retweet_bot icecream
hashtag_retweet_bot icecream 240

Live examples

Some twitterbots using hashtag_retweet_bot:

Credits

Original idea and script by Mark Connell for Scotland on Rails 2009. Customization for Euruko '09, and some improvements by Jaime Iniesta. Some improvements and gemification by Balint Erdi. Customization for Euruko '10 and further work (OAuth support, refactoring etc.) by Tomasz Stachewicz

Please send feedback and bug reports to [email protected]