Edição: Achei que era esperto, mas não era. Veja a próxima mensagem.
Olá, só queria compartilhar algo que descobri… Estou usando o Discourse como fórum em um site de membros existente, e no meu site atual, os membros podem bloquear uns aos outros. Quando o usuário A bloqueia o usuário B, ambos os usuários A e B não conseguem se ver, não conseguem interagir, etc.
Precisava que a mesma funcionalidade fosse transferida para o Discourse. Estava batendo a cabeça tentando descobrir como fazer isso e acredito que finalmente consegui resolver:
Configurei um webhook do Discourse para receber eventos, para que eu possa capturar o evento user_logged_in.
Quando um usuário faz login, percorro a lista de “bloqueios” dele no meu site.
Para cada outro membro que ele está tentando bloquear, uso a API do Discourse (note que isso não tem nada a ver com SSO!) para “Ignorar” o outro usuário.
E aqui está a parte inteligente: também instruo o Discourse a fazer com que o outro usuário ignore o usuário principal que está fazendo login. Em outras palavras, tanto o Usuário A (que está fazendo login agora) quanto o Usuário B (que está na lista de bloqueio do Usuário A) “Ignoram” um ao outro.
Observe que, ao enviar a mensagem de “Ignorar”, preciso realmente verificar se eles têm pelo menos o nível TL2, pois “Ignorar” é um recurso apenas do TL2 — se não tiverem, preciso elevá-los rapidamente ao nível TL2 antes de poder completar a ação de “Ignorar”. Elevar um usuário ao nível TL2 causa alguns outros efeitos colaterais (início de scripts avançados do discobot, concessão de distintivos) com os quais precisei lidar.
Ah, e eu escondo a lista de “Ignorados” no perfil do usuário do Discourse (apenas com CSS simples), já que há uma interface no site principal para gerenciar usuários bloqueados. Não quero que meus membros do Discourse vejam a lista de ignorados do Discourse de forma alguma.
Espero que isso ajude outras pessoas que precisam desse tipo de funcionalidade…
Então, aqui está o problema. O recurso “Ignorar” no Discourse não completamente esconde a outra pessoa. Ele torna as mensagens dela invisíveis (e na verdade faz um trabalho brilhante nisso)… e as substitui por um link que diz ‘VER x MENSAGENS OCULTAS’… isso é algo que posso facilmente ocultar com CSS, então não é grande coisa.
MAS! Se alguém citou um usuário bloqueado, você ainda vê o avatar e o nome dele (mas não nenhuma parte da citação) na mensagem, e também ainda vê o avatar e o nome dele nos indicadores de resposta à mensagem. Droga.
Isso significa que, se o Usuário A bloquear o Usuário B no meu site… e eu fizer o truque do duplo-ignorar (ignorar em ambas as direções) como descrevi na minha mensagem anterior… então o Usuário B (que nunca bloqueou o Usuário A) de repente verá coisas estranhas onde o Usuário A está postando no fórum. E poderá descobrir que o Usuário A o bloqueou. Agora isso revela informações privadas (quem o Usuário A bloqueou) para o Usuário B. O que no meu site não é bom… de jeito nenhum.
Ughhhh
Então, acho que cheguei ao ponto em que provavelmente preciso aprender RoR finalmente e escrever um plugin que estenda a funcionalidade existente de “Ignorar” para realmente, realmente apagar todos os rastros de um usuário em uma lista de ‘Ignorar’. Assim, posso voltar à minha ideia de duplo-bloqueio…
Certo, o recurso de ignorar do Discourse não é realmente um recurso de bloqueio completo (por isso não o chamamos de bloqueio!). Ele é mais para os casos em que alguém pode não estar violando as diretrizes da comunidade, mas é apenas um pouco incômodo para você.
O pedido por um recurso de bloqueio completo já surgiu antes, mas geralmente abordamos da seguinte forma:
Então, aviso: vai seguir um pequeno desabafo defensivo aqui, não dirigido tanto a você quanto a todas as pessoas que me disseram que eu não preciso de bloqueio…
Tenho experiência prática em gestão de comunidades há uma eternidade (mesmo quando trabalhava para a AOL, CompuServe e GEnie, cuidando de comunidades em seus fóruns de mensagens e salas de bate-papo). Hoje, administro meu próprio site de comunidade. Os fóruns fazem parte do site e são onde grande parte (mas não toda) da comunidade do site interage.
Eu entendo totalmente e completamente as razões pelas quais o bloqueio não é ótimo… Eu entendo. Realmente entendo. Li todas as mensagens que pude encontrar aqui no meta.discourse. Vi as pessoas implorando pelo recurso de Ignorar, vi os debates de ida e volta sobre por que não é uma coisa boa, e vi quando vocês finalmente cederam e o adicionaram ao software.
Em tudo isso, acho que algumas pessoas esqueceram que nem todo mundo está rodando um site que é apenas Discourse/apenas uma comunidade baseada em fóruns.
Na minha situação atual, eu já tinha uma comunidade forte no meu site antes do Discourse chegar: não apenas nos meus fóruns anteriores (com seu software antigo e ruim), mas também com o recurso de sala de bate-papo do meu site (que tem seus frequentadores e sua própria comunidade que se sobrepõe aos meus fóruns), além de outros recursos focados em comunidade no meu site.
E, para o bem ou para o mal, meu site sempre ofereceu a possibilidade de fazer um “bloqueio completo” de outro membro. Em parte devido a questões da comunidade, em parte porque a comunidade que atendo espera que eu seja MUITO sensível à privacidade deles por várias razões, incluindo preocupações legais (sério).
Fazer a pergunta “bloqueio é uma boa ideia?” não é a pergunta certa para eu fazer neste momento. Mesmo que eu pessoalmente não ame a ideia de bloqueio, aquele navio já zarparou.
(Um pouco mais de contexto: meus fóruns antigos eram bastante tóxicos devido a decisões tomadas pelo dono anterior do site. Parte da razão pela qual as pessoas exigiram um bloqueio bidirecional foi por causa da sujeira nos fóruns. Como parte da minha atualização para o Discourse e da apresentação de fóruns totalmente novos, também estou trabalhando para ajudar a reparar a comunidade do fórum danificada.)
Novamente, para ficar cristalmente claro, eu entendo totalmente por que o bloqueio geralmente não é um bom sinal de uma comunidade saudável. Na verdade, estou trabalhando para tentar fazer com que meus membros, que antes eram viciados em bloquear, se acalmem um pouco.
Então.
Se eu estivesse começando uma comunidade totalmente nova, eu com certeza começaria com o Discourse e não precisaria de bloqueio bidirecional.
Se eu tivesse um site que já não tivesse o bloqueio bidirecional disponível (ou se eu não estivesse atualizando de um software de fórum que anteriormente suportava bloqueio bidirecional), eu não precisaria de bloqueio bidirecional no Discourse.
Se minha comunidade atual de fóruns não estivesse já danificada, eu não precisaria de bloqueio bidirecional. Mas eles tiveram algumas experiências terríveis no passado que exigiram o recurso de bloqueio, que eu tive que implementar. Agora, fazer a mudança para o Discourse é uma grande mudança que já está agitando a comunidade (é muito diferente do que eu tinha, então é um processo), e não é o momento certo para também dizer “ah, e a propósito, estamos removendo o bloqueio”. Vou ter uma revolta nas mãos.
De qualquer forma. Peço desculpas pelo tamanho desta resposta e espero não parecer muito defensivo. Eu só não quero ser arrastado para um debate filosófico sobre bloqueio e por que não é uma coisa saudável.
Eu ainda preciso de um recurso de bloqueio completo.
Aprecio sinceramente e de verdade todo o feedback e ajuda! E parte da razão pela qual estou postando tudo isso (e tomando o tempo para escrever esta mensagem loucamente longa) é porque estou tentando contribuir de volta para a comunidade do Discourse.
Deixo aqui minha conclusão: Sei que o Discourse não oferece exatamente o que estou pedindo agora. Mas está perto! Não estou tentando convencer a equipe do Discourse a adicionar isso ao software (essa conversa começou e terminou muito antes de eu chegar)… mas eu estou tentando alcançar meu objetivo com as peças que tenho à minha frente… e pedindo ajuda aos pensadores inteligentes, astutos e criativos e aos codificadores que vi por aqui… e compartilhando o que descobrir ao longo do caminho com os outros.
Concordo com muitos dos seus pontos, mas gostaria apenas de comentar sobre isso…
Não ter um recurso de bloqueio automatizado pode ser aceitável em fóruns de pequeno a médio porte, mas, na minha opinião, é indispensável para plataformas grandes.
Isso ocorre, entre outras razões, porque mais membros significam mais posts, o que potencialmente resulta em muito mais conflitos interpessoais. Enquanto uma equipe de 10 moderadores consegue moderar facilmente fóruns com 10.000, 20.000 ou 30.000 membros, à medida que a base de usuários cresce, tudo o mais cresce em ritmo ainda mais acelerado: mais vozes → muito mais posts → muito mais problemas.
Essa é uma das principais razões pelas quais todas as grandes redes sociais oferecem a função de bloqueio. Outra razão é do ponto de vista legal: se alguém relatar estar sendo assediado por outro membro e o site não fizer nada a respeito (talvez porque ache que nenhum assédio esteja ocorrendo, argumentando que “tudo está na cabeça da pessoa”), e então esse usuário cometer suicídio, o site poderá ser responsabilizado. Se alguém realmente sente que está sendo assediado, é assim que essa pessoa se sente — não importa o que eu ou você pense. O que importa é que temos o dever de cuidado com os membros, e uma das melhores formas de evitar que eles se sintam assim é permitir que cortem essa interação — o que é melhor feito permitindo que eles mesmos bloqueiem as pessoas que lhes causam angústia (ou, às vezes, impondo isso nós mesmos).
Os dias de ser juiz e júri já passaram há muito tempo — e não deveríamos ter que assumir esse papel. Não cabe a nós decidir o que causa ou não sofrimento a outras pessoas.
É por isso que também acredito que precisamos de ferramentas de moderação mais modernas: os moderadores não deveriam ser colocados na posição de ter que editar as postagens das pessoas (o que a maioria vê como censura). Se as postagens forem inaceitáveis, deveríamos simplesmente poder removê-las da visão pública e solicitar que o autor as edite, com as edições sendo enviadas para uma fila de revisão.
Acredito (e espero!) que o Discourse possa liderar nessa área.
Muito bem dito. (E isso não é necessariamente hipotético: para a minha comunidade específica, já tivemos que envolver as forças da lei no passado.) Pensar em situações como essa e fornecer aos membros as ferramentas para se autogerenciarem são aspectos críticos… e eu argumentaria, essenciais para qualquer pessoa que gerencie um bom site de comunidade.
Concordo, uma opção como essa ajudaria enormemente. Em geral, nunca editaremos a postagem de outra pessoa no meu fórum… exatamente por esses motivos… nossos membros ficariam super sensíveis se mexêssemos em suas palavras. No momento, as únicas opções que temos no Discourse para lidar com conteúdo problemático são (a) excluir a mensagem ou (b) não excluir a mensagem. É um pouco grosseiro e “quando tudo o que você tem é um martelo, tudo parece um prego.” (Também entendo que essa conversa sobre futuras ferramentas de moderação provavelmente é melhor discutida em outro tópico…)
É para isso que estamos sendo pressionados — mas a razão pela qual precisamos editar a postagem ou excluí-la (o que não é ideal por vários outros motivos) é que, se a postagem for depreciativa ou menos amigável do que gostaríamos em relação a outro membro, é melhor removê-la antes que o outro membro a veja. Assim que ele a vir, a janela de oportunidade para evitar que problemas interpessoais se desenvolvam se fecha, e o início de uma espiral descendente começa. Isso, com o tempo, afeta muito mais do que apenas os dois membros envolvidos.
Tente sinalizar uma postagem como “Inadequada”, mas usando o botão “Tomar Ação” em vez de “Sinalizar Postagem”. A postagem será ocultada e o usuário terá a chance de editá-la para torná-la mais aceitável, após o que a postagem será automaticamente reexibida.
A única coisa que falta aqui é criar um item de revisão para a edição.
Sim, acho que o sistema de sinalização seria ótimo para isso. Além do mencionado acima, seria ideal incluir também “mudanças recomendadas” ou algum tipo de mensagem que possa ser enviada ao usuário (talvez obrigatória se a sinalização tiver sido enviada por um moderador ou quando ele agir sobre ela na fila de revisão).
Não, isso não vai acontecer. Se o bloqueio hardcore* (que historicamente nunca foi um recurso de software de fórum, de qualquer forma) é um requisito inegociável, você deve mudar para outro software livre e de código aberto. Desculpe!
Dito isso, acho que um sistema de ignorância mútua baseado em API é uma boa solução alternativa por enquanto.
bloquear, significando “adicionalmente, essa pessoa não poderá mais ver minhas postagens”, além de “eu não quero mais ver as postagens dessa pessoa”.
Um efeito colateral engraçado da minha “truque de ignorar mútuo” é que agora recebo MUITOS desses e-mails. Tipo, dezenas. Existe alguma maneira de suprimi-los? Sinto muito em vê-los sumir (acho que são super úteis para ajudar a identificar problemas potenciais na comunidade), mas como estou tendo que apropriar-me da funcionalidade de “Ignorar” para fazer meus bloqueios funcionarem, essas notas se tornam um efeito colateral não intencional.
Li parte disso, mas está um pouco além do meu entendimento:
Existe alguma forma de o administrador de um site configurar para que, se o Usuário A ignorar o Usuário B, o Usuário B seja ignorado e perca o acesso às postagens do Usuário A?
Obrigado desde já — estou pesquisando para repassar as informações ao administrador.
Não, você não pode bloquear completamente alguém no Discourse… a ação mais extrema que um usuário comum pode tomar é ignorar (uma pessoa ignorada pode ver seu conteúdo, mas você não pode ver o dela).
com certeza, não conseguiríamos parar os spammers sem isso — os administradores podem banir usuários e até mesmo seus endereços IP caso eles comecem a criar mais contas
Tenho que me manifestar aqui, porque já vi como isso afetou nosso próprio fórum Discourse, que é muito diverso.
O bloqueio duplo forçado é uma ideia terrível, terrível, e está impondo a vontade do fórum sobre o indivíduo vulnerável que você está tentando proteger. Você está, essencialmente, dizendo: “Entendo que você se sinta inseguro e desconfortável com esse usuário, mas não podemos simplesmente permitir que você esconda as postagens dele — vamos fazer com que o fato de você ter feito isso seja descoberto, de modo que agora esse usuário pode ter outro motivo para explodir e ir atrás de você”.
Foi necessário um esforço concertado de muitos membros do Twitter que se identificam publicamente como mulheres para que o Twitter entendesse por que essa era uma ideia terrível, terrível, e para permitir a funcionalidade de “silenciar” deles — remover um usuário da sua visualização e do seu feed sem alertá-lo sobre o fato de que você fez isso.
Só por esse motivo, se isso for uma funcionalidade no Discourse de alguma forma, ela precisa ser escolhida pelo solicitante, não pela vontade do moderador ou do site.
Eu diria que, se um usuário solicita que alguém seja bloqueado, e o site informa ao usuário que ele foi bloqueado pelo usuário X sem consentimento, e o usuário bloqueado escalar a situação, isso também é um caso real de responsabilidade do ponto de vista do site. Mas, mais do que isso, isso inevitavelmente terá um efeito resfriante sobre as pessoas usando a funcionalidade de bloqueio de forma alguma (o que já vi na prática), além de transferir poder para o agressor: “Você não pode me bloquear porque eu vou saber!”.
Tenho que concordar de forma inequívoca aqui. Isso ou nunca deve ser uma funcionalidade do Discourse, ou tem que ser opt-in apenas pelo solicitante e deixar claro quais são os riscos reais de escalada envolvidos.
Muitas pessoas ficam realmente, muito bravas quando têm uma postagem excluída, se sentem “censuradas” ou “canceladas”, ou têm uma dinâmica de poder imposta a elas que não gostam. Mas não se engane, chame como quiser, mas moderação é censura, e isso carrega consigo uma exigência inerente de manter seus membros seguros contra retaliação como resultado — pela mesma razão que solicitações de moderação precisam permanecer anônimas.
Parece que o problema foi como você implementou isso..
Quando nos aproximamos dos membros, geralmente o fazemos da perspectiva do administrador, por exemplo: “Tornou-se evidente que sua relação com o UsuárioX chegou a um ponto irreparável; portanto, achamos que é do interesse de todos os envolvidos que vocês dois se ignorem a partir de agora…”
Nunca tivemos que aplicar um bloqueio com base em bullying onde a animosidade já não tivesse surgido — por isso, o acima é muito mais fácil para nós.
Não, não se trata de uma questão de abordagem: ‘Este usuário me faz sentir inseguro ou desconfortável e gostaria de não ver as mensagens dele’ é um pedido perfeitamente válido e não tem absolutamente nada a ver com a concordância ou não dos moderadores.
Capacitar os usuários a terem controle sobre o que consomem é um objetivo nobre, independentemente do que nós, como operadores do fórum, prefiramos.
Pois a alternativa é que o usuário abandone a comunidade e suas contribuições se percam. Eles não devem ter que ‘aguentar’ a microgestão do site, sendo obrigados a banir novamente ou notificar o usuário que está sendo ignorado. Ou, se isso tiver que ser uma opção por outros motivos, deve ser optativo (opt-in).
Fazer o contrário é negar a um usuário que expressou preocupação com outro a sua autonomia. São os olhos deles. Eles têm o direito de controlar o que entra neles e quem fica sabendo de suas decisões.