# Como processar/excluir em massa registros sinalizados?

**URL:** https://meta.discourse.org/t/way-to-bulk-process-delete-flagged-registrations/146160
**Category:** Support
**Tags:** review-queue, bulk-actions
**Created:** [Março 30, 2020, 4:44pm UTC](https://meta.discourse.org/t/way-to-bulk-process-delete-flagged-registrations/146160 "2020-03-30T16:44:42Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![kirupa](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kirupa/32/374711_2.png) [@kirupa](https://meta.discourse.org/u/kirupa)
#### Post date: [Março 30, 2020, 4:44pm UTC](https://meta.discourse.org/t/way-to-bulk-process-delete-flagged-registrations/146160/1 "2020-03-30T16:44:42Z")

</div>

Olá a todos — nos últimos dias, nossos fóruns têm recebido muitas inscrições de spam que estão sendo devidamente sinalizadas para nossa revisão. O problema é a grande quantidade delas a cada poucas horas:

 ![image](https://global.discourse-cdn.com/meta/original/3X/1/7/17a7a4904fe2c18ead4f7e86815bb880551d623f.png)

Existe alguma maneira de revisar rapidamente e fazer uma edição em massa, para que não precisemos clicar em cada entrada e clicar novamente para selecionar a opção de excluir + banir? Isso fica bastante cansativo após algum tempo.

---

<div class="post-metadata">

### Author: ![kirupa](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kirupa/32/374711_2.png) [@kirupa](https://meta.discourse.org/u/kirupa)
#### Post date: [Março 30, 2020, 4:49pm UTC](https://meta.discourse.org/t/way-to-bulk-process-delete-flagged-registrations/146160/2 "2020-03-30T16:49:55Z")

</div>

Como alternativa, podemos simplesmente excluir automaticamente os usuários que se enquadram nessa categoria:

 ![image](https://global.discourse-cdn.com/meta/original/3X/8/0/80659328d9a65e421afd6e824fbd3181a648e793.png)

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [Março 31, 2020, 7:01am UTC](https://meta.discourse.org/t/way-to-bulk-process-delete-flagged-registrations/146160/3 "2020-03-31T07:01:27Z")

</div>

Você está recuperando um atraso de perfis antigos de spam. Assim que terminar de recuperar, tudo ficará bem.

---

<div class="post-metadata">

### Author: ![kirupa](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kirupa/32/374711_2.png) [@kirupa](https://meta.discourse.org/u/kirupa)
#### Post date: [Janeiro 19, 2023, 1:44am UTC](https://meta.discourse.org/t/way-to-bulk-process-delete-flagged-registrations/146160/4 "2023-01-19T01:44:41Z")

</div>

Olá Jeff, equipe - a quantidade de spam que recebemos é bastante alta, e temos cerca de 30-40 posts sinalizados para revisão diariamente. É muito clique repetitivo. Alguma nova técnica foi introduzida para tornar isso menos tedioso?

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [Fevereiro 14, 2023, 3:03pm UTC](https://meta.discourse.org/t/way-to-bulk-process-delete-flagged-registrations/146160/5 "2023-02-14T15:03:44Z")

</div>

Olá @kirupa

Aconteceu de eu ter, de alguma forma, o mesmo problema.

Revisamos milhares de posts/usuários sinalizados automaticamente (sistema e Akismet) em meu fórum.  
A precisão de ambos, sistema e Akismet, foi muito próxima de 100% (1 falso positivo, que eu saiba, para 2500 sinalizações). Não é o caso para todos os fóruns, então você tem que ter certeza do que está fazendo se quiser automatizar o banimento de usuários sinalizados automaticamente.

No final, fiz um script PHP usando dados de webhook do Discourse:

Primeiro criei o webhook:

 ![image](https://global.discourse-cdn.com/meta/original/4X/f/0/2/f020f8b31f2cb43ac61cdb93f1e50edc2dbf0bbd.png)

Então usei [Use Discourse webhooks with PHP](https://meta.discourse.org/t/use-discourse-webhooks-with-php/50543) para receber a solicitação e analisar os dados.

Adicionei código personalizado para acionar o banimento automático enviando uma solicitação de API para o Discourse, com base em critérios arbitrários:

Aqui está o código final:

```php
<?php

// Verifica imediatamente a autenticidade da solicitação.
if (array_key_exists('HTTP_X_DISCOURSE_EVENT_SIGNATURE', $_SERVER)) {
    $discourse_payload_raw = file_get_contents('php://input');
    $discourse_payload_sha256 = substr($_SERVER['HTTP_X_DISCOURSE_EVENT_SIGNATURE'], 7);
    
    // Para segurança, configure o webhook com um segredo no Discourse e defina-o abaixo.
    $discourse_payload_secret = 'xxxxxxxxxxxxxxxxxxxxx';
    
    // Verifica se a solicitação foi enviada por um webhook autorizado.
    if (hash_hmac('sha256', $discourse_payload_raw, $discourse_payload_secret) == $discourse_payload_sha256) {
        echo 'recebido';
    }
    else {
        die('autenticação falhou');
    }
}
else {
    die('acesso negado');
}

// Prepara o payload para uso no script PHP.
$discourse_json = json_decode($discourse_payload_raw);

$reviewable = $discourse_json->reviewable;

// Define a URL da API
$api_url = "https://unicyclist.com/review/$reviewable->id/perform/delete_user?version=0";

// Verifica se as propriedades "type" e "score" são válidas
if (($reviewable->type == "ReviewableUser" || $reviewable->type == "ReviewableAkismetUser" || $reviewable->type == "ReviewableQueuedPost") && $reviewable->score > 0) {
  // Configura as opções do curl
    $options = array(
        CURLOPT_URL => $api_url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_CUSTOMREQUEST => "PUT", // Define o método da solicitação como PUT
        CURLOPT_HTTPHEADER => array(
            "Api-Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
            "Api-Username: system"
        )
    );
    // Inicializa a sessão curl
    $curl = curl_init();
    curl_setopt_array($curl, $options);
    // Faz a chamada da API
    $response = curl_exec($curl);
    curl_close($curl);
    // Decodifica a resposta
    $response_data = json_decode($response);
    print_r($response_data);
} else {
    exit;
}

?>

```

Funciona perfeitamente até agora.

⚠ **Note que meu código pode ser muito perigoso de usar em outro contexto e o conteúdo deve ser pensado cuidadosamente.**

Por exemplo, uma sinalização “ReviewableUser” _pode_ ser definida em usuários em fóruns que precisam validar usuários manualmente (não sei se é o caso, é apenas um exemplo). Outros fóruns podem ter alterado os limites de detecção de spam em suas configurações, ou a detecção automática pode simplesmente ser menos precisa em seu fórum.

---

<div class="post-metadata">

### Author: ![kirupa](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kirupa/32/374711_2.png) [@kirupa](https://meta.discourse.org/u/kirupa)
#### Post date: [Abril 16, 2023, 3:58am UTC](https://meta.discourse.org/t/way-to-bulk-process-delete-flagged-registrations/146160/6 "2023-04-16T03:58:25Z")

</div>

Obrigado por compartilhar - talvez eu tenha que usar algo assim! Eu gostaria que o Discourse suportasse este fluxo de trabalho automaticamente 🙂

---

<div class="post-metadata">

### Author: ![kirupa](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kirupa/32/374711_2.png) [@kirupa](https://meta.discourse.org/u/kirupa)
#### Post date: [Março 28, 2024, 4:33pm UTC](https://meta.discourse.org/t/way-to-bulk-process-delete-flagged-registrations/146160/7 "2024-03-28T16:33:55Z")

</div>

Tenho usado a solução do @Canapin em meu Discourse pessoal, mas também tenho uma configuração de instância separada para outra empresa. Eu preferiria não usar este script na solução deles.

Existe alguma atualização da equipe do Discourse sobre abordagens alternativas? Isso se aplica tanto a registros sinalizados quanto a postagens sinalizadas como spam:

 ![image](https://global.discourse-cdn.com/meta/original/4X/b/1/4/b142a26e78d2f07c81b9dfa26dac9bd51d8b175d.png)

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [Abril 15, 2024, 10:36am UTC](https://meta.discourse.org/t/way-to-bulk-process-delete-flagged-registrations/146160/8 "2024-04-15T10:36:09Z")

</div>

Por enquanto, não temos nada planejado para adicionar ações em massa à Fila de Revisão, mas se você puder criar uma solicitação de recurso em #Contribute > Feature, poderemos avaliar mais facilmente a popularidade da sugestão, o que pode chamar mais atenção para ela.
