twitterのbotはrubyでチョチョイのパー


先日友人が「twitterのapiがわっかんねぇYO!s」とか呟いていたので、
rubyを使えば簡単にbot作れるんだぜ!
ってことをアピール、rubyをアピール!するために記事を書きます。

友人の環境はimac。というわけで、きっとrubyもgemも入っているんだろう。
imacがあれば余裕。

twitterのbotをつくる手順は、
1.imacの環境づくり
2.twitterのbot用アカウント作成
3.twitterにアプリ作成
4.プログラム作成

1.imacの環境づくり

友人のrubyとgemのバージョンいくつだろう。
・・・電話しました。
どうやら、
ruby 1.8.6
gem 1.3.5
らしい。
まずは、ターミナルに以下を入力してgem をアップデートしておこう。

1
2
# gemのアップデート
sudo gem update --system

次に、gem twitterを入手すべく、以下のコマンドです。

1
2
# gem twitterのインストール
gem install twitter

コマンド関係の下準備はこれだけかな。

2.twitterのbot用アカウント作成

twitterにbot用のアカウントを作ろう。
http://twitter.com

3.twitterにアプリ作成

以下にアクセスして、twitterのbot用アカウントでログイン。
http://dev.twitter.com/

Create an appをクリック。

アプリケーションの情報を入力しましょう、適当に。
・Name → chochoi_bot
・Description → chochoi no choi daze!
・WebSite → http://localhost.test.jp/ ← 超適当!

そしてcreate your twitter applicationをクリックすると、
アプリ登録完了します。

登録後のページにあるsettingタブにて


上記のように、Read and Write に変更しておきます。
変更したら画面下にある、Update this Twitter application’s settingsをクリックするのを忘れずに!

Detailsタブにて、自分のoauthトークンを取得します。


ここの Create my access token をクリックすると、以下のようになります。

4.プログラム作成

最後、ついにプログラム書くぜ!!

でもコレだけなんだぜ!!

1
2
3
4
5
6
7
8
9
10
11
12
13
# choichoi_bot.rb
require 'rubygems'
require 'twitter'

Twitter.configure do |config|
  config.consumer_key = "YOUR_CONSUMER_KEY"
  config.consumer_secret = "YOUR_CONSUMER_SECRET"
  config.oauth_token = "YOUR_OAUTH_TOKEN"
  config.oauth_token_secret = "YOUR_OAUTH_TOKEN_SECRET"
end

client = Twitter::Client.new
client.update("YOS まじ YOS")

これをこのままコピペしても無理だよ・・・。
twitterのアプリ画面トップに、以下のような部分があるよね。
ちゃんとその値に書き換えておいてね!
rubyだって文字列は ” か ‘ で囲むんだからね!

YOUR_CONSUMER_KEY → Consumer key
YOUR_CONSUMER_SECRET → Consumer secret
YOUR_OAUTH_TOKEN → Access token
YOUR_OAUTH_TOKEN_SECRET → Access token secret

そして、ターミナルにて、このプログラムを実行する。

1
2
# ubyプログラムの実行
ruby choichoi_bot.rb

すると、twitterのアカウントが「YOS まじ YOS」とつぶやいているはずだ!

ね、簡単でしょう?

え?発言するだけじゃbotじゃないって?
じゃあ、2つの機能を追加しようじゃない。
・ランダムな内容を発言
・ランダムな間隔で発言

プログラムは以下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# choichoi_bot2.rb
require 'rubygems'
require 'twitter'

Twitter.configure do |config|
  config.consumer_key = ""
  config.consumer_secret = ""
  config.oauth_token = ""
  config.oauth_token_secret = ""
end

tweets = open("tweets.txt").read.split("\n").delete_if { |tweet| tweet.strip.empty? }
loop do
  tweet = tweets.choice
  sleep_time = 60 + rand(3600) # 1分~60時間の間隔でtweet
  puts "tweet #{tweet} (#{Time.now}) next (#{Time.now + sleep_time})"

  client = Twitter::Client.new
  client.update tweet

  sleep sleep_time
end

例のごとく、ちゃんとTwitter.configureの部分は正しい文字列をいれてね。

発言する文章ファイルを用意します。
以下のような改行区切りのtweets.txtを用意。
言葉を増やしていけば、勝手に増える! 多分。

1
2
3
4
# tweets.txt
Hello world!!
hogehoge
ミックミク

これを実行すれば、完成!

imacがあるならこれだけで出来るはず。
自動フォローとかも同じように簡単だよ。
頑張って!

(choichoi_bot2.rbは、同じ発言を連続で投稿するとエラーで落ちる可能性を予想しておきます。