Naar de inhoud
Dialova

IRC-documentatie · Expert

Message tags: metadata in IRC-berichten

Message tags voegen metadata vóór de rest van het bericht toe, zoals tijd, account of groepsverwijzing. Een onbekende tag mag in de interface worden genegeerd, maar het formaat moet juist worden ontleed.

Dialova-team · Gecontroleerd op

Het taggedeelte lezen #

Serverbericht met twee tags
@time=2026-10-29T10:00:00.000Z;account=alice :Alice!u@cloak.example PRIVMSG #atelier :Bonjour

Het gedeelte begint met @ en eindigt bij de eerste niet-geëscapete spatie. ; scheidt tags. Een sleutel kan na = een waarde hebben. Volgorde heeft geen betekenis en sleutels zijn hoofdlettergevoelig. Isoleer dit gedeelte vóór je parameters splitst.

Waarden één keer decoderen #

Reeks op de verbindingGedecodeerde waarde
\:Puntkomma
\sSpatie
\\Backslash
\rCarriage return
\nNieuwe regel

Escaping geldt voor de tagwaarde, niet de hele berichttekst. Tagwaarden gebruiken UTF-8. Lege en ontbrekende waarden zijn hier gelijkwaardig. Verzin geen betekenisverschil in de interface.

De algemene capability en specifieke uitbreidingen #

message-tags geeft volledige formaatondersteuning en maakt onder meer clienttags en TAGMSG mogelijk. server-time, account-tag en batch gebruiken ook het tagformaat, maar hun onderhandeling is niet dezelfde als die van de algemene capability.

Fictieve clienttag zonder verondersteld functioneel effect
C: CAP REQ :message-tags
S: :irc.example CAP Alice ACK :message-tags
C: @+example.org/note=bonjour\sici TAGMSG #atelier

+ markeert een clienttag. Dat maakt een clientbewering geen door de server bevestigde informatie. Onderscheid een serveraccount van willekeurige deelnemerstekst.

Begrensde metadata, geen eindeloze berichten #

Tags hebben een eigen groottebudget naast het historische berichtgedeelte. Daardoor is PRIVMSG-tekst niet onbeperkt. Verwerk onbekende tags, ongeldige reeksen en herhaalde sleutels volgens de specificatie. Vermijd een parser die iedere uitbreiding weigert of onbegrensd gegevens bewaart.

Bronnen en controle

De voorbeelden gebruiken fictieve gebruikersnamen en domeinen, behalve waar verbindingspunten uitdrukkelijk zijn gedocumenteerd. Uitbreidingen en netwerkspecifieke instellingen worden in de tekst aangegeven.