FUN YOU BLOG

PSO2用にBOTを作ったよという話

PSO2 Ship9緊急クエ通知BOT https://twitter.com/pso2_ship9_emgというのを作ってみた。

機能としては、PSO2緊急クエ発生時間つぶやきbot https://twitter.com/pso2_emg_bot のつぶやきから、 Ship9の緊急クエだけを取り出してRTするだけです。

使用言語はRuby。 ubuntuのcronで定時実行しています。

twitterBOTを作ってみたいという人が、周りに割といたので、作り方を紹介してみます。 環境さえ整っていれば、1時間かからずに作れますよ。

◆つくりかた

  1. ”twitter”をrequireできるようにします。
$ gem install twitter -v=2.1.0

 古めのバージョンを使ってるのは、説明しているページが多めだからです。

  1. twitterのサイトで、BOT用アカウントを作成します。

  2. Twitterの開発者用サイトを開きます。

  3. BOT用アカウントでログインします。

  4. 右上のアイコンから、[My applications]→[Create a new application]と押していきます。

  5. アプリの名前とか説明とかを記入して、OKを押します。

  6. アプリのステータス画面を開いて、[Create my access token]のボタンを押します。

  7. 再読み込みされたステータス画面から、Consumer keyとConsumer secret、Access tokenとAccess token secretを控えておきます。   (twitterに投稿する系のアプリの場合は、Read&Writeできるように設定を変えておきます。)

  8. 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
  1. 9で作ったプログラムを実行してみて、うまく動くか確認します。

  2. crontabを編集して、定時実行するように設定します。

https://kazmax.zpp.jp/linux/lin_cron.htmlとか、https://miya0.dyndns.org/pc/settei/crontab.htmlとかがわかりやすかった。

  1. 指定した時間にうまく動作してたら完成。

―――――――――

BOTをすぐに作れるWebサービスとかが普通にあって、ほんと便利です。

ただ、Webサービスだと機能が限られてるときなんかもあると思うので、 そういうときはBOTの自作も簡単にできそうだったなーと思い出してもらえれば。