Les commandes de canal lisent d’abord l’état actuel et convergent vers ce que vous demandez : répéter une commande qui a déjà pris effet réussit avec changed: false au lieu d’échouer ou de dupliquer.
hansa chat channels list # your channels
hansa chat channels browse # public channels you have not joined
hansa chat channels get --channel general # one channel by slug or ID
Créer et modifier des canaux
# Return "Marketing" and create it only if it does not exist yet
hansa chat channels ensure --name Marketing --type public
# Rename or change the type; a no-op when nothing changes
hansa chat channels set --channel marketing --name Marketing EU --type private
# Archive a channel (idempotent)
hansa chat channels archive --channel marketing
Les références utilisent le slug ou l’ID du backend, jamais une correspondance sur le nom affiché. Notez que renommer un canal change son slug — référencez le canal par ID dans vos scripts, ou résolvez-le à nouveau après un renommage.
Adhésion
hansa chat channels join --channel general # no-op when already a member
hansa chat channels leave --channel general # no-op when not a member
hansa chat channels members --channel general # list channel members
hansa chat channels invite --channel general --member 42
Messages directs
hansa chat channels dm --member 42
Renvoie le canal direct existant avec cet utilisateur ou le crée ; le backend considère cette opération comme idempotente.
État de lecture
La lecture des canaux et des messages ne change jamais ce qui compte comme lu. La seule commande qui le fait est :
hansa chat channels mark-read --channel general
Membres de l’espace de travail
hansa chat members list --query igor # search members by text
hansa chat members get --member 42 # one member by user ID