Boa tarde. Eu tenho uma categoria de Compra/Venda/Troca no meu site que gostaria de restringir a postagem até que um membro “curta” o tópico das regras. Eu perguntei ao AI Bot, e ele me deu algumas instruções. No entanto, parece que isso requer o Discourse Automation, que só está disponível em planos hospedados.
Existe alguma maneira de fazer isso na minha plataforma auto-hospedada?
add-users-to-group: aceita um único grupo como entrada; usuários que aceitarem a política serão adicionados automaticamente a este grupo (quando a política for revogada manualmente ou se a versão da política for atualizada, o(s) usuário(s) será(ão) removido(s) do grupo)
Eu tive que habilitar o SQL de emblema e então criar um emblema que é atribuído quando alguém curte a postagem específica. Eu então criei um grupo que o Discord Automation atribui automaticamente com base em um usuário ter o emblema. Eu dei ao grupo “todos” apenas acesso de leitura à categoria para que eles só possam reagir. Eu dei ao grupo personalizado acesso total.
Caso mais alguém tenha interesse em fazer isso, aqui está um breve resumo do que eu fiz:
Primeiro, você precisa habilitar o Badge SQL através da CLI do seu servidor Discourse:
./launcher enter app
rails c
SiteSetting.enable_badge_sql = true
Em seguida, encontre o ID do tópico com o qual os membros devem interagir para obter o emblema. Na minha instância, o ID do tópico é 117
Em seguida, encontre o ID do tópico com o qual os membros devem interagir para obter o emblema. Na minha instância, o ID do tópico é 117
Crie seu Emblema Personalizado:
Admin > Emblemas > Novo
Nomeie o emblema como quiser (ex: Leitor de Regras B/S/T)
Escolha um tipo de emblema, ícone e forneça uma descrição
Se você seguiu o Passo 1, verá uma caixa de consulta onde poderá digitar uma consulta SQL. Cole esta consulta (altere p.topic_id = 117 para o ID do seu tópico):
SELECT DISTINCT ON (pa.user_id)
pa.user_id,
pa.post_id,
pa.created_at granted_at
FROM post_actions pa
JOIN posts p ON pa.post_id = p.id AND p.post_number = 1
WHERE pa.post_action_type_id = 2
AND p.topic_id = 117
AND (:backfill OR pa.post_id IN (:post_ids))
Certifique-se de que Executar consulta de revogação diariamente e Consulta visa posts estejam marcados.
O gatilho deve ser definido como Quando um usuário age em um post
Agora criamos a Automação
Primeiro crie um novo grupo para os membros serem adicionados. O meu está apenas nomeado bst_rules_agreed, e está configurado para que apenas proprietários de grupo e moderadores possam ver a afiliação. Não precisa ter nenhum efeito de Nível de Confiança.
Em seguida, vá para Plugins > Automação
Adicione uma nova automação
Escolha Afiliação de Grupo de Usuário Através de Emblema
Gatilho: Recorrente
Recorrência: Eu configurei para a cada 1 hora. Escolha o que faz sentido para você.
Escolha uma data de início
Opções de Script:
Emblema: Escolha o emblema que você criou acima
Grupo: Escolha o grupo que você criou acima
É isso. Você agora deve ter um sistema que garante que os membros concordaram com as regras da categoria antes de poderem postar na categoria.
Minha próxima exploração é ver se há uma maneira de ocultar todos os tópicos, exceto as regras, para todos que não estão naquele grupo. Mas, este sistema básico é bom o suficiente por enquanto.
Obrigado por este plugin! Eu estava procurando uma maneira de fornecer um sistema básico de emissão de tíquetes em nossa comunidade.
Também estou pensando em usar isso na minha categoria de Compra/Venda/Troca. No momento, configurei para que todos possam ler os tópicos, mas apenas pessoas em um grupo específico podem responder e criar. O fluxo de trabalho atual é: o membro reconhece que leu as regras curtindo a postagem. Depois de curtir a postagem, ele recebe um emblema personalizado. O Discourse Automate o adiciona ao grupo com base no emblema.
Isso impede que pessoas que não aceitaram as regras postem na categoria. No entanto, elas ainda podem ver/ler todas as postagens.
Então, funcionaria se eu remover todos da categoria e deixar apenas esse grupo personalizado na guia de segurança? Contanto que eu tenha postagens do grupo Administrador sempre visíveis, as pessoas que não estão no grupo personalizado ainda conseguirão ver e curtir as regras? Então, depois que elas curtirem e forem adicionadas ao grupo, tudo se abrirá para elas?
Seu caso de uso pode ser implementado sem este plugin, usando o plugin Discourse Policy em vez disso, que tem a capacidade de adicionar usuários que aceitaram a política a um grupo.
Eu olhei para o plugin Policy antes de começar a me aprofundar na maneira como acabei atribuindo a associação de grupo. O motivo pelo qual não gosto do Policy para isso é porque ele precisa ser aplicado a um grupo. Eu teria que aplicá-lo a algo como trust_level_1 para garantir que todos que desejam fazer parte de B/S/T o vejam. Mas, nem todos querem participar de B/S/T. Eu não quero assediá-los com mais uma coisa para clicar (mesmo que seja rápido) se eles não estiverem interessados nisso.
crie um grupo “candidatos BST” e um grupo “membros BST”
faça com que “candidatos BST” seja um grupo que pode ser ingressado livremente
tenha uma política que se aplique a “candidatos BST” e adicione a “membros BST”
conceda acesso à categoria a “membros BST”
As pessoas ingressarão em “candidatos BST”, aceitarão a política e se tornarão membros de “membros BST”. Complicado, mas menos complicado do que acionar uma máquina Rube Goldberg completa ao curtir uma postagem.