【TwitterAPI】超簡単！tweepyを使ってDM送ってみた〜

# 今回やること〜
tweepyの「send_direct_message」メソッドを使って特定のユーザーにダイレクトメッセージを送ります！
![スクリーンショット 2022-11-04 10.06.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2586059/3ce48197-6a2a-3c47-7d50-24749647b1d7.png)
TwitterAPIの取得がまだの人はこちらから先にご覧ください

https://qiita.com/Naoya_pro/items/f1bdba5260bda054f6d2

# やり方〜
では早速やっていきましょう！
まず、大前提として他の人に迷惑をかけないようにしましょう！なので、今回のTwitterAPIを登録しているアカウント以外にもう1つアカウントを用意してください！
（DMの送り先にするためです！無い人は誰か友達に協力してもらうか新しくアカウントを作っときましょ〜）

次に
「send_direct_message」の使い方です！
```python:send_direct_message.py
api.send_direct_message(recipient_id='**************',text='Hello World')
```
- recipient_id
    - 送り先のユーザーのID
- text
    - 送る内容
    - 10,000文字まで
です！！
[詳しくはこちら](https://docs.tweepy.org/en/stable/api.html#tweepy.API.send_direct_message)

次にユーザーIDの調べ方です！
これも複数のやり方が想像できますが、今回は「search_users」と言うメソッドを使って探してみようと思います！
```python:search_users.py
users = api.search_users(q="**********")
```
- q
    - 検索キーワード
[詳しくはこちら](https://docs.tweepy.org/en/stable/api.html#tweepy.API.search_users)

```python:search_users.py
import tweepy

api_key = "**********"
api_key_secret = "**********"
access_token = "**********"
access_token_secret = "**********"

auth = tweepy.OAuthHandler(api_key, api_key_secret)
auth.set_access_token(access_token, access_token_secret)

api = tweepy.API(auth, wait_on_rate_limit=True)
# TwitterAPI認証完了

users = api.search_users(q=str(input("ユーザーを検索しよう！ >>>>")))

for user in users[:10]:
    print('-------------')
    print(f'ユーザーID = {user.id}')
    print(f'ユーザー名 = {user.screen_name}')
    print(f'アカウント名 = {user.name}')
    print(f'自己紹介文 = {user.description}')
    print(f'フォロー数 = {user.friends_count}')
    print(f'フォロワー数 = {user.followers_count}')
    print('-------------')
```
このコードを実行して送り先のユーザーIDを調べましょう！ユーザー名とかフォロワー数とか確認して必ず間違わないようにしましょう！！

ユーザーIDがわかったらあとは簡単です！！！
```python:send_direct_message.py
import tweepy

api_key = "**********"
api_key_secret = "**********"
access_token = "**********"
access_token_secret = "**********"

auth = tweepy.OAuthHandler(api_key, api_key_secret)
auth.set_access_token(access_token, access_token_secret)

api = tweepy.API(auth, wait_on_rate_limit=True)
# TwitterAPI認証完了

api.send_direct_message(recipient_id='***************',text='Hello World')
```

これを実行するとDMが送られていることが確認できます！！
![スクリーンショット 2022-11-04 10.06.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2586059/3ce48197-6a2a-3c47-7d50-24749647b1d7.png)

以上です！おわり〜〜〜
うまく行かなかった人は多分権限かなと思います！
[このURL](https://developer.twitter.com/en/portal/projects/1587422058967076865/apps/25905827/settings)の「Projects & Apps」の「User authentication settings」を確認してみましょ〜！

# ラストちょっとおまけ
```python:get_dm.py
import tweepy
import datetime

api_key = "**********"
api_key_secret = "**********"
access_token = "**********"
access_token_secret = "**********"

auth = tweepy.OAuthHandler(api_key, api_key_secret)
auth.set_access_token(access_token, access_token_secret)

api = tweepy.API(auth, wait_on_rate_limit=True)
# TwitterAPI認証完了

direct_messages = api.get_direct_messages()
for dm in direct_messages:
    send_user_id = dm.message_create['sender_id']
    target_user_id = dm.message_create['target']['recipient_id']
    send_user = api.get_user(user_id=send_user_id)
    target_user = api.get_user(user_id=target_user_id)
    time_stamp = int(dm.created_timestamp)/1000
    print('------------')
    print(f'ID:{dm.id}')
    print(f"誰から:{send_user.name}")
    print(send_user.screen_name)
    print(f"誰に:{target_user.name}")
    print(target_user.screen_name)
    print(f"内容:{dm.message_create['message_data']['text']}")
    print(f'タイムスタンプ:{datetime.datetime.fromtimestamp(time_stamp)}')
```
過去30日間の全てのDMの内容を取得しています！
これで誰に何を送ったかわかります！

そんじゃあーばいちゃ〜〜〜〜



次何やろかな、、、、