Por que a herança de permissões de canal do Discord ignora a substituição do cargo do bot
🔍 WiseChecker

Por que a herança de permissões de canal do Discord ignora a substituição do cargo do bot

Você definiu uma permissão específica de canal para o cargo do bot, mas o bot ainda não consegue enviar mensagens ou ler o histórico naquele canal. A substituição de permissão que você atribuiu ao cargo do bot parece ser ignorada. Isso acontece porque o Discord aplica a herança de permissões em uma ordem específica, e as substituições do cargo do bot podem ser bloqueadas por uma fonte de permissão de prioridade mais alta. Este artigo explica a causa raiz desse comportamento de herança e mostra como corrigi-lo para que a substituição do cargo do bot realmente entre em vigor.

Principais conclusões: Herança de permissões do Discord e substituições do cargo do bot

  • Configurações do servidor > Cargos > Gerenciar permissões: A ordem das permissões dos cargos determina qual substituição vence quando ocorrem conflitos.
  • Configurações do canal > Permissões > cargo @everyone: Uma permissão negada no @everyone pode bloquear permissões concedidas ao cargo do bot, mesmo que o cargo do bot tenha uma substituição de permissão.
  • Configurações do servidor > Cargos > Hierarquia de cargos: Cargos mais altos na lista substituem cargos mais baixos, e o cargo do bot deve estar acima de qualquer cargo conflitante.

ADVERTISEMENT

Como funciona a herança de permissões do Discord para cargos de bot

O Discord usa um sistema hierárquico de permissões que avalia várias fontes antes de decidir se uma ação é permitida ou negada. O sistema verifica as permissões nesta ordem:

  1. Cargo @everyone — Permissões base para todos os membros, incluindo bots.
  2. Todos os cargos atribuídos ao usuário ou bot — As permissões de cada cargo são avaliadas individualmente.
  3. Substituições específicas do canal para @everyone — Substituições definidas no canal para o cargo @everyone.
  4. Substituições específicas do canal para cada cargo específico — Substituições definidas no canal para um cargo específico, como um cargo de bot.

A regra principal é: uma única negação bloqueia a ação de forma efetiva. Se qualquer fonte de permissão na cadeia tiver uma negação para uma permissão específica, a ação é negada independentemente de permissões posteriores. É por isso que uma substituição do cargo do bot pode parecer ignorada.

O papel da herança de permissões

A herança de permissões significa que um canal herda as permissões das configurações de cargo no nível do servidor, a menos que uma substituição específica do canal seja definida. Quando você cria um canal, ele começa com as mesmas permissões do padrão do servidor para cada cargo. Se você definir uma substituição de canal para o cargo do bot para permitir Enviar Mensagens, mas o cargo @everyone tiver uma negação para Enviar Mensagens no nível do canal, a negação vence. A substituição do cargo do bot não é ignorada; ela é simplesmente substituída pela negação anterior.

Hierarquia de cargos e posição do cargo do bot

O Discord avalia os cargos na ordem em que aparecem na lista de cargos do servidor, de cima para baixo. O cargo mais alto na hierarquia tem mais peso. Se o cargo do bot for inferior a outro cargo que nega uma permissão, a negação do cargo mais alto pode bloquear a permissão do cargo do bot. Isso não é um bug — é o comportamento pretendido do sistema de permissões.

Passos para corrigir a substituição do cargo do bot que não está sendo aplicada

Siga estes passos em ordem para garantir que a substituição do cargo do bot seja aplicada corretamente. Você precisa da permissão Gerenciar Servidor ou da permissão Administrador para fazer essas alterações.

Passo 1: Verifique a substituição de canal do cargo @everyone

  1. Abra as configurações do canal
    Clique com o botão direito no nome do canal no seu servidor e selecione Editar Canal. Alternativamente, clique no ícone de engrenagem ao lado do nome do canal.
  2. Vá para Permissões
    Na barra lateral esquerda, clique em Permissões. Você verá uma lista de cargos com substituições para este canal.
  3. Localize o cargo @everyone
    Encontre o cargo @everyone na lista. Clique nele para ver suas permissões específicas do canal.
  4. Verifique se há negações
    Procure por ícones de X vermelho ao lado de permissões como Enviar Mensagens, Ler Mensagens ou Ler Histórico de Mensagens. Se alguma delas estiver definida como negada, a substituição de permissão do cargo do bot não funcionará.
  5. Altere a negação para neutro
    Clique no ícone de barra cinza (/) ao lado de cada permissão negada para defini-la como neutra. Isso remove a negação e permite que a substituição do cargo do bot entre em vigor.

Passo 2: Verifique a substituição de canal do cargo do bot

  1. Encontre o cargo do bot nas permissões do canal
    Na mesma aba de Permissões, role para encontrar o cargo do seu bot. Se não estiver listado, clique no botão + para adicioná-lo.
  2. Defina a substituição como permitida
    Clique no ícone de visto verde ao lado das permissões que você deseja que o bot tenha, como Enviar Mensagens e Ler Histórico de Mensagens.
  3. Salve as alterações
    Clique em Salvar Alterações na parte inferior da página de permissões.

