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.
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.
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.
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?
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.
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