Quando seu bot do Discord recebe um erro 403 Forbidden ao tentar editar mensagens em certos canais, ele não consegue atualizar suas próprias mensagens ou as de outros usuários. Esse erro geralmente significa que o bot não tem as permissões necessárias para aquele canal específico, mesmo que as tenha no nível do servidor. O sistema de permissões do Discord aplica substituições específicas por canal que podem bloquear as ações do bot. Este artigo explica por que o erro 403 ocorre e fornece correções passo a passo para resolvê-lo.
Principais conclusões: Corrigir erro 403 Forbidden do bot ao editar mensagens
- Configurações do Servidor > Cargos > [Cargo do Bot] > Gerenciar Mensagens: Garante que o cargo do bot tenha a permissão Gerenciar Mensagens no nível do servidor.
- Editar Canal > Permissões > [Cargo do Bot] > Gerenciar Mensagens: Permite permitir ou negar explicitamente a permissão para um canal específico.
- Portal do Desenvolvedor do Discord > Bot > Intenções de Gateway Privilegiadas: Ative a Intenção de Conteúdo de Mensagem se o bot lê o conteúdo da mensagem para editá-la.
Por que os bots do Discord recebem 403 Forbidden ao editar mensagens
O sistema de permissões do Discord usa uma hierarquia: permissões de nível de servidor são herdadas pelos canais, mas substituições específicas de canal podem bloqueá-las. Um erro 403 Forbidden ao editar mensagens significa que o cargo do bot não tem a permissão Gerenciar Mensagens para aquele canal. Isso pode acontecer mesmo que o cargo tenha a permissão no nível do servidor, porque uma substituição de canal pode negá-la. O erro também pode ocorrer se o bot tentar editar uma mensagem que não enviou e o canal restringir essa ação. Além disso, bots que usam versões antigas da API ou não têm a Intenção de Conteúdo de Mensagem podem falhar ao ler o conteúdo da mensagem antes de editar, resultando em um erro 403.
Permissões de nível de servidor vs. nível de canal
No nível do servidor, as permissões são definidas em Configurações do Servidor > Cargos. O cargo do bot deve incluir Gerenciar Mensagens para editar qualquer mensagem. No entanto, cada canal pode ter suas próprias substituições de permissão. Se um canal negar explicitamente Gerenciar Mensagens para o cargo do bot, a permissão de nível de servidor é substituída. O Discord avalia as permissões nesta ordem: cargo @everyone, depois hierarquia de cargos (cargo mais alto primeiro), depois substituições específicas de canal. A configuração mais restritiva vence.
Requisito da Intenção de Conteúdo de Mensagem
Desde agosto de 2022, o Discord exige que bots que leem conteúdo de mensagens (incluindo ao editar) ativem a Intenção de Conteúdo de Mensagem no Portal do Desenvolvedor. Sem essa intenção, o bot não pode acessar o conteúdo das mensagens que recebe. Quando um bot tenta editar uma mensagem e não consegue ler seu conteúdo, o Discord pode retornar um erro 403. Essa intenção é separada da permissão Gerenciar Mensagens.
Passos para corrigir o erro 403 Forbidden ao editar mensagens em canais específicos
Siga estes passos em ordem. Teste o bot após cada passo para ver se o erro foi resolvido.
- Verifique as permissões de nível de servidor do cargo do bot
Abra o Discord e vá para seu servidor. Clique no nome do servidor no canto superior esquerdo e selecione Configurações do Servidor > Cargos. Encontre o cargo atribuído ao seu bot. Em Permissões, certifique-se de que Gerenciar Mensagens está ativado (marca de verificação verde). Se não estiver, ative-o e clique em Salvar Alterações. - Revise as substituições de permissão específicas do canal
Clique com o botão direito no canal onde o erro ocorre e selecione Editar Canal. Vá para a aba Permissões. Na lista Cargos/Membros, encontre o cargo do seu bot. Procure a permissão Gerenciar Mensagens. Se mostrar um X vermelho (negado), clique no menu suspenso e mude para uma marca de verificação verde (permitido). Se a permissão não estiver listada, ela herda do nível do servidor, o que é aceitável. Clique em Salvar Alterações. - Ative a Intenção de Conteúdo de Mensagem no Portal do Desenvolvedor
Vá para o Portal do Desenvolvedor do Discord e selecione sua aplicação do bot. À esquerda, clique em Bot. Role até a seção Intenções de Gateway Privilegiadas. Ative a Intenção de Conteúdo de Mensagem. Clique em Salvar Alterações. Após salvar, reinicie o bot para aplicar a mudança. - Verifique a hierarquia de cargos do bot
Em Configurações do Servidor > Cargos, certifique-se de que o cargo do bot está acima de quaisquer cargos que tenham permissões conflitantes. O Discord usa as permissões do cargo mais alto ao avaliar ações. Arraste o cargo do bot para uma posição mais alta na lista, se necessário. - Verifique se o bot está editando sua própria mensagem
Se o bot está tentando editar uma mensagem que não enviou, a permissão Gerenciar Mensagens é necessária. Se o bot edita apenas suas próprias mensagens, a permissão Gerenciar Mensagens não é necessária, mas o bot ainda deve ter as permissões Enviar Mensagens e Ler Histórico de Mensagens. Confirme se estas estão ativadas na substituição do canal. - Teste com um comando de edição simples
Use um comando do bot que edite um ID de mensagem conhecido. Por exemplo, se seu bot usa discord.py, execute:await message.edit(content="Teste de edição")em um canal onde o bot tenha permissão. Se o erro persistir, verifique os logs do bot para o status HTTP exato e a mensagem de erro.
Se o bot ainda receber 403 Forbidden após a correção principal
Às vezes, o erro continua devido a causas menos óbvias. Aqui estão cenários adicionais e suas soluções.
Bot não consegue editar mensagens em threads
Threads herdam permissões do canal pai, mas também têm suas próprias substituições de permissão. Abra a thread, clique no nome da thread e selecione Editar Thread > Permissões. Adicione o cargo do bot e permita Gerenciar Mensagens. Alternativamente, nas configurações do canal pai, ative Gerenciar Mensagens para o cargo do bot e certifique-se de que a thread não tenha uma substituição de negação.
Bot usa uma versão desatualizada da API
O Discord atualiza periodicamente sua API. Bots executando em versões muito antigas podem encontrar erros de permissão que versões mais recentes tratam corretamente. Atualize a biblioteca do seu bot para a versão mais recente. Para discord.py, execute pip install -U discord.py. Para discord.js, execute npm update discord.js.
Limitação de taxa causando erros 403
Se seu bot envia muitas solicitações de edição rapidamente, o Discord pode retornar um 403 como parte da limitação de taxa. Verifique os logs do bot para erros HTTP 429 misturados com 403s. Implemente o tratamento de limite de taxa adicionando atrasos entre as edições ou usando um sistema de fila. O limite de taxa padrão do Discord é de 5 solicitações a cada 5 segundos por token do bot.
Token do bot ou ID da aplicação incorretos
Se você regenerou o token do bot ou alterou a aplicação, o token antigo pode ainda estar em uso. Gere um novo token no Portal do Desenvolvedor em Bot > Token. Atualize a variável de ambiente ou o arquivo de configuração do seu bot com o novo token. Reinicie o bot.
Comparação: Configurações de permissão que afetam a edição de mensagens do bot
| Configuração | Localização | Efeito no Bot |
|---|---|---|
| Gerenciar Mensagens (Nível do Servidor) | Configurações do Servidor > Cargos > [Cargo do Bot] | Permite editar qualquer mensagem no servidor, a menos que substituído por um canal |
| Gerenciar Mensagens (Substituição de Canal) | Editar Canal > Permissões > [Cargo do Bot] | Substitui a permissão de nível de servidor para aquele canal |
| Intenção de Conteúdo de Mensagem | Portal do Desenvolvedor > Bot > Intenções de Gateway Privilegiadas | Necessária para bots lerem conteúdo de mensagens; sem ela, a edição pode falhar |
| Ler Histórico de Mensagens | Configurações do Servidor ou Substituição de Canal | Permite que o bot veja mensagens passadas; necessário para buscar a mensagem a ser editada |
| Enviar Mensagens | Configurações do Servidor ou Substituição de Canal | Necessária para o bot enviar a mensagem editada se ele a reenviar |
Após aplicar as correções acima, seu bot deve ser capaz de editar mensagens no canal específico sem erro 403. Para evitar problemas futuros, audite as permissões do seu bot regularmente usando a página Configurações do Servidor > Cargos e verifique as substituições de canal ao adicionar novos canais. Para controle avançado, use a calculadora de permissões do Discord no Portal do Desenvolvedor para testar combinações antes de aplicar as alterações.