こんにちは @ketancho です。
X(旧: Twitter) において、1つの情報を2つの Post に分けて時間差で投稿するようなことを実装したく、X API を改めて調べているときのメモを記録しておきます。
まずはシンプルに返信先の tweet_id
が分かる前提で、そのポストに返信していきます。
POST /2/tweets | Docs | Twitter Developer Platform こちらの API Doc を参考にすると、
# 返信したい tweet_id を含めて payload を作る payload = {'text': text, 'reply': {'in_reply_to_tweet_id': "1864807079866962021"}} response = oauth.post( "https://api.twitter.com/2/tweets", json=payload, )
と、payload に tweet_id を渡してあげるだけ、という非常にシンプルなものでした。
書いたコード
import json import os from requests_oauthlib import OAuth1Session from datetime import datetime, timedelta, timezone import boto3 ssm_client = boto3.client('ssm') oauth = None def lambda_handler(event, context): init() text = 'おはようございます:)' response = tweet(text) print(response.json()) def init(): response = ssm_client.get_parameter( Name='/credentials/twitter', WithDecryption=True ) twitter_parameters = json.loads(response['Parameter']['Value']) consumer_key = twitter_parameters["consumer_key"] client_secret = twitter_parameters["client_secret"] access_token = twitter_parameters["access_token"] access_token_secret = twitter_parameters["access_token_secret"] global oauth oauth = OAuth1Session(consumer_key, client_secret, access_token, access_token_secret) def tweet(text): # ここに返信したい tweet_id を含めて payload を作る payload = {'text': text, 'reply': {'in_reply_to_tweet_id': "1864807079866962021"}} response = oauth.post( "https://api.twitter.com/2/tweets", json=payload, ) if response.status_code != 201: raise Exception( "[Error] {} {}".format(response.status_code, response.text) ) return response
結果
いい感じです。いったん、今日はここまで。