PSO2 Ship9 緊急クエ通知BOT(@pso2_ship9_emg)というのを作ってみた。
機能としては、PSO2緊急クエ発生時間つぶやきbot (@pso2_emg_bot) のつぶやきから、
Ship9の緊急クエだけを取り出してRTするだけです。
使用言語はRuby。 ubuntuのcronで定時実行しています。
twitterBOTを作ってみたいという人が、周りに割といたので、作り方を紹介してみます。
環境さえ整っていれば、1時間かからずに作れますよ。
◆つくりかた
1, ”twitter”をrequireできるようにします。
$ gem install twitter -v=2.1.0
古めのバージョンを使ってるのは、説明しているページが多めだからです。
2, twitterのサイトで、BOT用アカウントを作成します。
3, Twitterの開発者用サイトを開きます。
4, BOT用アカウントでログインします。
5, 右上のアイコンから、[My applications]→[Create a new application]と押していきます。
6, アプリの名前とか説明とかを記入して、OKを押します。
7, アプリのステータス画面を開いて、[Create my access token]のボタンを押します。
8, 再読み込みされたステータス画面から、Consumer keyとConsumer secretとAccess tokenとAccess token secretを控えておきます。
(twitterに投稿する系のアプリの場合は、Read&Writeできるように設定を変えておきます。)
9, Rubyプログラムを作成します。
今回のPSO2 Ship9 緊急クエ通知BOTだと、こんな感じのソースコードになります。
gemのtwitterをどうやって使うかは、ここ(http://route477.net/w/?RubyTwitterJa)を見て調べた。
(*2013.2.7 ソースコード訂正)
require 'twitter' # ログイン Twitter.configure do |config| config.consumer_key = '8, のConsumer key' config.consumer_secret = '8, のAccess token' config.oauth_token = '8, のAccess token' config.oauth_token_secret = '8, のAccess token secret' end #タイムラインの取得 tl = Twitter. search("pso2_emg_bot #pso2 #pso2_ship09 -rt", :lang => "ja", :count => 1) ship9 = Twitter. user_timeline("pso2_ship9_emg", :lang => "ja", :count => 1) #すでにリツイートしていないかを確認 #していなければ、リツイート! s9text = ship9.first.text if s9text.include?("RT @pso2_emg_bot: ") s9text["RT @pso2_emg_bot: "] = "" end if(tl.statuses.first.text != s9text) Twitter.retweet(tl.statuses.first.id) p tl.statuses.first.text puts "retweet" else puts "*****already retweeted*****" p s9text end
10, 9で作ったプログラムを実行してみて、うまく動くか確認します。
11, crontab を編集して、定時実行するように設定します。
ここ(http://kazmax.zpp.jp/linux/lin_cron.html)とか、ここ(http://miya0.dyndns.org/pc/settei/crontab.html)とかがわかりやすかった。
12, 指定した時間にうまく動作してたら完成。
―――――――――
BOTをすぐに作れるWebサービスとかが普通にあって、ほんと便利です。
ただ、Webサービスだと、機能が限られてるときなんかもあると思うので、
そういうときは、BOTの自作も簡単にできそうだったなー、と思い出してもらえれば。