ダイレクトメッセージ関連

ダイレクトメッセージを操作する各機能について記す。これもまた個人的にまったく活用しない機能の一つだ。

POST direct_messages/new

POST direct_messages/new はダイレクトメッセージを作成・送信する機能だ。パラメーターは送信先のユーザーとテキストしかない。

次に利用例を示す。

#!/usr/bin/env python

# Demonstration POST direct_messages/new
# See https://dev.twitter.com/rest/reference/post/direct_messages/new

from secret import twitter_instance
from json import dump
import sys

tw = twitter_instance()

# [1]
response = tw.direct_messages.new(
    screen_name='showa_yojyo',
    text='いい感じでモジャってますね。')

# [2]
dump(response, sys.stdout, ensure_ascii=False, indent=4, sort_keys=True)
  • [1] 自分宛てにダイレクトメッセージを送信する。

  • [2] 実行結果を出力する。

次に実行例を示す。

bash$ ./direct_messages-new.py
{
    "created_at": "Fri Dec 18 13:41:06 +0000 2015",
    "entities": {
        "hashtags": [],
        "symbols": [],
        "urls": [],
        "user_mentions": []
    },
    "id": 677846047566114819,
    "id_str": "677846047566114819",
    "recipient": {
        "contributors_enabled": false,
        "created_at": "Wed Jan 11 12:01:03 +0000 2012",
        "default_profile": false,
        "default_profile_image": false,
        "description": "実は電子の世界の人で現実には存在しない。",
        "entities": {
            "description": {
                "urls": []
            },
            "url": {
                "urls": [
                    {
                        "display_url": "github.com/showa-yojyo",
                        "expanded_url": "https://github.com/showa-yojyo",
                        "indices": [
                            0,
                            23
                        ],
                        "url": "https://t.co/YxrYqoZQ1r"
                    }
                ]
            }
        },
        "favourites_count": 701,
        "follow_request_sent": false,
        "followers_count": 24,
        "following": false,
        "friends_count": 0,
        "geo_enabled": false,
        "has_extended_profile": false,
        "id": 461058152,
        "id_str": "461058152",
        "is_translation_enabled": true,
        "is_translator": false,
        "lang": "ja",
        "listed_count": 2,
        "location": "東京都区内",
        "name": "プレハブ小屋",
        "notifications": false,
        "profile_background_color": "FFFFFF",
        "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/678214720462020608/70eusxt6.png",
        "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/678214720462020608/70eusxt6.png",
        "profile_background_tile": true,
        "profile_banner_url": "https://pbs.twimg.com/profile_banners/461058152/1450531542",
        "profile_image_url": "http://pbs.twimg.com/profile_images/678206878820642816/7o08Gvb9_normal.png",
        "profile_image_url_https": "https://pbs.twimg.com/profile_images/678206878820642816/7o08Gvb9_normal.png",
        "profile_link_color": "FF1493",
        "profile_sidebar_border_color": "FFFFFF",
        "profile_sidebar_fill_color": "DDEEF6",
        "profile_text_color": "333333",
        "profile_use_background_image": true,
        "protected": false,
        "screen_name": "showa_yojyo",
        "statuses_count": 7407,
        "time_zone": "Tokyo",
        "url": "https://t.co/YxrYqoZQ1r",
        "utc_offset": 32400,
        "verified": false
    },
    "recipient_id": 461058152,
    "recipient_id_str": "461058152",
    "recipient_screen_name": "showa_yojyo",
    "sender": {
        ...
    },
    "sender_id": 461058152,
    "sender_id_str": "461058152",
    "sender_screen_name": "showa_yojyo",
    "text": "いい感じでモジャってますね。"
}

GET direct_messages/show

GET direct_messages/show は既存のダイレクトメッセージの情報を取得する機能だ。先述のように ID を指定してメッセージを取り扱う。

次に利用例を示す。先ほどのメッセージの情報を得る。

#!/usr/bin/env python

# Demonstration GET direct_messages/show
# See https://dev.twitter.com/rest/reference/get/direct_messages/show

from secret import twitter_instance
from json import dump
import sys

tw = twitter_instance()

# [1]
response = tw.direct_messages.show(_id=677846047566114819)

# [2]
dump(response, sys.stdout, ensure_ascii=False, indent=4, sort_keys=True)
  • [1] PTT ルールにより、公式のパラメーター名が id の場合は _id と書き換えて指定する必要がある。

  • [2] 実行結果を出力する。

実行結果例は上述の POST direct_messages/new の例と同様なので省略する。

GET direct_messages

GET direct_messages は自分へ送られたダイレクトメッセージを取得する機能だ。基本的にはツイート取得系のインターフェイスと同じパラメーターを受け付ける。ただし、取得可能なメッセージ数の上限が 200 件と決まっている(本当なのか)。

次に利用例を示す。

#!/usr/bin/env python

# Demonstration GET direct_messages
# See https://dev.twitter.com/rest/reference/get/direct_messages

from secret import twitter_instance
from json import dump
import sys

tw = twitter_instance()

# [1]
response = tw.direct_messages(
    include_entities=False, skip_status=True)

# [2]
dump(response, sys.stdout, ensure_ascii=False, indent=4, sort_keys=True)
  • [1] 通信データ量をなるべく小さくするようなパラメーターを与えてリクエストを送信する。

  • [2] 実行結果を出力する。

実行結果例は上述の GET direct_messages/sent の例と同様なので省略する。

GET direct_messages/sent

GET direct_messages/sent は自分が送ったダイレクトメッセージを取得する機能だ。最大 800 件。

次に利用例を示す。

#!/usr/bin/env python

# Demonstration GET direct_messages/sent
# See https://dev.twitter.com/rest/reference/get/direct_messages/sent

from secret import twitter_instance
from json import dump
import sys

tw = twitter_instance()

# [1]
response = tw.direct_messages.sent(include_entities=False)

# [2]
dump(response, sys.stdout, ensure_ascii=False, indent=4, sort_keys=True)
  • [1] これがダイレクトメッセージのヘビーユーザーならば、オプション since_id, max_id, page 等を駆使してページング処理をする。しかし私はダイレクトメッセージ箱が空なので、これでよい。

  • [2] 実行結果を出力する。

POST direct_messages/destroy

POST direct_messages/destroy はダイレクトメッセージを削除する機能だ。ダイレクトメッセージオブジェクトには一意な ID が与えられているので、この ID を指定してメッセージを取り扱う。

次に利用例を示す。

#!/usr/bin/env python

# Demonstration POST direct_messages/destroy
# See https://dev.twitter.com/rest/reference/post/direct_messages/destroy

from secret import twitter_instance
from json import dump
import sys

tw = twitter_instance()

# [1]
response = tw.direct_messages.destroy(
    _id=677846047566114819,
    include_entities=False)

# [2]
dump(response, sys.stdout, ensure_ascii=False, indent=4, sort_keys=True)
  • [1] PTT ルールにより、公式のパラメーター名が id の場合は _id と書き換えて指定する必要がある。

  • [2] 実行結果を出力する。

実行結果例は上述の POST direct_messages/new の例と同様なので省略する。