Os comandos de canal leem primeiro o estado atual e convergem para o que pede:
repetir um comando que já surtiu efeito termina com sucesso e com
changed: false, em vez de falhar ou 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
Criar e alterar canais
# 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
As referências utilizam o slug ou o ID do backend, nunca a correspondência pelo nome apresentado. Tenha em atenção que renomear um canal altera o seu slug — faça referência ao canal pelo ID nos scripts, ou volte a resolvê-lo depois de uma renomeação.
Adesão
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
Mensagens diretas
hansa chat channels dm --member 42
Devolve o canal direto existente com esse utilizador ou cria-o; o backend trata esta operação como idempotente.
Estado de leitura
Ler canais e mensagens nunca altera o que conta como lido. O único comando que o faz é:
hansa chat channels mark-read --channel general
Membros do workspace
hansa chat members list --query igor # search members by text
hansa chat members get --member 42 # one member by user ID