Los comandos de canal leen primero el estado actual y convergen en lo que usted pide:
repetir un comando que ya surtió efecto termina con éxito con changed: false
en lugar de fallar o duplicar.
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
Crear y modificar canales
# 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
Las referencias usan el slug o el ID del backend, nunca la coincidencia por nombre visible. Tenga en cuenta que renombrar un canal cambia su slug: haga referencia al canal por ID en los scripts, o resuélvalo de nuevo después de un cambio de nombre.
Membresía
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
Mensajes directos
hansa chat channels dm --member 42
Devuelve el canal directo existente con ese usuario o lo crea; el backend trata esta operación como idempotente.
Estado de lectura
Leer canales y mensajes nunca cambia lo que cuenta como leído. El único comando que lo hace es:
hansa chat channels mark-read --channel general
Miembros del espacio de trabajo
hansa chat members list --query igor # search members by text
hansa chat members get --member 42 # one member by user ID