---
title: "Bot de comandos para grupo de WhatsApp (!menu, !regras)"
description: "Monte um bot de comandos para grupo de WhatsApp com a API não oficial: parser de !menu e !regras, boas-vindas, resposta citada e controle anti-flood."
url: "https://api-wa.me/blog/bot-comandos-grupo-whatsapp-api"
language: "pt-BR"
og:type: "article"
og:site_name: "WAME API"
---

[Início](https://api-wa.me/)/[Blog da API do WhatsApp](https://api-wa.me/blog)/Bot de comandos para grupo de WhatsApp (!menu, !regras) com a API não oficial

Raphael Serafim· Publicado em 28 de setembro de 2026· 9 min de leitura

Compartilhar

# Bot de comandos para grupo de WhatsApp (!menu, !regras) com a API não oficial

Monte um bot de comandos para grupo de WhatsApp com a API não oficial: parser de !menu e !regras, boas-vindas, resposta citada e controle anti-flood.

Copiar para LLM[Ver como Markdown](https://api-wa.me/blog/bot-comandos-grupo-whatsapp-api.md)

**Um bot de comandos para grupo de WhatsApp é um webhook que lê cada mensagem do grupo, reconhece textos que começam com um prefixo — `!menu`, `!regras`, `!horario` — e responde no próprio grupo enviando para o id `[[email protected]](https://api-wa.me/cdn-cgi/l/email-protection)`.** Com a API não oficial da WAME isso é possível porque a instância participa do grupo como um aparelho comum: vê as mensagens, responde, cita e, se for administradora, modera.

O [guia de automação de grupos](https://api-wa.me/blog/automatizar-grupos-whatsapp-api) cobre a parte administrativa — criar grupo, aprovar entrada, restringir quem posta. Aqui o foco é outro: **o bot conversando com os membros**. Parser de comandos, boas-vindas, resposta quando é mencionado e, principalmente, como não transformar o grupo num lugar insuportável.

## Por que só a API não oficial faz isso

A Cloud API oficial da Meta trabalha com conversas individuais e com um modelo de grupos muito mais limitado. Um bot que vive dentro de um grupo comum de WhatsApp — o grupo da turma, da comunidade de clientes, do condomínio — depende da conexão como aparelho, que é o que a [API não oficial](https://api-wa.me/blog/api-nao-oficial-whatsapp) oferece. Você conecta o número por QR Code ou código de pareamento, adiciona esse número ao grupo e pronto: o bot está lá.

## A estrutura do bot

Todo bot de comandos tem as mesmas peças:

1. **Receber** a mensagem pelo webhook.
2. **Filtrar**: só mensagens de grupo, só texto, nunca as do próprio bot.
3. **Interpretar**: o texto começa com o prefixo? Qual comando? Quais argumentos?
4. **Controlar ritmo**: esse usuário já pediu isso agora? O grupo está recebendo resposta demais?
5. **Responder**, de preferência citando a mensagem original.

## Receber e filtrar

O webhook no formato `meta` entrega a mensagem no envelope padrão. O `from`, o `id` e o `text.body` você já conhece do [chatbot com OpenAI](https://api-wa.me/blog/chatbot-ia-openai-whatsapp). Em grupo, o envelope segue a Cloud API: `from` é **quem enviou dentro do grupo** e o grupo vem em `group_id` (o JID terminado em `@g.us`). Em conversa individual, `group_id` simplesmente não aparece. Isolamos essa leitura numa função:

javascript

Copiar

```
function extrair(body) {
  const msg = body?.entry?.[0]?.changes?.[0]?.value?.messages?.[0];
  if (!msg || msg.type !== 'text') return null;

  const grupo = msg.group_id;        // ex.: "[email protected]" — só existe em grupo
  const autor = msg.from;            // em grupo, from é quem mandou
  if (!grupo) return null;           // este bot só atua em grupos

  return { grupo, autor, id: msg.id, texto: msg.text.body.trim() };
}
```

Duas guardas que evitam dor de cabeça:

- **Ignore as mensagens enviadas pelo próprio número.** Se o seu webhook de mensagens enviadas estiver ativo, o bot pode ler a própria resposta e entrar em loop.
- **Ignore o que não é texto.** Figurinha, áudio e foto não são comando.

## O parser de comandos

Um dicionário de comandos mantém o código organizado e facilita adicionar novos:

javascript

Copiar

```
const PREFIXO = '!';

const comandos = {
  menu: () =>
    '*Comandos disponíveis*\n' +
    '!regras — regras do grupo\n' +
    '!horario — horário de atendimento\n' +
    '!link — link de convite\n' +
    '!suporte — falar com a equipe no privado',

  regras: () =>
    '*Regras do grupo*\n' +
    '1. Sem divulgação de outros produtos\n' +
    '2. Dúvidas técnicas, sempre com print\n' +
    '3. Respeito acima de tudo',

  horario: () => 'Atendemos de segunda a sexta, das 9h às 18h.',

  link: async ({ grupo }) => {
    const r = await fetch(`${BASE}/groups/${encodeURIComponent(grupo)}/invite`);
    const dados = await r.json();
    return `Convite do grupo: ${JSON.stringify(dados)}`; // formate conforme a resposta em /docs
  },
};

function interpretar(texto) {
  if (!texto.startsWith(PREFIXO)) return null;
  const [nome, ...args] = texto.slice(PREFIXO.length).split(/\s+/);
  return { nome: nome.toLowerCase(), args };
}
```

Comando desconhecido **não recebe resposta**. Parece contraintuitivo, mas responder "comando inválido" a cada `!` digitado por engano é exatamente o tipo de ruído que faz os membros silenciarem o grupo.

## Responder citando a mensagem

Em grupo, responder "solto" confunde: com cinco pessoas usando o bot ao mesmo tempo, ninguém sabe qual resposta é de quem. A resposta citada resolve — `POST /{key}/message/{id}/text`, com o `id` da mensagem recebida e o `to` apontando para o grupo:

bash

Copiar

```
curl -X POST "https://us.api-wa.me/SUA_KEY/message/ID_DA_MENSAGEM/text" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "[email protected]",
    "text": "Atendemos de segunda a sexta, das 9h às 18h."
  }'
```

Mais sobre esse recurso em [como responder mensagem citada pela API](https://api-wa.me/blog/tutorial-responder-mensagem-citada-whatsapp-api).

## Anti-flood: o que separa bot útil de bot irritante

Esta é a parte que a maioria dos tutoriais pula. Um grupo com 200 pessoas e um bot sem freio vira um spam de `!menu` em minutos. Três controles simples:

javascript

Copiar

```
const ultimoUso = new Map();     // `${grupo}:${autor}` -> timestamp
const respostasGrupo = new Map(); // grupo -> [timestamps]

const COOLDOWN_USUARIO = 30_000; // 30s por pessoa
const MAX_POR_MINUTO = 6;        // respostas do bot por grupo por minuto

function podeResponder({ grupo, autor }) {
  const agora = Date.now();

  const chave = `${grupo}:${autor}`;
  if (agora - (ultimoUso.get(chave) ?? 0) < COOLDOWN_USUARIO) return false;

  const recentes = (respostasGrupo.get(grupo) ?? []).filter((t) => agora - t < 60_000);
  if (recentes.length >= MAX_POR_MINUTO) return false;

  ultimoUso.set(chave, agora);
  respostasGrupo.set(grupo, [...recentes, agora]);
  return true;
}
```

- **Cooldown por usuário**: a mesma pessoa não dispara o bot várias vezes seguidas.
- **Teto por grupo**: mesmo com muita gente pedindo, o bot não domina a conversa.
- **Silêncio quando estoura**: não responda "aguarde 30 segundos" — isso também é mensagem.

Os valores são pontos de partida; ajuste ao tamanho e ao ritmo do grupo. Em produção, guarde esses contadores no Redis se houver mais de um processo.

## Juntando tudo

javascript

Copiar

```
import express from 'express';
const BASE = 'https://us.api-wa.me/SUA_KEY';
const app = express();
app.use(express.json());

app.post('/webhook/wame', async (req, res) => {
  res.sendStatus(200);

  const msg = extrair(req.body);
  if (!msg) return;

  const cmd = interpretar(msg.texto);
  if (!cmd || !comandos[cmd.nome]) return;
  if (!podeResponder(msg)) return;

  const resposta = await comandos[cmd.nome]({ ...msg, args: cmd.args });

  await fetch(`${BASE}/message/${encodeURIComponent(msg.id)}/text`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ to: msg.grupo, text: resposta }),
  });
});

app.listen(3000);
```

## Boas-vindas sem poluir o grupo

Quando alguém entra, o webhook recebe o evento de participante do grupo. A tentação é mandar um "Bem-vindo, fulano!" no grupo a cada entrada — e num grupo que recebe 30 pessoas por dia, isso vira metade do histórico.

Duas alternativas melhores:

- **Boas-vindas no privado**: uma mensagem direta para quem entrou, com as regras e o `!menu`. O grupo continua limpo.
- **Boas-vindas agrupadas**: acumule as entradas e mande uma única mensagem a cada algumas horas: "Bem-vindos aos 12 novos membros de hoje! Digitem !regras".

## Responder quando mencionado

Muitos membros não lembram dos comandos, mas marcam o bot: "@Bot qual o horário?". Tratar a menção como um `!menu` implícito ajuda. O evento de mensagem informa os números mencionados (veja o campo na [documentação](https://api-wa.me/docs)); se o número do bot estiver entre eles, responda com o menu citando a mensagem. Com o mesmo anti-flood, claro.

## Comandos de moderação (só para admins)

Se o número do bot for administrador, dá para criar comandos restritos, como `!fechar` (só admins postam) e `!abrir`:

bash

Copiar

```
# Somente admins enviam mensagens
curl -X PATCH "https://us.api-wa.me/SUA_KEY/groups/ID_DO_GRUPO?setting=announcement"

# Todos voltam a poder enviar
curl -X PATCH "https://us.api-wa.me/SUA_KEY/groups/ID_DO_GRUPO?setting=not_announcement"
```

Confira no seu banco se o `autor` do comando é um dos administradores antes de executar. Não confie no texto: qualquer membro pode digitar `!fechar`.

## Bot em grupo e risco de bloqueio

Um bot que responde quando é chamado, dentro de grupos onde foi adicionado de propósito, é uso legítimo — e é o tipo de uso em que a taxa de bloqueio da API não oficial fica muito baixa. A WAME ajuda por trás: cada instância tem identidade de dispositivo própria e coerente com o país do número, o envio segue um ritmo humano e há limites de volume e de destinatários novos.

O que gera problema é outra coisa: usar o número para entrar em grupos de terceiros e divulgar, ou responder a cada mensagem do grupo. Isso é spam, e a WAME não apoia. Vale lembrar também que a camada não oficial não é afiliada nem endossada pelo WhatsApp ou pela Meta, e o uso é de responsabilidade de quem opera o número.

Se o seu grupo cresceu e virou comunidade, veja [como criar e gerenciar uma comunidade pela API](https://api-wa.me/blog/tutorial-criar-comunidade-whatsapp-api). E se o grupo é um produto pago, o guia do [grupo VIP com entrada e saída automáticas](https://api-wa.me/blog/grupo-vip-pago-whatsapp-automatizar-api) mostra como ligar o acesso ao pagamento.

## Conclusão

Um bot de comandos para grupo é um parser, um dicionário de respostas e — o mais importante — um freio. Com a API não oficial da WAME você recebe as mensagens do grupo no webhook, responde citando com `POST /{key}/message/{id}/text` e, se o número for admin, modera com `PATCH /{key}/groups/{id}`. O resto é disciplina: responder só a comandos conhecidos, com cooldown por pessoa, teto por grupo e boas-vindas que não poluem. Assim o bot vira ferramenta que os membros usam, não barulho que eles silenciam. Todos os endpoints estão na [documentação](https://api-wa.me/docs).

### Pronto para automatizar seu WhatsApp?

Crie sua conta gratuita e comece a enviar mensagens pela API em minutos.

[Começar grátis](https://portal.api-wa.me/sign-up)

## Perguntas frequentes

Dá para criar um bot de comandos para grupo de WhatsApp?+

Sim. Com a API não oficial da WAME, as mensagens do grupo chegam no seu webhook. Seu código verifica se o texto começa com um prefixo como ! e responde no próprio grupo, enviando para o id do grupo no formato [\[email protected\]](https://api-wa.me/cdn-cgi/l/email-protection).

O bot precisa ser administrador do grupo?+

Para ler e responder comandos, não: basta o número estar no grupo. Para ações de moderação, como remover participante, mudar configuração ou aprovar entrada, o número precisa ser administrador.

Como faço o bot responder citando a mensagem do usuário?+

Use POST /{key}/message/{id}/text, onde id é o identificador da mensagem recebida, com to igual ao id do grupo. A resposta aparece com a citação da mensagem original, o que deixa claro a quem o bot está respondendo.

Como evitar que o bot inunde o grupo?+

Com três controles: cooldown por usuário, limite de respostas por minuto no grupo e ignorar comandos repetidos em sequência. Um bot que responde tudo instantaneamente polui o grupo e tem cara de robô.

Bot em grupo aumenta o risco de bloqueio do número?+

Um bot que responde a comandos pedidos pelos membros é uso legítimo e de baixo risco. O risco aparece quando o número é usado para entrar em grupos alheios e divulgar, o que é spam — algo que a WAME não apoia.

## Continue lendo

[### API do WhatsApp para escolas e cursos: grupos por turma, avisos e reunião de pais

Como escolas e cursos usam a API não oficial do WhatsApp: grupos por turma criados por código, modo avisos, mensagem fixada, comunidade, lembretes e LGPD.](https://api-wa.me/blog/api-whatsapp-escola-curso-grupos-turma)[### Como criar um bot de WhatsApp com a API não oficial (do zero ao menu com botões)

Crie um bot de WhatsApp com a API não oficial: webhook em Node.js, máquina de estados, menu com lista e botões, 'digitando...' e passagem para humano.](https://api-wa.me/blog/criar-bot-whatsapp-api-nao-oficial)[### Grupo VIP pago no WhatsApp: entrada e saída automáticas pelo pagamento

Automatize um grupo VIP pago no WhatsApp: libere a entrada quando o pagamento cai e remova quem cancelou, com a API não oficial da WAME.](https://api-wa.me/blog/grupo-vip-pago-whatsapp-automatizar-api)

[Voltar ao blog](https://api-wa.me/blog)

## Structured data

```json
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "WAME API",
  "alternateName": "API Oficial e Não Oficial de WhatsApp, Instagram, Messenger e Telegram",
  "url": "https://api-wa.me",
  "inLanguage": "pt-BR",
  "publisher": {
    "@id": "https://api-wa.me/#organization",
    "@type": "Organization",
    "name": "WAME API",
    "url": "https://api-wa.me"
  }
}
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://api-wa.me/#organization",
  "name": "WAME API",
  "alternateName": [
    "WAME",
    "Wame API",
    "wame.api.br",
    "api-wa.me"
  ],
  "url": "https://api-wa.me",
  "logo": {
    "@type": "ImageObject",
    "url": "https://api-wa.me/images/web-app-manifest-512x512.png",
    "width": 512,
    "height": 512
  },
  "disambiguatingDescription": "WAME API é uma empresa brasileira de software, fundada em 2017 e parceira oficial da Meta (Meta Business Partner), que fornece APIs de WhatsApp, Instagram Direct e Messenger. Não tem relação com o wa.me, que é o encurtador de links operado pela WhatsApp LLC.",
  "identifier": {
    "@type": "PropertyValue",
    "propertyID": "INPI-BR",
    "name": "Pedido de registro de marca (INPI, classe NCL 42)",
    "value": "944724159"
  },
  "foundingDate": "2017",
  "slogan": "Parceira Oficial da Meta — WhatsApp, Instagram, Messenger e Telegram numa instância só. Desde 2017.",
  "description": "Plataforma brasileira e Parceira Oficial da Meta (Meta Business Partner) para as APIs oficiais de WhatsApp (Cloud API), Instagram Direct e Messenger — os três numa única instância, com os mesmos endpoints e um único formato de webhook. Também oferece a API não oficial via QR Code e o Telegram, na mesma plataforma. No mercado desde 2017, com mais de 50 mil instâncias criadas, 99,9% de uptime e suporte humano 24/7 em português. SDKs oficiais para Node.js/TypeScript e PHP.",
  "knowsAbout": [
    "WhatsApp Cloud API oficial (Meta)",
    "API oficial de Instagram (Direct)",
    "API oficial de Messenger",
    "API multicanal Meta",
    "Meta Business Partner",
    "WhatsApp API",
    "API não oficial de WhatsApp",
    "automação de WhatsApp",
    "números virtuais",
    "webhooks"
  ],
  "sameAs": [
    "https://github.com/wame-api",
    "https://www.linkedin.com/company/wameapi",
    "https://www.instagram.com/wame.api/",
    "https://www.youtube.com/@wameapi"
  ],
  "contactPoint": {
    "@type": "ContactPoint",
    "contactType": "customer support",
    "url": "https://api-wa.me/contact",
    "availableLanguage": [
      "Portuguese"
    ]
  }
}
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "Bot de comandos para grupo de WhatsApp (!menu, !regras) com a API não oficial",
  "description": "Monte um bot de comandos para grupo de WhatsApp com a API não oficial: parser de !menu e !regras, boas-vindas, resposta citada e controle anti-flood.",
  "image": "https://api-wa.me/blog/bot-comandos-grupo-whatsapp-api/opengraph-image",
  "datePublished": "2026-09-28",
  "dateModified": "2026-09-28",
  "author": {
    "@type": "Person",
    "name": "Raphael Serafim",
    "url": "https://github.com/raphaelvserafim",
    "sameAs": [
      "https://github.com/raphaelvserafim"
    ]
  },
  "publisher": {
    "@type": "Organization",
    "name": "api-wa.me",
    "logo": {
      "@type": "ImageObject",
      "url": "https://api-wa.me/images/screenshot.png"
    }
  },
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://api-wa.me/blog/bot-comandos-grupo-whatsapp-api"
  },
  "keywords": "api whatsapp não oficial, api não oficial whatsapp, bot para grupo whatsapp, bot de comandos whatsapp, api whatsapp grupos, comandos bot whatsapp grupo, criar bot whatsapp",
  "inLanguage": "pt-BR"
}
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://api-wa.me"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Blog da API do WhatsApp",
      "item": "https://api-wa.me/blog"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Bot de comandos para grupo de WhatsApp (!menu, !regras) com a API não oficial",
      "item": "https://api-wa.me/blog/bot-comandos-grupo-whatsapp-api"
    }
  ]
}
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Dá para criar um bot de comandos para grupo de WhatsApp?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Sim. Com a API não oficial da WAME, as mensagens do grupo chegam no seu webhook. Seu código verifica se o texto começa com um prefixo como ! e responde no próprio grupo, enviando para o id do grupo no formato groupId@g.us."
      }
    },
    {
      "@type": "Question",
      "name": "O bot precisa ser administrador do grupo?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Para ler e responder comandos, não: basta o número estar no grupo. Para ações de moderação, como remover participante, mudar configuração ou aprovar entrada, o número precisa ser administrador."
      }
    },
    {
      "@type": "Question",
      "name": "Como faço o bot responder citando a mensagem do usuário?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Use POST /{key}/message/{id}/text, onde id é o identificador da mensagem recebida, com to igual ao id do grupo. A resposta aparece com a citação da mensagem original, o que deixa claro a quem o bot está respondendo."
      }
    },
    {
      "@type": "Question",
      "name": "Como evitar que o bot inunde o grupo?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Com três controles: cooldown por usuário, limite de respostas por minuto no grupo e ignorar comandos repetidos em sequência. Um bot que responde tudo instantaneamente polui o grupo e tem cara de robô."
      }
    },
    {
      "@type": "Question",
      "name": "Bot em grupo aumenta o risco de bloqueio do número?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Um bot que responde a comandos pedidos pelos membros é uso legítimo e de baixo risco. O risco aparece quando o número é usado para entrar em grupos alheios e divulgar, o que é spam — algo que a WAME não apoia."
      }
    }
  ]
}
```
