分散型ミニブログYayaka19のボットをC++で作る

本稿では分散型ミニブログ Yayaka19 のボットをC++で作る方法を解説する。Yayaka19が何であるかを知るには以下を読んでくれ。

実物は以下の場所にある。

あと、作ったボットの実物は以下。

ボットを作るということは、APIを叩くということだ。APIを叩くには、まずユーザーシークレットを取得する必要がある。ユーザーシークレットは、Yayaka19をブラウザで開き、メニューの「View my SECRET」を選ぶと表示される。表示されないときは「Update secret」を押す。以下、ユーザーシークレットを XXXXXX とする。実際にはもっと長い。

APIを叩く方法を学ぶため、まず curl コマンドで試す。なぜ wget でないかというと、wget は PUT メソッドを叩けないからだ。以下、サーバーは https://19.fubaiundo.org で、ユーザー名は hakabahitoyo とする。

curl \
  -o - \
  -X PUT \
  -d 'secret=XXXXXXXX=' \
  https://19.fubaiundo.org/api/users/hakabahitoyo

すると、以下のようなレスポンスが得られる。

{"user":{"name":"墓場人夜 (19.fubaiundo.org)","id":"hakabahitoyo"},"token":"YYYYYYYY","exp":1497182792}

トークンを YYYYYYYY とする。実際にはもっと長い。このトークンを使って、もう1発リクエストを放つ。

curl \
  -o - \
  -X POST \
  -H 'Authorization: Bearer YYYYYYYY' \
  -d 'text=私で残念でした!' \
  https://19.fubaiundo.org/api/users/hakabahitoyo/post

すると、「私で残念でした!」と投稿される。これはフリップフラッパーズ10話のココミネココナさん (の性欲) である。

あとは、これをC++でやっていく。libcurlpicojson.h を使う。実際にやっていったものが libyayaka にあるので、コードを見てほしい。というか、これからC++でYayaka19のボットを作る人は、libyayaka を結合すれば足りる。

libyayaka を使ってみた実例は yayaka19chu2bot などがある。これは 韜晦する夜の機械 の中身である。注意としては、リンクするとき -lcurl と -lyayaka が必要である。

補足としては、Yayaka19では、1個のアカウントで複数のユーザーを作ることができる。この仕様は、同じ作者の別のSNSである agoraful と同じである。ユーザーシークレットはアカウントごどではなくユーザーごとに作られる。ボットを作るときは、あらかじめ新しくユーザーを作るとよい。

広告

投稿者: Hakaba Hitoyo

墓場一夜