どうもイトサル(@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つを渡す
リンク
リンク
コメント