Followingのお気に入りをランダムに返信するbot

botに対してつぶやくと、フォローしてる人がお気に入りにいれているTweetをランダムに選んで返信するというtwitterbotです。

rubyで書いてます。
Twitter gemのバージョン1.0.0を使ってます。

# -*- encoding: utf-8 -*-

require 'twitter'
require 'sqlite3'

class Frienvorite
  def initialize(hash)
    Twitter.configure do |config|
      config.consumer_key = hash.fetch('c-key')
      config.consumer_secret = hash.fetch('c-secret')
      config.oauth_token = hash.fetch('o-token')
      config.oauth_token_secret = hash.fetch('o-token-secret')
    end
    reply_to_mentions
  end

  def choice_favorite(friend)
    favorites = Twitter.favorites(friend)
    if favorites != []
      fav = favorites[rand(favorites.size)]
      return "RT #{fav.user.screen_name} #{fav.text}" if fav != []
    end
    return
  end

  def choice_friend(mention_user)
    friends = Twitter.friends(mention_user).users
    if friends != []
      for i in 1..10
        friend = friends[rand(friends.size)].screen_name
        favorite_retweet = choice_favorite(friend)
        if favorite_retweet != nil
          return "@#{mention_user} IN #{friend} #{favorite_retweet}"
        end
      end
    end
    return
  end

  def reply_to_mentions
    Twitter.mentions.each do |mention|
      tweet = choice_friend(mention.user.screen_name)
      Twitter.update(tweet) if tweet != nil
    end
  end
end

Frienvorite.new({'c-key' => 'コンシューマー・キー',
                 'c-secret' => 'コンシューマー・シークレット',
                 'o-token' => 'オーオース・トークン',
                 'o-token-secret' => 'オーオース・トークン・シークレット'});

このままでは、mentions全てに返信するので、返信済みのmentionは無視するなどしたい場合は、時間を保持する必要があります。


作ったものはこれです。