TwitterBot on GAEにReplyさせる(その2)
前回
http://d.hatena.ne.jp/intheflight/20090613/p1
現在のなかさきBotは1時間毎にPostし、@_nkskされると常に「キュフフ♪」とReplyする単純なものです。これをもう少し複雑にしたい。せめて「おはよう」と言ったら「おはよう」と返してもらいたい。ということで次の目標はPostの中身を調べて、内容に合ったReplyを返せるようにします。内容に合ったReplyといっても返す言葉は定型句なので、それほど難しくありません。今回は「おはよう」と言ったら「おはよう」と返すことを目標とします。新しくクラスを作ったりはせずにNkskReplyクラスのget()を編集するだけです。get()の該当する送信部分だけを抜粋します。
url = "http://twitter.com/statuses/update.xml" statuses2 = db.Query(Status) statuses2.filter("replied =", False) for status in statuses2: status.replied = True db.put(status) head_message = u"@" + status.user + u" " if re.compile(u"おはよう").search(status.text): tail_message = u"さん、おはよう!" else: tail_message = u"キュフフ♪" message = head_message + tail_message payload = urllib.urlencode({'status': message.encode("utf-8")}) base64string =b64encode("%s:%s" % (username, password)) headers = {"Authorization": "Basic %s" % base64string} urlfetch.fetch(url, payload=payload, method=urlfetch.POST, headers=headers)
正規表現でPost文字列の中に「おはよう」があるか判定します。
re.compile(u"おはよう").search(status.text)
それから、必要なモジュールをインポートします。
import re
テストしてアップロードして完成。簡単ですね!