TweepyとStreaming APIで自動リプライbotをつくる

tweepy_header

TweepyでTwitterのStreaming APIを使って自動リプライbotを作ってみた。

ラズパイでbotとなるとpythonで書きたくなってくるので、python対応のtweepyで実装した

Twitter APIには3種類あるらしく、その内のStreaming APIがリアルタイム処理に優れているということで、
リプライbotとしてはStreaming APIがいいかなと

では、さっそくプログラムをどうぞ

 

プログラム


#!/usr/bin/env python
# -*- coding:utf-8 -*-

import tweepy
import datetime

CK="XXXXXXXXXXXXXXXXXXXXXXXX"
CS="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
AT="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
AS="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

# Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)

api = tweepy.API(auth)

class Listener(tweepy.StreamListener):
    def on_status(self, status):
        status.created_at += datetime.timedelta(hours=9)

	# リプライが来たら返信
	if str(status.in_reply_to_screen_name)=="{Bot_TWITTER_ID}" and str(status.user.screen_name)=="{Twitter_ID}":
		tweet = "@" + str(status.user.screen_name) + " " + "Hello!\n" \
			+ str(datetime.datetime.today())
		api.update_status(status=tweet)
	return True
     
    def on_error(self, status_code):
        print('Got an error with status code: ' + str(status_code))
        return True
     
    def on_timeout(self):
        print('Timeout...')
        return True
 
# Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)
 
listener = Listener()
stream = tweepy.Stream(auth, listener)
stream.userstream()

「#リプライが来たら返信」のところでリプライ処理を行っています。
条件分岐で「自分のタイムラインに自分宛て(Bot_Twitter_ID)のツイートが来る」と
「特定ユーザ(Twitter_ID)からのリプライ」がどちらもTrueの場合に「Hello!」と返信

何回も同じ文章でツイートするとエラーを吐かれてしまうので、
時刻と一緒にツイート

strとか使わなくてもできそうですが、Python初心者なのでやり方がわかりません

 

tweepyのStreaming API関連のプログラムを見ると他にもいろいろ実装できそう

 

こちらのサイトを参考にさせていただきました
Tweepy+Pythonによるユーザーストリーム〜pip, tweepyのインストールから〜
Twitter APIで取得した際のデータ構造

掲示されます。 Python

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

Bitnami