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と言うキャプションになっているスクショでは
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では現在の日付を別の書き方(今回は省略して、この記事を書いている次の日あたりに、後ろの方に追記します)に変えて
https://bsky.social/xrpc/com.atproto.repo.createRecord
にPOSTします(3も見てね)
Authorization で Bearer {accessJwt}を
repoがハンドル、collectionが種類(ここではapp.bsky.feed.post)
recordでキャプション4のようになります
$typeでまた種類指定、textで内容、createdAtでさっき直した日付
でPOSTすると投稿できます。
これらに色々つけ加えて0:00に動くように指定したらカウントダウンBotの完成です。
これらを変えたら他にももっとできるかも知れません。
お疲れ様でした。
終わり
どうでしたでしょうか、あんまり引用元もかけずにすいません。
今後も似たようなのをぼちぼち書いていきたいです。
(書くのが下手で少し適当なのは内緒!)