ツイッター・ボット、Kotz’i’jのリプライ機能を少し強化。これです。
スペイン語でCómo se dice と単語を入力し、その単語がリストにあるものと一致した場合、キチェ語に訳すというもの。簡単な辞書の様なものだ。
こんな感じで書いた。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
min_id = "" File.open('dictionaries/latest_loaded_id.txt', 'r') do |latest_loaded_id| min_id = latest_loaded_id.read end max_id = client.home_timeline.first.id File.open('dictionaries/latest_loaded_id.txt', 'w') do |f| f.puts(max_id) end @vocList = [] open('dictionaries/vocList.txt') do |f| f.each do |line| a, b = line.split(/\t/) @vocList << [a, b] end end client.home_timeline(since_id: min_id, count: 200).each do |tweet| if (tweet.full_text.include?("jelik_kotzij")) && (tweet.user.name != "Kotz'i'j") reply = "" if (tweet.full_text.include?("utz awach")) reply = "Utz maltyox! E le at?" elsif (tweet.full_text.include?("mo se dice")) @vocList.each do |word| if tweet.full_text.include?(word[0]) reply = word[1] break end end if(reply == "") reply = "No lo sé todavía..." end else originalTweet = tweet.full_text.gsub("@jelik_kotzij", "") originalTweet = originalTweet.delete("!?") reply = "Jas " + originalTweet + "?" end client.update('@'+tweet.user.screen_name + " " + reply, {:in_reply_to_status_id => tweet.id}) end end |
一度返信したツイートに再度返信しないために、前回読み込み以降のツイートのみを読み込む様にするなどそれなりの工夫をした。
ポイントは
1 |
max_id = client.home_timeline.first.id |
で今回の最新ツイートIDを取得し、
1 2 3 |
File.open('dictionaries/latest_loaded_id.txt', 'w') do |f| f.puts(max_id) end |
で保存。
これを次回min_idとして読み込み
1 |
client.home_timeline(since_id: min_id, count: 200).each do |tweet| |
前回読み込んだ以降のツイートのみを読み込む。こんな風にリプライしてくれる。
だんだん進化してきた。次回は天気予報を定期的にロードする機能を取り入れたいなぁ。