Não é possível excluir usuário com PMs, mensagem de erro enganosa

Estamos usando SSO e, quando alguém fecha sua conta, também excluímos a conta do Discourse dela via API (ou a anonimizamos, se houver posts).

No entanto, algo parece estar errado, pois temos visto alguns erros 403 ao fazer isso. Investigando um pouco, descobri que esta é a mensagem de erro retornada pela chamada da API:

{
    "http_code": 403,
    "body": "{\"deleted\":false,\"message\":\"User XXX has 0 posts, so they can't be deleted.\"}"
}

Mas, se há 0 posts, deveria ser possível excluí-lo? Ao verificar as informações dessa conta específica, realmente não há posts:

No entanto, há uma mensagem privada para o Discobot (tutorial).

Então, acho que há algumas questões aqui:

  1. A mensagem de erro que recusou a exclusão do usuário está contando apenas os posts públicos, mas talvez devesse contar os privados também?
  2. Na verdade, as mensagens privadas deveriam impedir que uma conta fosse excluída? Entendo o raciocínio de que remover uma conta complica a narrativa em um tópico público, mas em uma mensagem privada talvez o argumento não seja tão sólido?
  3. Se a resposta à anterior for ainda sim (ou seja, mensagens privadas ainda devem impedir a remoção de uma conta), as mensagens para o Discobot também deveriam contar para impedir a remoção de uma conta? O que quero dizer é que a maioria das pessoas passa pelo tutorial e envia PMs ao Discobot… o que torna praticamente impossível remover muitas contas que nunca participaram, apenas porque fizeram o tutorial (talvez isso seja verdade apenas após delete_user_max_post_age dias, mas ainda assim).

Por fim, e não tenho certeza se isso está relacionado ao ponto 1, mas ao verificar as informações da API para esse usuário, retorna:
post_count: 0
can_be_deleted: 1
can_delete_all_posts: 0

Mas, efetivamente, esse usuário não pode ser excluído. Então, talvez a lógica de can_be_deleted esteja contando apenas os posts públicos também?

4 curtidas

Ótimo trabalho de detetive! Devemos, no mínimo, corrigir a mensagem de erro.

"body": "{\"deleted\":false,\"message\":\"O usuário XXX tem 0 postagens, então não pode ser excluído.\"}"

Deveria dizer:

O usuário tem x postagem(s), então não pode ser excluído.

Também provavelmente devemos indicar a situação, já que isso tem ocorrido com frequência:

O usuário tem x postagem(s), sejam postagens públicas ou mensagens pessoais, então não pode ser excluído.

3 curtidas

Está feito. Também corrigi a contagem incorreta de postagens na mensagem.

4 curtidas

Obrigado @vinothkannans! :+1:

Haveria alguma possibilidade de investigar também o fato de que can_be_deleted parece indicar que uma conta pode ser excluída, quando na verdade não pode (devido às MPs)? No momento, precisamos tentar excluir o usuário primeiro e, em seguida, recorrer à anonimização quando isso falhar (já que can_be_deleted não pode ser confiável).

2 curtidas

A questão no tópico a seguir pode estar correlacionada de alguma forma com as questões sendo discutidas neste tópico?

2 curtidas

Este tópico foi automaticamente fechado após 3 dias. Novas respostas não são mais permitidas.