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 はライブラリ特有のクセがないのでおススメですね。