rubyでtwitterbotを作ってみる その2 自動follow返し

前回

今回はfollowしてくれてる人に自動でfollow返しをする関数を作ります。

自分がfollowしてる人とfollowされてる人の配列を作って
引くとfollow返しすべき人の配列が出来ます。

今回はボット用なので、
自分がfollowしてる数 < followされてる数
の場合しか考慮してません



# 自動follow返し
def auto_follow(base)
# friendsを取得
friends = Array.new
base.friends.each{
|f| friends << f.id } # followersを取得 followers = Array.new base.followers.each{ |f| followers << f.id } # friendsとfollowersの差を取ってfollow返し targets = Array.new targets = followers - friends targets.each{ |id| base.friendship_create(id, true) } end

--

配列 - 配列をしたらかぶってないのが残るというrubyさんの賢さに感動したんだけど
最近の言語って皆こんなに賢いの?

rubyでtwitterbotを作ってみる

rubyでtwitterのbotを作ってみます。

まずはrubyでtwitterのAPIを叩くところまで。

rubyにはRuby Twitter Gemという便利なものがあるのでそれを使います。

portsからgemsを入れる。
# cd /usr/ports/devel/ruby-gems
# make install clean

twitter gemを入れる。
# gem install twitter

準備完了。

ひとまずネット上のサンプルを参考に作ってたら
`initialize’: wrong number of arguments (2 for 1)とかいうエラーが出た。
base = Twitter::Base.new(‘username’, ‘password’)
の引数の数があってないとか。

で、調べてみるとこのやり方は昔ので、最近のバージョンでは一度HTTPAuthに通してからするようになっている。
httpauth = Twitter::HTTPAuth.new(‘username’, ‘password’)
base = Twitter::Base.new(httpauth)

参考

でこれが作ってみたサンプルコード。
—-

#!/usr/bin/ruby

require ‘rubygems’
gem ‘twitter’
require ‘twitter’

message = “ほげほげ”

httpauth = Twitter::HTTPAuth.new(‘account’, ‘password’)
base = Twitter::Base.new(httpauth)

# つぶやく
base.update(message)

# タイムラインを表示
puts “Friends Timeline”, “=” * 50
base.friends_timeline.each { |tweet| puts tweet.text }

—-
とてもシンプル!

rubyでtwitterbotを作ってみる その2 自動follow返し