# Ser capaz de alterar manualmente o status do emblema para “não concedível”

**URL:** https://meta.discourse.org/t/be-able-to-manually-change-badge-status-to-not-grantable/296645
**Category:** Feature
**Tags:** badges
**Created:** [25 Fevereiro , 2024 09:06 UTC](https://meta.discourse.org/t/be-able-to-manually-change-badge-status-to-not-grantable/296645 "2024-02-25T09:06:14Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![Shauny](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/shauny/32/362012_2.png) [@Shauny](https://meta.discourse.org/u/Shauny)
#### Post date: [25 Fevereiro , 2024 09:06 UTC](https://meta.discourse.org/t/be-able-to-manually-change-badge-status-to-not-grantable/296645/1 "2024-02-25T09:06:14Z")

</div>

Tenho muitos emblemas no meu site que são concedidos automaticamente via API quando alguém faz algo no site WordPress conectado. Funciona muito bem!

No entanto, tenho alguns emblemas que preciso conceder manualmente em posts.

Quando faço isso, todos os emblemas que configurei aparecem na lista de “emblemas concedíveis”, o que significa muita rolagem.

Existe alguma maneira de definir um emblema como “não concedível” por administradores, mas mantê-lo possível de ser concedido via API? Isso ajudaria no gerenciamento de emblemas.

Obrigado!

---

<div class="post-metadata">

### Author: ![Shauny](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/shauny/32/362012_2.png) [@Shauny](https://meta.discourse.org/u/Shauny)
#### Post date: [6 Junho , 2024 06:47 UTC](https://meta.discourse.org/t/be-able-to-manually-change-badge-status-to-not-grantable/296645/2 "2024-06-06T06:47:45Z")

</div>

Notei que os distintivos com lógica SQL não aparecem na lista para conceder, então existe uma maneira de adicionar alguma lógica SQL falsa / impossível a um distintivo para que ele não apareça na lista, mas eu ainda possa conceder com a API?

---

<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: [6 Junho , 2024 11:06 UTC](https://meta.discourse.org/t/be-able-to-manually-change-badge-status-to-not-grantable/296645/4 "2024-06-06T11:06:25Z")

</div>

Você habilitou o SQL de emblema personalizado da configuração oculta? [Habilitar SQL de Emblema](https://meta.discourse.org/t/enable-badge-sql/47894)

---

<div class="post-metadata">

### Author: ![Shauny](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/shauny/32/362012_2.png) [@Shauny](https://meta.discourse.org/u/Shauny)
#### Post date: [6 Junho , 2024 11:16 UTC](https://meta.discourse.org/t/be-able-to-manually-change-badge-status-to-not-grantable/296645/5 "2024-06-06T11:16:44Z")

</div>

Eu tenho sim

---

<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: [6 Junho , 2024 12:46 UTC](https://meta.discourse.org/t/be-able-to-manually-change-badge-status-to-not-grantable/296645/6 "2024-06-06T12:46:13Z")

</div>

Se você tiver a caixa para adicionar algum SQL, acho que pode tentar adicionar alguns critérios impossíveis de obter nela e ver como se sai. 👍 Não é realmente para o que se destina, mas pode funcionar para o que você precisa.

Talvez algo como:

```sql
SELECT id user_id, created_at granted_at
FROM users
WHERE id = -1000

```

Certifique-se de que a revogação automática não esteja ativada, pois isso também removeria as concedidas manualmente.

---

<div class="post-metadata">

### Author: ![Shauny](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/shauny/32/362012_2.png) [@Shauny](https://meta.discourse.org/u/Shauny)
#### Post date: [6 Junho , 2024 16:40 UTC](https://meta.discourse.org/t/be-able-to-manually-change-badge-status-to-not-grantable/296645/7 "2024-06-06T16:40:43Z")

</div>

Recebi este erro:

`A consulta é acionada em usuários, mas não faz referência à matriz ':user_ids'`

---

<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: [6 Junho , 2024 16:42 UTC](https://meta.discourse.org/t/be-able-to-manually-change-badge-status-to-not-grantable/296645/8 "2024-06-06T16:42:59Z")

</div>

Você selecionou um gatilho baseado em usuário real? Eu deixei o meu em branco. Acho que ‘Atualizar Diariamente’ também funcionaria.

---

<div class="post-metadata">

### Author: ![Shauny](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/shauny/32/362012_2.png) [@Shauny](https://meta.discourse.org/u/Shauny)
#### Post date: [6 Junho , 2024 16:49 UTC](https://meta.discourse.org/t/be-able-to-manually-change-badge-status-to-not-grantable/296645/10 "2024-06-06T16:49:04Z")

</div>

Ah sim, atualizado diariamente funciona bem, obrigado. Vou verificar se ainda consigo concedê-lo com a API.

Sim, tudo funcionou bem, obrigado! Desde que não haja desvantagem para este SQL falso, ele deve ser a solução que eu estava procurando!

---

<div class="post-metadata">

### Author: ![Shauny](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/shauny/32/362012_2.png) [@Shauny](https://meta.discourse.org/u/Shauny)
#### Post date: [4 Fevereiro , 2026 12:05 UTC](https://meta.discourse.org/t/be-able-to-manually-change-badge-status-to-not-grantable/296645/11 "2026-02-04T12:05:26Z")

</div>

Desde uma atualização recente, isso não funciona mais, todas as medalhas podem ser concedidas novamente, mesmo que tenham este critério impossível de obter.

Isso é um bug? Será corrigido? Ou é o novo normal?

Obrigado!

---

<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: [18 Fevereiro , 2026 15:14 UTC](https://meta.discourse.org/t/be-able-to-manually-change-badge-status-to-not-grantable/296645/12 "2026-02-18T15:14:43Z")

</div>

Ah, receio que esta solução alternativa não funcione mais. 😢

Houve uma alteração há um tempo:

> <https://github.com/discourse/discourse/commit/aa33eaa79826c81404cf7bd53c81aee788f30001>
>
> Previously, badges with custom SQL queries were hidden from the manual
> grant dro…pdown in the admin UI. This was because \`manually\_grantable?\`
> returned false for any badge with a query, regardless of whether it was
> a system badge or not.
> 
> This fix simplifies the logic: only system badges (the built-in
> Discourse badges like "Basic User", "Member", etc.) are excluded from
> manual granting. Custom badges with SQL queries can now be manually
> granted to users.
> 
> Additionally, manually granted badges are now protected from
> auto-revocation. When a badge's SQL query runs via backfill, it will
> only revoke badges that were originally auto-granted (granted\_by\_id =
> \-1), leaving manually granted badges intact. This ensures that an
> admin's deliberate decision to grant a badge isn't undone by the
> automated badge system.
> 
> We considered adding a new \`allow\_manual\_grant\` setting per badge, which
> would give admins explicit control over dropdown visibility. However,
> this adds UI complexity and another knob to configure. The simpler
> approach covers the common case: if you created a custom badge, you
> probably want the option to grant it manually.
> 
> Note: Some users may have been relying on the old behavior to hide
> badges from the dropdown by adding a dummy SQL query. This workaround
> will no longer work - those badges will now appear in the dropdown.
> 
> Ref - t/139277
> Ref - https://meta.discourse.org/t/296645

Eles fizeram referência a este tópico na mensagem do commit, mas infelizmente não atualizaram aqui.
