#を含めて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に変えると動くかもしれません。