Restringir postagens em uma categoria até que eles "curtam" um tópico

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?

Olá, ele vem incluído gratuitamente com a edição comunitária. Você pode ativá-lo na aba Plugins.

2 curtidas

Nunca mente. Eu descobri que posso adicionar o plugin de Automação do Discord manualmente…

1 curtida

Hmm, talvez com Discourse Policy e permissões de grupo?

  • 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)
2 curtidas

Eu descobri (com a ajuda do ask.discourse.org).

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.

2 curtidas

Ótimo – obrigado por compartilhar os detalhes!
Agora você pode marcar sua postagem como sua solução. :grin:

1 curtida

Vou fazer um pequeno resumo exatamente do que fiz quando chegar em casa, caso mais alguém queira saber. Depois marcarei isso como a solução.

3 curtidas

Caso mais alguém tenha interesse em fazer isso, aqui está um breve resumo do que eu fiz:

  1. 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
  1. 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
  2. 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

Screenshot 2026-02-27 113204

  1. Crie seu Emblema Personalizado:
    1. Admin > Emblemas > Novo
    2. Nomeie o emblema como quiser (ex: Leitor de Regras B/S/T)
    3. Escolha um tipo de emblema, ícone e forneça uma descrição
    4. 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):
      1. 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))
        
    5. Certifique-se de que Executar consulta de revogação diariamente e Consulta visa posts estejam marcados.
    6. O gatilho deve ser definido como Quando um usuário age em um post
  2. Agora criamos a Automação
    1. 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.
    2. Em seguida, vá para Plugins > Automação
      1. Adicione uma nova automação
        1. Escolha Afiliação de Grupo de Usuário Através de Emblema
        2. Gatilho: Recorrente
          1. Recorrência: Eu configurei para a cada 1 hora. Escolha o que faz sentido para você.
          2. Escolha uma data de início
        3. Opções de Script:
          1. Emblema: Escolha o emblema que você criou acima
          2. 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.

3 curtidas

Uma solução alternativa foi sugerida no tópico para o plugin de tópicos privados. Estou movendo isso para cá.

1 curtida

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?

Não é para isso que este plugin foi feito.

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.

1 curtida

2 publicações foram mescladas em um tópico existente: Private Topics Plugin

Isso também pode funcionar. Vou investigar. Obrigado!! Eu sou realmente novo no Discourse, então estou aprendendo os caminhos.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.