【Twitter APIの使い方】DMを送信する

API

どうもイトサル(@itosaru)です。

Twitter APIを使ってDMを送ることは可能でしょうか?

結論からいうと可能です。

しかしTwitter API v2にはDMを送信するメソッドがないため、v1の機能を使う必要があります。

この記事ではTwitter v1の機能でDMを送る方法についてお伝えします。

なお、v1のメソッドを使うためにはアクセスレベルが「Elevated」である必要があります。

「Elevated」は申請が必要なので、詳細はこちらの記事をご覧ください。

【2023年最新】Twitter API Elevatedレベルの申請方法について図解!
Twitter APIはTwitterアカウントを持っていれば誰でも使うことができますが、DM機能などについてはデフォルトだと使用制限されているため、アクセスレベルを上げる必要があります。この記事では上位権限のElevatedの申請手順について説明します。

DM送信メソッド

Twitter API v1を使ってDMを送信するためには

send_direct_message()

を使います。

引数としてTwitterのIDとDMで送信する文章の2つを渡す必要があります。

なお、DMを送信できる相手は自分がフォローしているユーザーのみです。

フォローしていないユーザーにはDMが送信できないのでご注意ください。

サンプルプログラム

Twitter API v2とv1を併用し、スクリーンネーム(Twitter上の@からはじまるid)を入力して「Hello world!」というDMを送信するプログラムを作りました。

それがこちらです。

import tweepy

# Twitter Deverloper Portalで取得したAPIキーをコーテション('')の間にそれぞれ入れる
API_KEY = 'API Key'
API_KEY_SECRET = 'API Key Secret'
# Twitter Deverloper Portalで取得したベアラートークンをコーテション('')の間に入れる
BEARER_TOKEN = 'Bearer Token'
# Twitter Deverloper Portalで生成したアクセストークンをコーテション('')の間にそれぞれ入れる
ACCESS_TOKEN = 'Access Token'
ACCSESS_TOKEN_SECRET = 'Access Token Secret'

#リファレンスの内容に沿って入力(https://docs.tweepy.org/en/stable/client.html)
client = tweepy.Client(bearer_token = BEARER_TOKEN, consumer_key = API_KEY, consumer_secret = API_KEY_SECRET, access_token = ACCESS_TOKEN, access_token_secret = ACCSESS_TOKEN_SECRET)

print("スクリーンネームを入力してください")
username = input()

user = client.get_user(username=username, user_fields = ["created_at","description","url"])
user_data = user.data
user_id = user_data.id

#twitter認証
auth = tweepy.OAuthHandler(consumer_key = API_KEY, consumer_secret = API_KEY_SECRET)
auth.set_access_token(key = ACCESS_TOKEN, secret = ACCSESS_TOKEN_SECRET)
api = tweepy.API(auth)

print(api)

api.send_direct_message(recipient_id=user_id,text='Hello world!')

Twitterの表示名から裏で管理しているTwitter IDを取得し、そのIDを使ってDMを送信しています。

まとめ

この記事ではTwitter APIを使ってDMを送信する方法についてお伝えしました。

今回の内容のまとめです。

  • DM送信はTwitter API v1のメソッドが使える「Elevated」アクセスレベルが必要
  • MD送信は「send_direct_message()」を使う
  • パラメーターはTwitter IDと送信するメッセージの2つを渡す

コメント

タイトルとURLをコピーしました