Grupos dinâmicos do Discourse

:information_source: Resumo Gerenciar automaticamente a associação de grupos
:hammer_and_wrench: Link do Repositório \u003chttps://github.com/communiteq/discourse-dynamic-groups\u003e
:open_book: Guia de Instalação Como instalar plugins no Discourse

:warning: Este plugin deve ser considerado beta :warning:

Funcionalidades

Comunidades do Discourse frequentemente precisam automatizar a associação de grupos com base em condições como posse de distintivos ou associações de grupos existentes.

Casos de uso comuns incluem:

  • Usuários que não estão no grupo ‘assinantes’

  • Usuários não banidos de postar em Marketplace

  • Usuários no TL0 ou TL1, mas não no TL2

  • Usuários que completaram o tutorial de novos usuários ou são membros há mais de um ano

  • Usuários pertencentes a client_1, client_2 ou client_3 e não são estagiários

Anteriormente, resolver isso exigia scripts personalizados que sincronizavam grupos periodicamente. O plugin Dynamic Groups elimina essa necessidade.

Este plugin introduz um campo de expressão booleana nas configurações do grupo, permitindo que os administradores definam regras que determinam dinamicamente a associação ao grupo.

Exemplos:

  • usuários que não estão no grupo ‘assinantes’
    trust_level_0 AND NOT subscribers

  • usuários que não estão banidos de postar em Marketplace
    trust_level_2 AND NOT banned_users

  • usuários que estão no TL0 ou TL1, mas não no TL2
    trust_level_0 AND NOT trust_level_2

  • usuários que completaram o tutorial de novos usuários ou são membros há mais de um ano
    badge:certified OR badge:anniversary

  • usuários que pertencem ao cliente 1, 2 ou 3 e não são estagiários
    (client_1 OR client_2 OR client_3) AND NOT interns

Configuração

Após o plugin ser instalado e habilitado, uma nova aba aparecerá na interface de administração de grupos:

Quando você insere ou atualiza a expressão booleana, o sistema levará alguns momentos para preencher o grupo com os usuários correspondentes. A partir desse ponto, a associação ao grupo será atualizada automaticamente conforme o status do usuário muda.

Importante:
Quando uma regra é definida, o grupo é marcado como automático, desabilitando alterações manuais de membros. Para reverter o grupo para gerenciamento manual, basta limpar o campo de expressão. Os membros existentes permanecerão, e você recuperará o controle manual.

24 curtidas

Uau! Trabalho incrível, Richard!

Isso preenche uma grande lacuna no gerenciamento de grupos dentro do Discourse. Totalmente satisfeito e ansioso para usá-lo bastante.

Eu o usarei principalmente para habilitar subgrupos funcionais.

3 curtidas

Definitivamente uma adição bem-vinda aos recursos do Discourse!

1 curtida

7 postagens foram mescladas em um tópico existente: Apenas a primeira entrada funciona com campos de Multiselect quando o gatilho Usuário entrou pela primeira vez é usado

Olá, obrigado por desenvolver este plugin super útil!

Atualmente, estou usando o Discourse Dynamic Groups para adicionar automaticamente todos os usuários não anônimos a um grupo especial. Minha expressão booleana é:

NOT anonymous_users
Comportamento esperado:
Quando um novo usuário se registra (que não pertence ao grupo anonymous_users), ele deve ser automaticamente adicionado a este grupo, sem qualquer intervenção manual.

Comportamento atual:
Novos usuários registrados não são adicionados imediatamente ao grupo. Eles só são adicionados depois que eu salvo novamente a expressão booleana nas configurações do grupo.
Isso significa que o grupo não é atualizado automaticamente à medida que os usuários se juntam, a menos que eu acione uma sincronização manual.

1 curtida

Hmm… boa observação. E eu concordo que esse deveria ser o comportamento esperado.

De um ponto de vista técnico, o plugin só reavaliará a participação no grupo em duas condições diferentes:

  1. Quando a expressão booleana nas configurações do grupo é salva
  2. Se um usuário é adicionado ou removido de um grupo mencionado na expressão booleana.

Quando um novo usuário se registra, nenhum dos dois casos ocorre.

Você pode tentar mudar a expressão para trust_level_0 AND NOT anonymous_users e me dizer se isso resolve o problema?

3 curtidas

Olá,

Quando tento usar a expressão

trust_level_0 AND NOT anonymous_users

Recebo o erro:
Unknown keyword, group or badge: 'anonymous_users'

Se eu mudar o nome do grupo para o meu grupo real, por exemplo:

trust_level_0 AND NOT estagiários

Ainda recebo:
Unknown keyword, group or badge: 'estagiários'

Verifiquei duas vezes e estou copiando o nome exclusivo do grupo diretamente da página de administração do grupo, então não há erros de digitação.
Existe algo que eu possa estar perdendo, ou há algo mais que eu precise configurar para que os grupos personalizados sejam reconhecidos na expressão?

4 curtidas

Obrigado por reportar isso.

Ao tentar reproduzir, identifiquei dois bugs e um deles provavelmente te atingiu. Você pode atualizar o plugin para a versão mais recente 59640f1 e ver se isso resolve o problema?

O plugin ainda não lida muito bem com a renomeação de grupos. Se você renomear um grupo, você deve salvar as regras de todos os grupos que dependem dele (apenas insira um espaço após a expressão booleana e remova-o novamente para habilitar o botão Salvar). Isso será resolvido em uma versão posterior.

3 curtidas

Isso está usando seu plugin Category restrictor ou funciona independentemente dele?

plugin incrível para preencher lacunas.

Funciona independentemente.

1 curtida

Olá,

Estou usando o plugin Dynamic Groups e defini meus critérios como:

trust_level_0 AND NOT anon_group

No entanto, notei que usuários com trust_level_1 que não estão no anon_group também estão sendo adicionados a este grupo dinâmico.

Você poderia confirmar se este é o comportamento esperado ou se é um bug?

Usuários com nível de confiança 1 também são membros do grupo de nível de confiança 0. Portanto, o comportamento é esperado. Você poderia excluir o grupo de nível de confiança 1 para obter apenas usuários TL0. Semelhante ao exemplo da primeira postagem

2 curtidas

Obrigado pelo esclarecimento