Ao definir uma substituição de permissão de canal para um bot, ele pode continuar sem conseguir ler mensagens, enviar mensagens ou acessar canais de voz. Isso acontece mesmo que a substituição apareça corretamente na lista de permissões do canal. A causa raiz geralmente é um conflito entre várias fontes de permissão, como permissões baseadas em cargos, permissões do servidor ou a ordem em que o Discord avalia as substituições. Este artigo explica por que as substituições de permissão falham para bots e fornece correções passo a passo para garantir que seu bot receba exatamente as permissões atribuídas.
Principais conclusões: corrigir substituições de permissão de bot no Discord
- Permissões do canal > Permissões avançadas > Verificar permissões negadas: Uma única marca de verificação negada substitui todas as permissões permitidas de outras fontes.
- Configurações do servidor > Cargos > Hierarquia do cargo do bot: Coloque o cargo do bot acima do cargo @everyone para evitar que negações baseadas em cargos bloqueiem a substituição.
- Permissões do canal > Adicionar substituição de membro para o bot: Atribuir uma substituição específica para o bot como membro contorna conflitos de permissão baseados em cargos.
Por que as substituições de permissão de canal falham para bots
O Discord avalia permissões usando uma hierarquia de fontes. Para qualquer ação, a permissão final é determinada verificando essas fontes em ordem: permissões de cargo do servidor, substituições de cargo específicas do canal e substituições específicas de membro. A fonte mais específica vence, mas apenas se ela permitir ou negar explicitamente a permissão. Se uma fonte estiver definida como neutra, o Discord recorre à próxima fonte na cadeia.
Um bot geralmente tem apenas um cargo: seu cargo de bot. Esse cargo herda permissões do cargo @everyone e de quaisquer outros cargos atribuídos ao bot. Quando você cria uma substituição de permissão de canal para o cargo do bot, está adicionando uma substituição de cargo específica do canal. No entanto, se qualquer outro cargo atribuído ao bot tiver uma permissão Negada para a mesma ação naquele canal, a permissão Negada substitui sua substituição Permitida. Da mesma forma, se o cargo @everyone tiver uma permissão Negada no canal, essa negação se aplica a todos os membros, incluindo bots, a menos que o cargo do bot ou uma substituição de membro permita explicitamente a ação.
Outra causa comum é a ordem da hierarquia de cargos. O Discord processa substituições baseadas em cargos na ordem da posição do cargo. Se o cargo do bot for inferior a outro cargo que nega uma permissão, a negação do cargo superior tem precedência. Por fim, se o bot foi convidado com a permissão Administrador, essa permissão substitui todas as configurações específicas do canal, incluindo suas substituições.
Passos para corrigir substituição de permissão que não se aplica a um bot
Siga estes passos em ordem. Após cada passo, teste o bot tentando a ação que estava bloqueada anteriormente.
- Verifique permissões negadas no cargo do bot no canal
Abra o canal onde a substituição não está funcionando. Clique no ícone de engrenagem para abrir as Configurações do canal. Vá em Permissões. Encontre o cargo do bot na lista. Clique no cargo para ver suas substituições. Procure por marcas de verificação vermelhas (Negado) ao lado das permissões que você deseja que o bot tenha. Se vir uma marca de verificação Negada, clique nela para mudar para verde (Permitido) ou um traço cinza (neutro). Salve as alterações. - Verifique as permissões do cargo @everyone no canal
Na mesma lista de Permissões do canal, clique no cargo @everyone. Certifique-se de que nenhuma permissão crítica esteja definida como Negada. Por exemplo, se @everyone tiver Negado para Ler Mensagens, o bot não poderá ler o canal a menos que seu próprio cargo ou uma substituição de membro permita explicitamente. Altere as permissões Negadas para neutro (traço cinza) ou Permitido conforme necessário. Salve as alterações. - Verifique outros cargos atribuídos ao bot
Vá em Configurações do servidor > Cargos. Observe que um bot pode ter apenas um cargo: seu cargo de bot. No entanto, se você adicionou manualmente outros cargos ao usuário do bot, esses cargos também contribuem com permissões. Em Configurações do servidor > Cargos, clique em cada cargo adicional atribuído ao bot. Role até o canal em questão e verifique se o cargo não tem uma permissão Negada para a ação necessária. Remova a negação ou remova o cargo extra do bot. - Ajuste a posição do cargo do bot
Em Configurações do servidor > Cargos, arraste o cargo do bot para cima do cargo @everyone. Substituições baseadas em cargos de cargos superiores têm precedência sobre cargos inferiores. Colocar o cargo do bot no topo garante que suas substituições Permitidas não sejam bloqueadas por uma negação do @everyone ou de outros cargos abaixo dele. Salve a ordem dos cargos. - Crie uma substituição de membro para o bot
Se as substituições baseadas em cargos ainda não funcionarem, crie uma substituição específica para o membro. No canal, vá em Permissões > Adicionar membros ou cargos. Digite o nome de usuário do bot e selecione-o. Defina as permissões desejadas como Permitido. Substituições de membro são a fonte de permissão mais específica no Discord. Elas substituem todas as permissões baseadas em cargos, incluindo substituições de cargo. Salve as alterações. - Revogue a permissão de Administrador do bot
Se o bot foi convidado com a permissão Administrador, ele ignora todas as substituições de permissão de canal. Para verificar isso, vá em Configurações do servidor > Cargos > cargo do bot. Procure pela permissão Administrador. Se estiver ativada, desative-a. Salve as alterações. Em seguida, teste o bot novamente. Observe que alguns bots precisam da permissão Administrador para funcionar completamente. Nesse caso, você não pode usar substituições de canal para restringir o bot; deve gerenciar o acesso dele no nível do servidor.
Se o Discord ainda tiver problemas após a correção principal
Bot aparece offline ou não responde após alteração de permissão
Após alterar permissões, alguns bots precisam ser reiniciados para reler o novo estado de permissão. Expulse o bot do servidor e reconvide-o usando um novo link de convite com as permissões corretas. Alternativamente, se o bot tiver um painel de controle, use-o para reconectar o bot ao servidor.
Substituição de permissão funciona para humanos, mas não para bots
Isso acontece quando o cargo do bot não está selecionado na substituição do canal. Ao adicionar uma substituição para um cargo, você deve escolher especificamente o cargo do bot, não um cargo humano. Além disso, certifique-se de que o cargo do bot seja o único cargo atribuído ao bot. Se o bot tiver vários cargos, o cálculo de permissão se torna complexo e pode produzir resultados inesperados.
Bot pode ler o canal, mas não consegue enviar mensagens
Verifique a permissão Enviar Mensagens na substituição do canal para o cargo do bot. Verifique também o cargo @everyone. Se @everyone tiver Negado para Enviar Mensagens, o bot não poderá enviar mensagens a menos que seu cargo ou uma substituição de membro permita explicitamente. Além disso, verifique se o canal não está no Modo lento, o que pode atrasar o envio de mensagens.
Tipos de substituição de permissão: substituição de cargo vs substituição de membro vs padrão do servidor
| Item | Substituição de cargo | Substituição de membro | Padrão do servidor |
|---|---|---|---|
| Escopo | Aplica-se a todos os membros com aquele cargo no canal | Aplica-se apenas a um membro específico no canal | Aplica-se a todos os membros em todos os canais, a menos que substituído |
| Prioridade | Segunda maior (após substituição de membro) | Mais alta | Mais baixa |
| Local de configuração | Permissões do canal > Adicionar membros ou cargos > selecionar cargo | Permissões do canal > Adicionar membros ou cargos > selecionar membro | Configurações do servidor > Cargos > selecionar cargo > Permissões |
| Melhor para bots | Funciona se o bot tiver apenas um cargo e o cargo estiver acima de @everyone | Funciona independentemente de outros conflitos de cargo | Não recomendado para acesso específico de bot |
Agora você sabe como diagnosticar e corrigir substituições de permissão de canal que não se aplicam a bots. Comece verificando permissões negadas no cargo do bot e no cargo @everyone no canal. Em seguida, ajuste a hierarquia de cargos para que o cargo do bot fique acima de @everyone. Se o problema persistir, crie uma substituição específica de membro para o bot. Para controle avançado, considere usar um painel de controle do bot que possa gerenciar suas próprias permissões através do sistema OAuth2 do Discord, o que contorna problemas manuais de permissão do servidor.