Twitterの新しいAPIでダイレクトメッセージを送るでtwurlとTwitterの新しいAPIでダイレクトメッセージを送信したけれど、他にダイレクトメッセージを送信する方法を探していたらTweepyを使う方法を見つけた。TweepyはRaspberry PiとPython3とTwitterでOCRボットを作るのように簡単にTwitterのAPIを使えるPython用ラッパー。ただ、Tweepyは新しいダイレクトメッセージに対応していないので、少し修正を加える必要がある。その手順も含めてTweepyでダイレクトメッセージを送信するまでの手順をまとめておく。
Raspberry Pi (Raspbian Stretch)
※事前にTwitterの開発者向けのページでTwitter APIの利用に必要なAPIキーやトークンなどを取得しておく。
現時点のTweepyの最新バージョン3.6.0をインストールする。pipでインストールすれば最新バージョンがインストールされる。
古いバージョンのTweepyがインストールされている場合は、アップデートしておく。
Tweepyは新しいダイレクトメッセージに対応していないのでコードを修正する。修正方法はDirect Message API changes #1081で紹介されている。
まずはTweepyがインストールされた場所を確認する。
Raspbian Stretchでは/usr/local/lib/python3.5/dist-packages/tweepyにインストールされた。このディレクトリにあるapi.pyとbinder.pyを修正する。
api.pyの修正箇所
Add send_direct_message_new function to send DM
binder.pyの修正箇所
Quick and dirty fix
新しいAPIではユーザーIDが必要なので、Tweepyを使ってユーザーIDを確認する。以下のコードで自分のアカウントのユーザーIDとスクリーンネームを確認できる。
api.pyとbinder.pyの修正が済んだら、ダイレクトメッセージを送信してみる。以下のコードで送信できる。
環境
Raspberry Pi (Raspbian Stretch)
※事前にTwitterの開発者向けのページでTwitter APIの利用に必要なAPIキーやトークンなどを取得しておく。
Tweepyインストール
現時点のTweepyの最新バージョン3.6.0をインストールする。pipでインストールすれば最新バージョンがインストールされる。
古いバージョンのTweepyがインストールされている場合は、アップデートしておく。
Tweepyのコードを修正
Tweepyは新しいダイレクトメッセージに対応していないのでコードを修正する。修正方法はDirect Message API changes #1081で紹介されている。
まずはTweepyがインストールされた場所を確認する。
Raspbian Stretchでは/usr/local/lib/python3.5/dist-packages/tweepyにインストールされた。このディレクトリにあるapi.pyとbinder.pyを修正する。
api.pyの修正箇所
Add send_direct_message_new function to send DM
binder.pyの修正箇所
Quick and dirty fix
ユーザーIDの確認
新しいAPIではユーザーIDが必要なので、Tweepyを使ってユーザーIDを確認する。以下のコードで自分のアカウントのユーザーIDとスクリーンネームを確認できる。
import tweepy # Twitter APIの認証情報 # Twitterの開発者向けのページで取得したキーとトークンを使う CONSUMER_KEY = 'Consumer Key' CONSUMER_SECRET = 'Consumer Secret' ACCESS_TOKEN = 'Access Token' ACCESS_TOKEN_SECRET = 'Access Token Secret' # 認証情報の設定 auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET) api = tweepy.API(auth) # ユーザーIDの確認 tl = api.user_timeline() print('User ID = ', tl[0].user.id_str) print('Screen Name= ', tl[0].user.screen_name)
修正したTweepyでダイレクトメッセージを送信する
api.pyとbinder.pyの修正が済んだら、ダイレクトメッセージを送信してみる。以下のコードで送信できる。
import tweepy # Twitter APIの認証情報 # Twitterの開発者向けのページで取得したキーとトークンを使う CONSUMER_KEY = 'Consumer Key' CONSUMER_SECRET = 'Consumer Secret' ACCESS_TOKEN = 'Access Token' ACCESS_TOKEN_SECRET = 'Access Token Secret' ID = 'ユーザーID' # 認証情報の設定 auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET) api = tweepy.API(auth) # ダイレクトメッセージで送るメッセージ text = 'Hello!' #ダイレクトメッセージの送信 event = { "event": { "type": "message_create", "message_create": { "target": { "recipient_id": ID }, "message_data": { "text": text } } } } api.send_direct_message_new(event)
こちら、参考にさせていただき、ツイート、メッセージの送信することができました!
返信削除ありがとうございます!
お役に立てて何よりです。
削除