TwitterBotをRubyで作る

TwitterBotをRubyで作る

本物のTwitterアカウントでテストするなし

今更ながらBotを作ってみた。何に使うかはまだ秘密!

参考

この本に書いてあることのまんまです。

twitter_bot.rb

コード

require 'rubygems'
require 'twitter_oauth'

CONSUMER_KEY = ‘***'
CONSUMER_SECRET = ‘***'
ACCESS_TOKEN = ‘***'
ACCESS_TOKEN_SECRET = ‘***'

client = TwitterOAuth::Client.new(
     :consumer_key => CONSUMER_KEY,
     :consumer_secret => CONSUMER_SECRET,
     :token => ACCESS_TOKEN,
     :secret => ACCESS_TOKEN_SECRET
)

posts = [
     "hoge",
     "piyo",
     "huga",
     "hogehoge",
     "piyopiyo",
     "hugahuga",
]

post = "[自動投稿] [テストだから気にしないで] " + posts[rand(posts.size)]
status = client.update(post)
puts ("#{Time.now} #{post}")

ざっくり説明

  • CONSUMER_KEY,CONSUMER_SECRET,ACCESS_TOKEN,ACCESS_TOKEN_SECRETTwitterアカウント毎に事前に用意する(ググれば分かる)

  • 配列postsにはこのボットにつぶやかせる内容を列挙しておく。ビバ!ハードコーディング!(ヒアドキュメントといえば聞こえはいい)

  • つぶやき内容はランダムにしている。つぶやく周期は後述のcronで制御。

  • client.updateでつぶやきを投稿。例外処理を全くやっていない。戻り値statusで制御すべきだけど、面倒だからやらない。たぶん大丈夫。おそらくWiFiが切れてたら例外が出るんだろうな。

スケジューラ(cron)

crontab

# TwitterBot
0 * * * * /usr/bin/ruby /Users/7010oncajon/Documents/Programing/Ruby/TwitterBot/twitter_bot.rb >> /Users/7010oncajon/Documents/Programing/Ruby/TwitterBot/twitter_bot.log 2>&1

ざっくり説明

  • 1時間周期でつぶやくなう
  • ログ出力の方法ってこれでいいんだっけ?

以上