TweepyではDirect Messageの送信・取得などの操作ができない
python3のライブラリ、TweepyはTwitter APIのバージョンアップに対応しきれていないからだ。
DMを送信する古いエンドポイント
POST https://api.twitter.com/1.1/direct_messages/new.json
新しいエンドポイント
POST direct_messages/events/new
のような違いがあるが、Tweepyでは古い方のエンドポイントを使っている。
別のライブラリをお勧めする
requests_oauthlib というライブラリをお勧めする。
こちらは下記のように自分でエンドポイントを指定するので、
以後エンドポイントが変更されたとしても対応可能だろう。
ダイレクトメッセージを取得するサンプルコード
import json from requests_oauthlib import OAuth1Session # 認証 twitter = OAuth1Session("consumer_key", "consumer_secret", "access_token", "access_token_secret") # パラメータ設定 endpoint = 'https://api.twitter.com/1.1/direct_messages/events/list.json' params = {'count':'50'} # リクエスト送信 res = twitter.get(endpoint, params = params) # レスポンスはJson文字列なので、Json文字列を辞書形式に変換 dic = json.loads(res.text) print(dic)
他の操作もTwitter公式を見れば分かる
上記の書き方を覚えれば、
あとはTwitterAPI公式ドキュメントを確認すれば何でもできる。
上記のソースのendpointとparamsを書き換えるだけだ。
Docs — Twitter Developers
ちなみに、公式ドキュメントでこのように「POST」と書いてある場合、
POST direct_messages/events/new (message_create)
下記のように、postメソッドを使用する。
res = twitter.post(endpoint, params = params)
取得系はget、操作系はpostですね。
requests_oauthlib はライブラリ特有のクセがないのでおススメですね。