PSO2 Ship9緊急クエ通知BOT https://twitter.com/pso2_ship9_emgというのを作ってみた。
機能としては、PSO2緊急クエ発生時間つぶやきbot https://twitter.com/pso2_emg_bot のつぶやきから、 Ship9の緊急クエだけを取り出してRTするだけです。
使用言語はRuby。 ubuntuのcronで定時実行しています。
twitterBOTを作ってみたいという人が、周りに割といたので、作り方を紹介してみます。 環境さえ整っていれば、1時間かからずに作れますよ。
◆つくりかた
- ”twitter”をrequireできるようにします。
$ gem install twitter -v=2.1.0
古めのバージョンを使ってるのは、説明しているページが多めだからです。
-
twitterのサイトで、BOT用アカウントを作成します。
-
Twitterの開発者用サイトを開きます。
-
BOT用アカウントでログインします。
-
右上のアイコンから、[My applications]→[Create a new application]と押していきます。
-
アプリの名前とか説明とかを記入して、OKを押します。
-
アプリのステータス画面を開いて、[Create my access token]のボタンを押します。
-
再読み込みされたステータス画面から、Consumer keyとConsumer secret、Access tokenとAccess token secretを控えておきます。 (twitterに投稿する系のアプリの場合は、Read&Writeできるように設定を変えておきます。)
-
Rubyプログラムを作成します。 今回のPSO2 Ship9緊急クエ通知BOTだと、こんな感じのソースコードになります。 gemのtwitterをどうやって使うかは、https://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
-
9で作ったプログラムを実行してみて、うまく動くか確認します。
-
crontabを編集して、定時実行するように設定します。
https://kazmax.zpp.jp/linux/lin_cron.htmlとか、https://miya0.dyndns.org/pc/settei/crontab.htmlとかがわかりやすかった。
- 指定した時間にうまく動作してたら完成。
―――――――――
BOTをすぐに作れるWebサービスとかが普通にあって、ほんと便利です。
ただ、Webサービスだと機能が限られてるときなんかもあると思うので、 そういうときはBOTの自作も簡単にできそうだったなーと思い出してもらえれば。