2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

botが同一内容のtweetを投稿しようとするのを簡易な回避策

Last updated at Posted at 2013-11-11

はい。大事なことなので一度しか言わないように、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なので重複発言を止めることが出来ておりませんでした。

2
2
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?