Usuário banido por responder em menos de 3 segundos

No tópico a seguir, um usuário foi silenciado por responder com uma mensagem curta e rápida:

A configuração relacionada é chamada de “silenciar automaticamente digitadores rápidos na primeira postagem”, mas claramente essa não foi a primeira postagem do usuário. Essa regra foi acionada por engano?

Não é a primeira vez que alguém é banido ao escrever respostas tão curtas, que podem ser facilmente digitadas em 3 segundos. Reduzi a configuração min_first_post_typing_time no meu fórum de 3 para 2 segundos, mas estou confuso sobre por que as respostas também são cobertas pela opção de silenciamento automático.

Quão confiante você está de que esta não foi a primeira postagem do usuário? Você vê postagens anteriores no histórico dele?

Se você clicar no tópico que vinculei, verá que uma pergunta detalhada foi postada primeiro, depois eu respondi e, quando o usuário respondeu “Não consigo encontrá-la”, a resposta foi colocada em fila para aprovação e o usuário foi silenciado.

Isso está acontecendo novamente, mesmo depois de eu ter reduzido o “tempo mínimo de digitação para a primeira postagem” para apenas 2 segundos:

Agora, a primeira mensagem de jhoney parece suspeita, pois não poderia ter sido digitada em 2 segundos e, na verdade, é um trecho copiado de mais cedo naquele tópico. Então, isso pode realmente ser um spammer.

Mas jzza acabou de digitar um rápido agradecimento depois que sua pergunta inicial foi respondida. Ele pode ter digitado em menos de 2 segundos, mas não foi sua primeira postagem, então sua mensagem não deveria ter sido retida.

Não é recomendável permitir mensagens muito curtas. Qual é o seu tamanho mínimo de post para respostas? O padrão do Discourse é de 20 caracteres. Se você modificou isso, pode ser necessário ajustar sua proteção de tempo mínimo de digitação para spamistas para níveis muito baixos.

Novos usuários legítimos que copiam e colam conteúdo podem ser pegos; se esse for um padrão comum na sua plataforma, você pode não ter escolha a não ser desativar essa proteção.

Eu reduzi isso de 20 para 10 caracteres, porque quero permitir mensagens curtas de agradecimento e não gosto de forçar as pessoas a tornar suas postagens artificialmente mais longas.

No entanto, essa configuração é irrelevante para o problema que estou relatando. O problema que estou enfrentando é que há postagens retidas e usuários silenciados com base na velocidade com que escreveram sua segunda postagem, mesmo que a configuração diga explicitamente: “Novo usuário digitou sua primeira postagem suspeitamente rápido”.

Justo, conseguimos reproduzir isso, @justin?

Tentei reproduzir isso hoje, mas ainda não consegui, mesmo usando as mesmas configurações do site. Não estou vendo nenhum usuário ser enviado para a fila de revisão na primeira ou segunda postagem, mas eles estão sendo bloqueados de postar por cerca de 20 segundos se fizerem isso muito rápido, como esperado.

@bjorn81, você tem mais alguma informação desses usuários sobre como eles podem ter sido silenciados?

Por que você está reduzindo o limite de caracteres para mensagens de agradecimento quando o Discourse tem um botão de curtir? Ele existe exatamente para esse propósito. Os usuários podem expressar gratidão sem dar um “bump” no tópico, distrair outros usuários ou aumentar desnecessariamente o tamanho do tópico.

Parece muito que você alterou uma configuração padrão que existe porque postagens do tipo “ok”, “GG” ou “+1” não são necessárias no Discourse, e você está sofrendo as consequências.

No é esse o caso, porém, este é o problema relatado:

@justin, note que você precisaria absolutamente colar o post usando ctrl+v para acionar isso. A coisa específica que estamos testando é: isso pode acontecer em um segundo post? Você também pode verificar o caminho do código para ver se suas premissas são válidas.

Vou tentar novamente. Analisei o caminho do código e todas as suposições que encontrei pareciam válidas com base nos valores fornecidos nas configurações do site.

EDIT: Consegui reproduzir usando copiar/colar em uma segunda postagem com as configurações fornecidas acima. Vou redefinir para os padrões e ver se consigo encontrar alguma correlação.

EDIT 2: Consegui encontrar o problema.

Neste bloco de código, estamos considerando apenas o post_count do usuário. Se um usuário cria um tópico primeiro, isso não é contado como uma postagem. Portanto, quando um usuário copia e cola uma resposta, isso é contado como a primeira postagem dele, acionando a proteção.

O PR está pronto para corrigir: