はい。大事なことなので一度しか言わないように、bot運用でありがちな同一内容の投稿をしてしまおうとするアレの回避しようとしました。
http://qiita.com/clarinet758/items/3e245a4388ef8a752ca3
op.py
while i < 4:
#直近の4件の投稿まで新しい方から古い方へ見に行く。
tl = tll[i].text
otu=re.compile(u'お疲れ様でした')
oha=re.compile(u'利用時間')
#特定の単語が含まれているかをチェックする
if re.search(u'@xxx おやすみ', tl):
jk = tll[i].created_at
t = open('kanri.txt', 'w')
t.write(str(jk))
t.close()
tane = '@xxx お疲れ様でした。ベッドインを%s時%s分くらいでセットしました。' % (str(jk.hour+9), str(jk.minute))
m=i-1
#特定の単語が発見された時点から新しい方へ見に行き、botが返信に使っている単語がないか探す
#特定の単語があれば簡易な判定ですが動作済みとして終了させる。
#新着最新まで見てhitしなかったら未動作としてtweetを行う。
while m>=0:
if re.search(otu, tll[m].text):
break
else: m-=1
# if m<=0:
if m<0:
oat.client.request('https://api.twitter.com/1.1/statuses/update.json', 'POST', urlencode({'status': tane}))
i+=5
変数名とかあまりに汚いのを明日以降に微調整します。
個人使用で1桁件数程度しか遡ったりしないならログ保存とかする必要ないかな、と。ただfollw先など多いとTLに簡易判定の単語が紛れてきてしまう危険性が高くなるので状況によってアレです。
んー、ログ保存せずにその時ばったりで特定単語だけチェックするのが簡易かと思ってるけどどうなんだろ。
最後の判定のところをm<=0からm<0に条件を修正しました。<=だと最新の発言でhitしてbreakで抜けてきた場合にmが0なので重複発言を止めることが出来ておりませんでした。