Skip to main content

Was ist der TextBuilder?

Der TextBuilder 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 mit TextBuilder::make() eine Instanz mit optionalem Initialtext. Der Initialtext ist optional.

text()

Mit text() hängen Sie Text am Ende an.

newLine()

Fügt einen Zeilenumbruch hinzu. Über count können Sie die Zeilenanzahl angeben (Default: 1).

toPost()

Wandelt die TextBuilder-Instanz in einen Post-Record um. Kann direkt an Bluesky::post() übergeben werden.

Post::build()

Alternativ übergeben Sie eine Closure an Post::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 Sie did 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.
Wenn Sie in der Produktion häufig Mentions verwenden, können Sie die DIDs cachen, um API-Aufrufe zu reduzieren.
Fügen Sie mit link() eine Link-Facette hinzu.
Wird uri weggelassen, wird text als URI verwendet.

Hashtags hinzufügen

Fügen Sie mit tag() 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 Methode toBluesky() 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.
detectFacets() arbeitet regex-basiert. Wenn Sie Links garantiert setzen möchten, ist es sicherer, link(), mention() und tag() explizit zu verwenden.

Eigene Facets hinzufügen

Mit der Methode facet() 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

Zuletzt geändert am 13. Juli 2026