タダケンのEnjoy Tech

楽しみながらラクに成果を上げる仕組みを考える

【Python】TwitterのAPIを使ってダイレクトメッセージを送る

f:id:tadaken3:20181130142629p:plain こんにちは!
タダケン(@tadaken3)です。

今回はTwitterのAPIを使って、Pythonでダイレクトメッセージを送る方法についてまとめました。 TwitterのDMが仕様変更になったらしく、MENTAから相談があったので、ブログにも掲載することにしました。

事前準備

Twitter APIを利用するためには、Twitter Developerアカウントが必要です。以下の記事を参考にDeveloperアカウントの申請をしてみてください。

masatoshihanai.com

また、Twitterにスクリーンネーム(ボクの場合@tadaken3)とは別にシステムで使用するためのユーザーIDが付与されています。DMを送付するにはユーザーIDが必要となりますので、以下のサイトなどを、サンプルコードでDMをお送りたい相手のユーザーIDを調べておいてください。

tik.dignet.info

サンプルコード

あとは以下のサンプルコードを使って送付します。コメントにそって、コンシューマーキーやユーザーID、メッセージを編集してください。

# coding: utf-8
import json
from requests_oauthlib import OAuth1Session

# コンシューマーキーなどをいれてください
CK = "CONSUMER_KEY" 
CS = "CONSUMER_SECRET"
AT = "ACCESS_TOKEN"
ATS = "ACCESS_TOKEN_SECRET"

twitter = OAuth1Session(CK, CS, AT, ATS)

headers = {'content-type': 'application/json'}
url = 'https://api.twitter.com/1.1/direct_messages/events/new.json'
target_id = "11111111" # ここに送付相手のidを入力しましす
message_text = "Hello World!" # ここにメッセージを書きます。

payload = {"event": 
          {"type": "message_create",
           "message_create": {
               "target": {"recipient_id": target_id }, 
               "message_data": {"text": message_text,} 
           }
          }
         }

payload = json.dumps(payload)

res = twitter.post(url,
                   headers=headers,
                   data=payload)
print (res)

こんな感じでDMが送付できれば成功です!

参考サイト

Overview — Twitter Developers