カメニッキ

カメとインコと釣りの人です

Twitterでフォロー返し・お礼メンションを送るRubyスクリプト

今更ながら、Rubytwitterプラグインを使用し遊んでみました。
タイトルの通り、「Twitterでフォロー返し・お礼メンションを送るRubyスクリプト」です。
既に同様のタイトルでいくつかソースが公開されていますが、僕の環境ではうまく動作しないので書いてみました。

早速手順です。(※ruby・gemのセットアップは予め完了しているものとします。)

①TwitterGemをインストールします。

$gem install twitter

Twitterアカウントを取得します。
Twitterアプリケーションデベロッパー登録をします。
https://dev.twitter.com/apps/new
必須事項を適宜埋めてください。
④アプリケーションを読み書き可能に変更する。
デベロッパー登録が済むと、アプリの管理画面を表示できます。
そこで、「Settings」タブを選択し、「ApplicationType」で「Read, Write and Access direct messages」を選択します。
⑤ConsumerKeyなどをメモする。
以前は面倒な手順が必要でしたが、今が画面上から全て確認できます。
・ConsumerKey
・Consumer secret
Access token
Access token secret
をメモしておいてください。

以上で準備OKです。

follow.rbとか適当な名前でファイルを作成してください。
以下のようなコードになります。

# encoding: utf-8
require 'twitter'

USER_NAME = 'あなたの名前'

Twitter.configure do |config|
 config.consumer_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'
 config.consumer_secret = 'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY'
 config.oauth_token = 'ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ'
 config.oauth_token_secret = 'NNNNNNNNNNNNNNNNNNNNNNNNNNNNN'
end

#フォロワーさんを取得します。
follower = Twitter.follower_ids(USER_NAME)["ids"]
#フォロー済みを取得します。
fol = Twitter.friend_ids(USER_NAME)["ids"]

#フォロワーとフォロー済みの差分を取得し、「ファン」を抽出します。
fan = follower - follow

fan.each do |f|
 #表示名を取得します
 name = Twitter.user(f)["screen_name"]
 #ユーザーをフォローします。
 Twitter.follow(f)
 #メンションを送ります。(メンション専用の関数が見当たらないので、@と表示名をくっつけてます。。)
 Twitter.update("@" + name + " フォローありがとうございます!")
end

あとは

$ruby follow.rb

で実行すればOKです。

次は自動でフォローし続けるスクリプトをかけたらと思います。


=======================追記==============================
鍵アカへフォロー許可依頼を出した状態で再度スクリプトが実行されると、
エラーでこけちゃいます。対策が必要ですがとりあえず面倒臭いのでbegin rescure endで囲って拾うことにします。