O que é um bot do Discord e como ele funciona

Um bot do Discord é um programa que usa uma conta de bot para receber eventos dos servidores e responder pela API do Discord. Ele precisa de um processo rodando em algum computador para funcionar.

Atualizado em 6 min de leitura

Objetivos de aprendizado

Depois de ler este artigo, você vai conseguir:

  • Entender o que é um bot do Discord e o que ele consegue fazer
  • Saber como Gateway, API REST, intents e slash commands se conectam
  • Conhecer os limites da plataforma e o que um bot precisa para ficar online
Nesta página

Quase todo servidor grande do Discord tem pelo menos um bot: um que dá cargos, outro que toca música, outro que modera spam ou responde dúvidas. Para quem usa, eles parecem membros comuns com uma etiqueta ao lado do nome. Por trás, são programas que alguém escreveu e mantém rodando.

Entender como esse programa conversa com o Discord ajuda a criar o seu, a escolher onde hospedar e a diagnosticar por que um bot some ou para de responder. As regras citadas aqui vêm da documentação oficial para desenvolvedores do Discord, onde você confere os valores atuais.

DiscordCanal/pingGatewayWebSocketAPI RESTHTTPBotseu código,sempre ligado12evento3resposta4
O Discord não roda o seu código: entrega eventos pelo Gateway e aceita respostas pela API REST.

O que é um bot do Discord?#

Um bot do Discord é um programa ligado a uma conta de bot. Você cria um aplicativo no Portal de Desenvolvedores do Discord, o portal gera um usuário bot e um token, e o seu código usa esse token para se autenticar. A partir daí, o programa recebe eventos (alguém entrou, alguém mandou mensagem, alguém usou um comando) e age pela API (envia mensagem, dá cargo, cria canal).

O ponto que confunde iniciantes: o Discord não roda o seu código. Ele só entrega eventos e aceita ordens. O código fica no seu computador, num servidor ou numa hospedagem, e o bot só aparece online enquanto esse processo está ligado e conectado.

O token funciona como uma senha. Quem tem o token controla o bot, por isso ele fica fora do código e do Git. Veja como gerar e proteger o token do bot.

Como um bot do Discord funciona por dentro?#

Duas vias de comunicação trabalham juntas:

  1. Gateway (entrada). É uma conexão WebSocket persistente entre o bot e o Discord. Por ela chegam os eventos em tempo real. Ao conectar, o Discord manda uma mensagem Hello com o intervalo de heartbeat, e o bot precisa enviar um heartbeat nesse ritmo. Se os heartbeats param de chegar, a conexão cai e o bot precisa retomar a sessão.
  2. API REST (saída). Para fazer algo, o bot chama endpoints HTTP: enviar mensagem, responder um comando, editar um cargo. Cada chamada leva o token no cabeçalho Authorization.

Um ciclo completo fica assim: o usuário digita /ping; o Discord envia um evento de interação pelo Gateway; o bot processa e chama a API para responder; a resposta aparece no canal. Com uma rede boa, o ciclo inteiro leva poucas centenas de milissegundos.

Como o Gateway é um WebSocket, o processo do bot precisa ficar ligado o tempo todo. É por isso que um bot fica offline quando você desliga o computador: a conexão fecha junto com o programa.

O que são intents e por que eles importam?#

Intents são filtros que o bot declara ao conectar no Gateway. Cada intent liga um grupo de eventos: servidores, membros, mensagens, reações, estados de voz. Sem o intent, o bot não recebe aqueles eventos, mesmo que tenha permissão no servidor.

Três intents são privilegiados: GUILD_MEMBERS (lista de membros), GUILD_PRESENCES (status e atividade) e MESSAGE_CONTENT (texto das mensagens). Você precisa ligá-los no portal antes de pedi-los no código. Se o código pede um intent privilegiado que não está liberado, o Gateway fecha a conexão com o código 4014. Apps com menos de 10.000 usuários ligam esses intents direto no portal; acima disso, o Discord exige uma revisão.

Na prática, isso explica por que tantos bots migraram de comandos com prefixo (!ajuda) para slash commands: o comando chega como interação, sem precisar ler o texto de todas as mensagens.

Como é o código de um bot simples?#

Com discord.js v14 (que pede uma versão recente do Node.js), um bot que responde /ping cabe em poucas linhas:

js
import { Client, Events, GatewayIntentBits } from "discord.js";

const client = new Client({ intents: [GatewayIntentBits.Guilds] });

client.once(Events.ClientReady, async (c) => {
  // Registra o comando /ping. Em produção, registre com um script separado.
  await c.application.commands.set([
    { name: "ping", description: "Responde com pong" },
  ]);
  console.log(`Online como ${c.user.tag}`);
});

client.on(Events.InteractionCreate, async (interaction) => {
  if (!interaction.isChatInputCommand()) return;
  if (interaction.commandName === "ping") {
    await interaction.reply(`pong (${client.ws.ping} ms)`);
  }
});

client.login(process.env.DISCORD_TOKEN);

O client.login abre o Gateway; o InteractionCreate é o evento que chega por ele; o interaction.reply é uma chamada à API REST. O token vem de uma variável de ambiente. Em Python, a biblioteca equivalente é o discord.py 2.x. O passo a passo completo, do portal ao convite, está em como criar um bot do Discord.

