Followingのお気に入りをランダムに返信するbot
botに対してつぶやくと、フォローしてる人がお気に入りにいれているTweetをランダムに選んで返信するというtwitterのbotです。
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は無視するなどしたい場合は、時間を保持する必要があります。
作ったものはこれです。