Was ist der TextBuilder?
DerTextBuilder ist eine Klasse, mit der Sie die vom Bluesky-AT-Protocol definierten facets (Rich-Text-Annotations) über Method-Chaining zusammenstellen.
Der Body eines Bluesky-Posts ist reiner Text. Um Mentions, Links und Hashtags anzuzeigen, muss neben dem Text ein facets-Array übermittelt werden, das jeweils Position (Byte-Offset) und Typ angibt. Der TextBuilder übernimmt diese Offset-Berechnung und den Array-Aufbau automatisch.
Einfache Textausgabe
TextBuilder::make()
Erzeugen Sie mitTextBuilder::make() eine Instanz mit optionalem Initialtext. Der Initialtext ist optional.
text()
Mittext() hängen Sie Text am Ende an.
newLine()
Fügt einen Zeilenumbruch hinzu. Übercount können Sie die Zeilenanzahl angeben (Default: 1).
toPost()
Wandelt dieTextBuilder-Instanz in einen Post-Record um. Kann direkt an Bluesky::post() übergeben werden.
Post::build()
Alternativ übergeben Sie eine Closure anPost::build(). Der Rückgabewert ist ein Post.
Mention (@mention) hinzufügen
Fügen Sie mit mention() eine Mention-Facette hinzu.
Automatische DID-Auflösung
Wenn Siedid weglassen, wird die DID automatisch aus dem Handle aufgelöst (Bluesky::resolveHandle() wird aufgerufen).
DID explizit angeben
Wenn die DID bekannt ist, können Sie den API-Aufruf vermeiden, indem Sie sie explizit übergeben.Link (URL) einbetten
Fügen Sie mitlink() eine Link-Facette hinzu.
uri weggelassen, wird text als URI verwendet.
Hashtags hinzufügen
Fügen Sie mittag() eine Hashtag-Facette hinzu.
Zusammengesetzte Texte
Kombinieren Sie mehrere Facetten für reichhaltige Post-Texte.Schreibweise mit Post::build()
Integration mit Posts
Kombination mit Bluesky::post()
Kombination mit dem Notification-Kanal
In der MethodetoBluesky() von BlueskyChannel können Sie Post::build() verwenden.
Facets automatisch erkennen
Es ist auch möglich,@mention, URLs und #hashtag im Text automatisch zu erkennen und facets zu setzen.
Eigene Facets hinzufügen
Mit der Methodefacet() können Sie ein beliebiges Facet-Array direkt hinzufügen.
Zeichenbegrenzung und Hinweise
Byte-Offsets und Graphemes
Der Facet-Index des AT Protocols wird in UTF-8-Byte-Offsets angegeben.TextBuilder berechnet die Byte-Anzahl intern über strlen().
Multi-Byte-Zeichen wie japanische Zeichen und Emojis verbrauchen pro Zeichen mehrere Bytes. Die Offsets ergeben sich daher aus der Byte-Anzahl, nicht aus der Zeichenanzahl.
Zeichenlimit für Posts
Bluesky-Posts sind auf maximal 300 Zeichen in Graphemes (angezeigte Zeichenanzahl) begrenzt. Da nicht in Bytes, sondern in Graphemes gerechnet wird, können Sie auch in Japanisch bis zu 300 Zeichen schreiben.TextBuilder selbst prüft die Zeichenanzahl nicht. Wenn Sie einen Post mit mehr als 300 Graphemes senden, gibt die AT-Protocol-API einen Fehler zurück.Methodenübersicht
Source: src/RichText/TextBuilder.php