Passo 3: Ajuste a hierarquia de cargos

  1. Abra as configurações do servidor
    Clique no nome do servidor no canto superior esquerdo e selecione Configurações do Servidor no menu suspenso.
  2. Vá para Cargos
    Na barra lateral esquerda, clique em Cargos. Você verá uma lista de todos os cargos no seu servidor.
  3. Arraste o cargo do bot para uma posição mais alta
    Clique e arraste o cargo do bot para uma posição acima de qualquer cargo que possa ter uma permissão de negação conflitante. Por exemplo, se um cargo Moderador negar Enviar Mensagens no canal, coloque o cargo do bot acima do cargo Moderador.
  4. Confirme a nova ordem
    Solte o cargo para salvar sua nova posição. O cargo do bot agora tem prioridade sobre cargos inferiores.

Passo 4: Teste o bot no canal

  1. Envie uma mensagem de teste como o bot
    Use um comando ou script para fazer o bot enviar uma mensagem no canal. Por exemplo, use !test se o seu bot tiver um comando de teste.
  2. Verifique a capacidade do bot de ler o histórico
    Use um comando que busque mensagens recentes. Se o bot conseguir ler mensagens, a substituição está funcionando.
  3. Se o bot ainda falhar
    Repita os passos 1 a 3. Certifique-se de que nenhum outro cargo atribuído ao bot tenha uma negação. Bots podem ter vários cargos, e qualquer cargo com uma negação bloqueará a ação.

ADVERTISEMENT

Se o Discord ainda ignorar a substituição do cargo do bot

Bot tem vários cargos com permissões conflitantes

Bots do Discord podem ser atribuídos a vários cargos. Se um desses cargos tiver uma negação para uma permissão, essa negação substitui qualquer permissão de outro cargo. Para corrigir isso, remova o bot de qualquer cargo que tenha uma negação para a permissão que você deseja permitir. Vá para Configurações do Servidor > Cargos, clique no cargo com a negação e defina a permissão como neutra. Alternativamente, remova o bot desse cargo completamente indo até a lista de membros do servidor, clicando com o botão direito no bot e selecionando Cargos para desmarcar o cargo conflitante.

Substituição específica do canal para um cargo superior está definida como negada

Mesmo que o cargo @everyone esteja neutro, outro cargo que seja superior na hierarquia pode ter uma negação no nível do canal. Por exemplo, se um cargo Admin tiver uma negação para Enviar Mensagens no canal, e o bot também estiver atribuído ao cargo Admin, a negação vence. Verifique todos os cargos atribuídos ao bot e certifique-se de que nenhum deles tenha uma negação no nível do canal. Você pode fazer isso abrindo as permissões do canal e revisando cada cargo atribuído ao bot.

Negação de permissão em todo o servidor substitui permissões de canal

Se o cargo do bot tiver uma negação em todo o servidor para uma permissão, uma permissão no nível do canal não pode substituí-la. A negação em todo o servidor é avaliada antes das substituições de canal. Vá para Configurações do Servidor > Cargos, clique no cargo do bot e verifique as seções Permissões Gerais e Permissões de Texto. Altere qualquer X vermelho para uma barra cinza para torná-lo neutro. Em seguida, defina a substituição do canal como permitida conforme descrito no Passo 2.

Avaliação de permissões do Discord: servidor vs substituição de canal

Item Permissão no nível do servidor Substituição no nível do canal
Descrição Permissão padrão para o cargo em todos os canais Substituição de permissão específica para um canal
Quando é avaliada Primeiro, antes das substituições de canal Depois das permissões no nível do servidor
Se definida como negada Bloqueia a ação em todos os lugares, a menos que uma substituição de canal a permita — mas apenas se a substituição de canal for de um cargo superior Pode substituir uma permissão de servidor, mas não pode substituir uma negação de servidor a menos que o cargo seja superior na hierarquia
Se definida como permitida Permite a ação em todos os lugares, a menos que uma substituição de canal a negue Pode substituir uma negação de servidor apenas se o cargo for superior ao cargo que definiu a negação de servidor

Esta tabela mostra que uma negação no nível do servidor é muito poderosa. Para contorná-la, você deve alterar a permissão de servidor para neutra ou garantir que o cargo do bot seja superior a qualquer cargo que tenha uma negação de servidor.

Agora você entende por que a herança de permissões do Discord pode fazer com que uma substituição do cargo do bot pareça ignorada. A causa raiz é sempre uma negação conflitante do @everyone, de um cargo superior ou de uma permissão de servidor. Para corrigir, verifique a substituição de canal do @everyone, ajuste a hierarquia de cargos e remova negações conflitantes de todos os cargos atribuídos ao bot. Para configurações avançadas, considere usar um cargo de bot dedicado colocado no topo da lista de cargos e defina todas as suas permissões de servidor como neutras para evitar conflitos.

ADVERTISEMENT