見出し画像

Blueskyで日付カウントダウンBOTを作った話

こんにちは おかかです。
結構Noteを開いたのは久しぶりで、なんか書いてみようと思い書いてます。


まず簡単にBlueskyとはなんぞやほい

BlueskyとはSNSです!(?)
BlueskyはTwitterの元CEOが作っていた気がします。結構開発者などに優しくて使いやすいNPMモデルやHTTP APIなどがありとても簡単に作れます。

自分は何を作ったのか

自分はBlueskyのBotがまだ少ないことを知り、少し前にTwitter(X?そんなもん知らん)で見た日付カウントダウンBot(ユーザ名調べられませんでした。すいません)を作りました。

どのように作ったか

工程1(準備編

まずはコードを動かすためのサーバーを探しました、ですが学生と言うものそんなにお金はありません、なのでローカルで動かすことにしました。ですがローカルで動かすと言っても、自分はスマホしか持っていません!(これを今書いているのもスマホです。)なのでiPhoneのショートカットと言うアプリ(上の埋め込みですね)で動かしています。こんなのでもとても簡単にできるんですよ!

工程2 (材料編)

食材(?)
①iPhoneショートカットアプリ
②Blueskyのアカウントとアプリパスワード
何と奥さんこれだけですよ!(???)

工程3 (作る編)

①Bluesky側での準備
ハンドル(画像では@count.jp.okakey.comと出てるやつ)とアプリパスワード

黄色い部分がハンドル
アプリパスワード

ここの作り方はカットします。(書くのがあれだったのは内緒です)
アプリパスワードは1回閉じたら出てこないのでスクショなりメモっときましょう。

②ショートカットアプリ側の準備

1

1と言うキャプションになっているスクショでは

https://bsky.social/xrpc/com.atproto.server.createSession

上のURLにidentiferでハンドルpasswordでアプリパスワードをPOSTします。
すると次のような返答が返ってきます(セキュリティー情報系はNoneに置き換えています)

{
   "didDoc": {
      "id": "did:plc:xpycib344vtusbg6yg4vblym",
      "alsoKnownAs": [
         "at://count.jp.okakey.com"
      ],
      "@context": [
         "https://www.w3.org/ns/did/v1",
         "https://w3id.org/security/multikey/v1",
         "https://w3id.org/security/suites/secp256k1-2019/v1"
      ],
      "verificationMethod": [
         {
            "id": "None",
            "publicKeyMultibase": "None",
            "type": "Multikey",
            "controller": "None"
         }
      ],
      "service": [
         {
            "id": "#atproto_pds",
            "type": "AtprotoPersonalDataServer",
            "serviceEndpoint": "https://russula.us-west.host.bsky.network"
         }
      ]
   },
   "handle": "count.jp.okakey.com",
   "did": "did:plc:xpycib344vtusbg6yg4vblym",
   "accessJwt": "None",
   "refreshJwt": "None",
   "email": "count.jp@okakey.com",
   "emailConfirmed": true
}

上のコードの中から辞書を取得機能を使ってしたから4つ目のデータのaccessJwtと言うものを取り出します。

2

2では現在の日付を別の書き方(今回は省略して、この記事を書いている次の日あたりに、後ろの方に追記します)に変えて

https://bsky.social/xrpc/com.atproto.repo.createRecord

にPOSTします(3も見てね)

3

Authorization で Bearer {accessJwt}を
repoがハンドル、collectionが種類(ここではapp.bsky.feed.post)
recordでキャプション4のようになります

4

$typeでまた種類指定、textで内容、createdAtでさっき直した日付
でPOSTすると投稿できます。
これらに色々つけ加えて0:00に動くように指定したらカウントダウンBotの完成です。
これらを変えたら他にももっとできるかも知れません。
お疲れ様でした。

終わり

どうでしたでしょうか、あんまり引用元もかけずにすいません。
今後も似たようなのをぼちぼち書いていきたいです。
(書くのが下手で少し適当なのは内緒!)

この記事が気に入ったらサポートをしてみませんか?