twitterのbotを作る その3

エラー処理などはしていないもののbotとしては最低限機能するものを作ってみた。
リプレイに対しては、「おはよう」のみ反応して言葉を返してくれる。
それ以外でも反応はしてくれるが「辞書にない」と言われてしまう。
また、30分ごとに現在時刻を返してくれる。

main.rb




#!/usr/bin/ruby

require 'rubygems'
require 'twitter'
require 'time'


USERNAME = 'tes_21'
PASSWORD = 'aoi1229' # <- dummy password
messeg = nil
friend = nil
replay_messeg =
morning_messeg =

morning_word =
io = nil
SLEEP_TIME=60

# ログイン
httpauth = Twitter::HTTPAuth.new( USERNAME , PASSWORD )
client = Twitter::Base.new(httpauth)

# ファイルを読み込むメソッド
def file_open(text)
mesbox =
io = File.read(text)
io.each do |s|
mesbox << s
end
return mesbox
end

# 返信ファイルを選ぶ
def messeg_select(mes, word, text)
word.each do |f|
puts f.chomp!
if text.index(f)
messeg = mes[rand(mes.size)]
return messeg
end
end
return nil
end

# ファイルの読み込み
replay_messeg = file_open("text.txt")
morning_messeg = file_open("morning")
morning_word = file_open("mo-word")

while true
# タイムラインを取得
client.friends_timeline.each do |s|
messeg = nil

# 文字列を時間に変換
ary = ParseDate::parsedate(s.created_at)
t = Time::local(*ary[0..-3])

# 1分以内のリプレイに対して返信
if s.text.index('@tes_21') && Time.now.to_i - t.to_i < 32460
# おはよう
messeg = messeg_select(morning_messeg,morning_word,s.text)

# 辞書にありません
if messeg == nil
messeg = replay_messeg[rand(replay_messeg.size)]
end

# twitterに投稿
friend = "@#{s.user.screen_name} #{messeg}"
client.update(friend)
end
end

if Time.now.to_i % 1800 < 60
client.update( Time.now )
end

sleep SLEEP_TIME
end




後は、エラー処理をつければ完璧だー、と思う。
もっと効率の良いやり方があれば教えてほしいかも。
今後、これを拡張していきます。