#
を含めて65文字のハッシュタグをBlueskyに投稿するTypeScriptコードを示します。コードでは、ByteSlice
のbyteStart
とbyteEnd
にそれぞれ0
と65
を設定し、tag
に(#
無しの)64文字の文字列を設定した上で、text
に(#
ありの)65文字の文字列を設定しています。
なお、service
やidentifier
やpassword
の値は、公式ドキュメントの例をそのまま使っています。適宜、書き換えて使ってください。
@ioriayaneさんのコメントを参考にして作成しました。ただし、コードに問題があった場合、責任は@mnoguにあります。
import { BskyAgent, Facet } from '@atproto/api'
const agent = new BskyAgent({
service: 'https://bsky.social'
})
const main = async () => {
await agent.login({
identifier: 'example.com',
password: 'hunter2'
})
const tag = '1234567890'.repeat(6) + '1234'
const byteSlice = {
byteStart: 0,
byteEnd: tag.length + 1,
}
const facets: Facet[] = [
{
index: byteSlice,
features: [{
tag: tag,
$type: 'app.bsky.richtext.facet#tag',
}],
},
]
await agent.post({
text: `#${tag}`,
createdAt: new Date().toISOString(),
facets: facets,
})
}
main().then()
このコードでは、#
を除くとハッシュタグが数字のみで構成されています。例えばRichText
を使うときなどに、数字のみだとハッシュタグとして扱われない可能性があります。扱われなかった場合は、1234567890
を例えばa234567890
に変えると動くかもしれません。