Aller au contenu
Dialova

Documentation IRC · Avancé

Message tags : les métadonnées des messages IRC

Les message tags ajoutent des métadonnées avant le reste d’un message IRC. Ils peuvent porter une heure, un compte ou une référence de lot. Un tag inconnu peut être ignoré dans l’interface, mais son format doit être correctement analysé.

Équipe Dialova · Vérifié le

Lire la zone de tags #

Trame serveur avec deux tags
@time=2026-10-29T10:00:00.000Z;account=alice :Alice!u@cloak.example PRIVMSG #atelier :Bonjour

La zone commence par @ et s’arrête au premier espace non échappé. Les tags sont séparés par ;. Chaque clé peut avoir une valeur après =. Leur ordre ne porte pas de sens et les clés sont sensibles à la casse. Ne découpez pas les paramètres du message avant d’avoir isolé cette zone.

Décoder les valeurs une seule fois #

Séquence sur le filValeur décodée
\:Point-virgule
\sEspace
\\Antislash
\rRetour chariot
\nSaut de ligne

L’échappement concerne la valeur du tag, pas le texte du message entier. Les valeurs de tags sont en UTF-8. Une valeur vide et une absence de valeur sont équivalentes dans ce mécanisme ; une interface ne doit pas inventer une différence sémantique.

La capacité générique et les extensions spécialisées #

message-tags annonce une prise en charge du format complet et permet notamment les tags réservés aux clients ainsi que TAGMSG. Des extensions comme server-time, account-tag et batch reposent aussi sur le format des tags, sans exiger que leur négociation soit confondue avec celle de la capacité générique.

Tag client fictif : aucun effet fonctionnel supposé
C: CAP REQ :message-tags
S: :irc.example CAP Alice ACK :message-tags
C: @+example.org/note=bonjour\sici TAGMSG #atelier

Le préfixe + désigne un tag client. Il ne transforme pas une affirmation du client en information certifiée par le serveur. Un compte annoncé par le serveur et un texte arbitraire envoyé par un participant doivent rester distingués.

Des métadonnées bornées, pas des messages infinis #

Les tags ont un budget de taille distinct de la partie historique du message. Leur présence ne permet pas de considérer le texte de PRIVMSG comme illimité. Les tags inconnus, les séquences invalides et les clés répétées se traitent selon la spécification ; évitez un parseur qui rejette toute évolution ou conserve indéfiniment des données non bornées.

Sources et vérification

Les exemples utilisent des pseudos et domaines fictifs, sauf les points de connexion explicitement documentés. Les extensions et réglages propres à un réseau sont signalés dans le texte.