E existe bot do Discord sem Gateway?#

Existe, para um caso específico. O Discord pode entregar as interações (slash commands, botões, menus) de duas formas, e elas são mutuamente exclusivas: pelo Gateway ou por HTTP, para um Interactions Endpoint URL que você configura no portal. No modo HTTP, cada comando chega como uma requisição POST ao seu servidor, e não é preciso manter um WebSocket aberto.

Nos dois modos, a resposta inicial a uma interação precisa sair em até 3 segundos, e o token da interação vale 15 minutos para respostas posteriores. Se o processamento demora mais, o bot responde "pensando" (deferred) e edita a mensagem depois.

O modo HTTP serve para bots que só respondem a comandos. Um bot que precisa reagir a mensagens, entradas de membros ou voz continua dependendo do Gateway.

Para que servem os bots do Discord?#

Os usos mais comuns:

  • Moderação: apagar spam, aplicar castigos, registrar ações em um canal de logs.
  • Utilidades: cargos por reação, boas-vindas, lembretes, enquetes, tickets de suporte.
  • Música e áudio: tocar faixas em canais de voz, muitas vezes com um servidor de áudio separado como o Lavalink.
  • Integrações: avisar de deploys, lives, vendas ou alertas de outros sistemas.
  • Jogos e economia: moedas virtuais, rankings, minijogos.
  • IA: responder perguntas com um modelo de linguagem.

Se você só quer publicar avisos automáticos num canal, talvez nem precise de um bot: um webhook resolve. Veja a diferença em webhook ou bot do Discord.

Quais são os limites que um bot precisa respeitar?#

  • Rate limit da API: até 50 requisições por segundo por bot, além do limite de cada rota. Acima disso, a API devolve erro 429. Detalhes em erro 429 no Discord.
  • Conexões ao Gateway: no máximo 1.000 identificações (IDENTIFY) a cada 24 horas. Um bot que reinicia em loop pode estourar esse limite, e o Discord então encerra as sessões e redefine o token.
  • Sharding: cada conexão (shard) atende no máximo 2.500 servidores. A partir disso, o bot precisa dividir a carga em vários shards.
  • Verificação: bots em 100 servidores ou mais precisam ser verificados pelo Discord.

O que um bot precisa para ficar online 24 horas?#

Precisa de um processo ligado sem parar, com internet estável e reinício automático se o programa cair. No seu computador isso dura até você desligar a máquina. Para um bot de verdade, as opções são um VPS, que você mesmo configura, ou uma hospedagem de aplicações, que já entrega o processo sempre ligado. A comparação está em como manter um bot do Discord online 24/7, e a estimativa de preço em quanto custa hospedar um bot do Discord.

Como fazer isso na Square Cloud#

Na Square Cloud, o bot roda num container isolado, sempre ligado, sem modo de suspensão e com reinício automático (ligado por padrão no deploy pelo painel) quando o processo encerra com erro. A conexão com o Gateway fica aberta mesmo com o seu computador desligado, e a latência média até o Gateway do Discord é de cerca de 30 ms. Você pode usar discord.js, discord.py, JDA, Discord.Net ou outra biblioteca de Gateway, com sharding e voz, e o FFmpeg já vem no container.

O deploy é por ZIP no painel, pela CLI, pelo GitHub ou pela extensão do VS Code. O token fica numa variável de ambiente da aplicação, fora do código. O arquivo squarecloud.app é opcional: o painel gera runtime, memória e arquivo principal no deploy, e escrevê-lo na raiz do projeto é a alternativa.

Todos os planos são pagos. O Hobby começa em R$ 12,49 por mês, com 1 GB de RAM, e a RAM do plano é dividida entre as suas aplicações, com mínimo de 256 MB por bot. Veja os detalhes em hospedagem de bots do Discord.

Hospedagem de bots

Seu bot online 24/7, com reinício automático

Saiba mais

Perguntas frequentes

Bot do Discord é a mesma coisa que webhook?

Não. Um webhook só envia mensagens para um canal e não recebe nada. Um bot tem uma conta própria, recebe eventos e responde a comandos dos usuários.

O bot fica online sozinho depois que eu crio no portal?

Não. Criar o app no Portal de Desenvolvedores só gera a conta e o token. O bot só aparece online enquanto o seu programa está rodando e conectado ao Gateway.

Preciso saber programar para ter um bot?

Para um bot próprio, sim. Você escreve o código com uma biblioteca como discord.js (JavaScript) ou discord.py (Python). Sem programar, a alternativa é adicionar ao servidor um bot pronto feito por outra pessoa.

Um bot do Discord pode ler todas as mensagens?

Só se o intent privilegiado Message Content estiver ativado no portal e pedido no código. Sem ele, o bot recebe o evento da mensagem, mas o texto vem vazio, exceto em menções e mensagens diretas ao bot.

Próximo artigoO que é sharding no Discord e quando seu bot precisaSharding divide a conexão do bot com o Discord em várias sessões, cada uma com parte dos servidores. É obrigatório a partir de 2.500 servidores. Veja como funciona.