Oauth認証できるRuby製Twitterのボットスクリプト
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 7 commits ahead of sifue:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gitignore
README
conf.yml
main_auth_request.rb
main_post.rb
main_reply.rb
post.xml
reply.xml
reply_for_me.xml
twitter_bot.rb
welcome.xml

README

■機能について

このtwitterボットプログラムは、Oauthを使って認証し、
XMLでつぶやき・返信コンテンツを編集できるrubyのプログラムです。
Unix系のcronやWindows系のタスクで動かすことを想定しています。

内部的には、rubygemsとtwitterというライブラリを使用しています。

機能は以下の通り
    ・post.xmlからつぶやく
    ・フォローしている人をフォローし返す
    ・新たにフォローしてくれた人に、welcome.xmlからウェルカムポストを実行する
    ・自分への返信を解析してreply_for_me.xmlから返信する
    ・自分がフォローしている人のポストを解析してreply.xmlから返信する
    ・xmlからはランダムまたはポスト回数の少ない最後のポストのどちらかを選べる
    ・Oauthのアプリケーション登録からfrom◯◯のアプリケーション名を編集できる
    ・返信元が参照できる形でポストする
    ・#user_name#をユーザー名、#date#を今日の◯月◯日、#time#を今の◯時◯分に置換する
    ・ポストの日時とポスト回数がxml内に記録される
    ・XMLのキーワードは上から優先して返信され、一度返信されたポストには返信しない
    ・自分宛のメッセージの返信のキーワードを''(空文字)にすると必ず返す
となっています。

その他にも
    ・フォロー外された人を外し返す
    ・自分への返信をお気に入りに登録する
という機能もありますが、ボットへのフォロー、人のボット間会話をできるだけ早く流す
などの観点からコメントアウトしてあります。復活させたい人は#でしてあるコメントアウトを
はずして使ってください。

ダウンロードは、
http://www.soichiro.org/up/twitter_bot3.zip
からどうぞ。

一応動いているサンプルは、
    aisha_bot
    http://twitter.com/aisha_bot
です。

ダウンロード後、思い思いの場所に解凍して使ってください。

■環境準備
比較的簡単に自宅サーバーの立てれるUbuntu8.04で実行する場合を例に書きますが、
Windowsでも、Macでも問題なく動きます。
ちなみに開発はMacOSX10.6.2とNetBeans6.8でやっています。

・サーバーとは
あとサーバーって何?って方に説明ですが、サーバーとは24時間起動していて
サービスを提供するコンピューターにことです。
サーバーレンタルしたり、自宅で24時間パソコン動かしたりしてれば立てられます。
レンタルならレンタル費。自宅なら電気代や騒音、熱に悩まされます。
そのサーバーがあるという前提で進めていきます。

・ruby、rubygems、twitterのインストール
rubyは1.8.6と1.8.7で検証済ですのでどちらでも可です。
1.9系は試してみないと分かりません。Ubuntu8.04では、

$ sudo apt-get install ruby rdoc irb ruby1.8-dev rubygems libopenssl-ruby
$ sudo gem update --system
$ sudo apt-get remove rubygems
$ sudo ln -s /usr/bin/gem1.8 /usr/bin/gem
$ sudo gem install twitter

この流れでインストールすれば大丈夫です。以下のURLを参考にしましたが、
他のOSでもいろいろググってみれば必ず準備できます。
http://neconnect.net/item/631

問題なくインストールできたようでしたら、設定手順に進みましょう。

■設定手順
1. twitterのアカウントの取得

    まずボットのためのtwitterアカウントを取得します。
    ボットのためのメールアドレスを用意します。

    そのメールアドレスを使って、twitterのアカウントは、
    http://twitter.com/
    から作成できます。


2. アプリケーションの登録

    アプリケーションの登録はログインの後、
    http://twitter.com/oauth_clients
    にアクセスすることで作成することができます。

    ここでは、アイコン、アプリケーション名、説明、サイトが設定できます。

    なお、ここで設定したアプリケーション名がポストの「Webから」と「API」から
    という部分に反映されます。好きな名前を設定しましょう。

    その他の設定では、
    Application Type:は、Clientを
    Default Access type:は、Read & Writeを
    Use Twitter for login:は、Yes, use Twitter for loginを
   それぞれ設定してください。

    保存後、Consumer keyとConsumer secretを控えておいてください。
    これを設定ファイルconf.ymlに入力することとなります。


3. conf.ymlの編集

    次に設定のためのconf.ymlの編集を行います。
    このファイルはYAML形式なので、タブのインデントや順番、
    スペースの間隔を崩さないように編集してください。

    ・bot:
        ・login: twitterのユーザー名
        ・password: パスワード
        ・post_random: true(ランダムで内容選択)かfalse(回数少ない順)で投稿
        ・interval: 返信の間隔を秒で設定(1分は60、1時間は3600)
        ・oauth:
            ・consumer_key: アプリケーションの登録で取得したConsumer key
            ・consumer_secret: アプリケーションの登録で取得したConsumer secret

    以上を設定します。

4. アプリケーションの認証
    プログラムのあるフォルダに移動して

    $ ruby main_auth_request.rb

    を実行します。

   すると、

    以下のURLにアクセスしてアプリケーションを許可し、暗証番号を入力してください
    http://twitter.com/oauth/authorize?oauth_token=XXXX
    >

    と、入力を求められますので、URLにアクセスの後、
    アプリケーションを許可し、表示された暗証番号を入力して、Enterキーを押してください。
    すると自動的に、conf.ymlに許可された時に得られた、tokenとsecretが保存されます。

    これで動かすことができますので、

    $ ruby main_post.rb

    で実際に動かしてみましょう。ちゃんとポストされましたか?
    上手くいかない場合は、戻って一つ一つ設定しなおしてみましょう。

    エラーログなんかをググってみても良いかもしれません。
    うまくいったら自動実行のためのcronの設定です。

5. 自動実行のためのcronの設定

    プログラムは、post.xmlから通常のつぶやきを行うmain_post.rbと
    welcome.xml、reply.xml、reply_for_me.xmlから、返信を行う
    main_reply.rbの2種類があります。それらを自動実行するようにcronを設定します。

    $ crontab -e

    を実行した後、例えば常に◯時4分に実行させたいならmain_post.rbを以下のように設定

4 0-23/1 * * * ruby /home/username/ruby/aisha_bot/main_post.rb > /home/username/ruby/aisha_bot/main_post.log 2>&1

    のように。逆に毎分main_reply.rbを実行させたいなら以下のように設定し

*/1 * * * * ruby /home/username/ruby/aisha_bot/main_reply.rb > /home/username/ruby/aisha_bot/main_reply.log 2>&1

    conf.ymlのintervalの値も60としておきます。
    こうすることで、今後しっかり自動実行されるようになります。

    なお、ここでは前回実行した分のログを残すように出力していますが、
    デバッグのために使うものなので普通に実行して問題ないようでしたら
    はずしてもよいかもしれません。

    あと、Windowsでは、batファイルかvbsファイルでも作って
    タスクで思うように実行させてみてください。

    以上で自動設定は終了です。Botの設置お疲れ様でした。

■コンテンツの編集について
プログラムと同じ階層にあるxmlファイルを編集することで投稿のバリエーションを
増やすことができます。

一応、XMLが崩れていないかなどを、IEやFirefoxなどのブラウザにドラックアンドドロップ
して調べてみてください。

ちなみに自分はシンタックスハイライトを使うためにWindowsでは秀丸。
Macでは、CotEditorのHTMLのカラーリングを使ってます。
誤ってUTF-8以外の文字コードで保存してしまわないように注意が必要です。

以上