Base para bots de WhatsApp multifuncional com diversos comandos prontos.
CRIANDO UM BOT DE WHATSAPP DO ZERO (GUIA DEFINITIVO) - BASE COMPLETA + 6 COMANDOS - JAVASCRIPT
- Idiomas disponíveis
- Atenção - suporte
- Sobre o projeto
- Instalação
- Configuração de API
- Funcionalidades
- Auto responder
- Personalização
- Implementação técnica
- Estrutura de pastas
- Erros comuns
- Canal do YouTube
- Contribuindo com o projeto
- Licença
- Disclaimer
-
English — click here
-
Español — haz clic aquí
-
Bahasa Indonesia — klik disini
Nós não prestamos suporte gratuíto caso você tenha adquirido esta base com terceiros e tenha pago por isso.
Este bot sempre foi e sempre será gratuíto.
Caso você tenha pago para utilizar este bot, do jeito que ele está hoje, saiba que você foi enganado.
Nós não temos vínculo nenhum com terceiros e não nos responsabilizamos por isso, também não prestamos suporte nessas condições.
Os únicos recursos pagos deste bot são pertencentes à https://api.spiderx.com.br, nossa API oficial.
Este projeto não possui qualquer vínculo oficial com o WhatsApp. Ele foi desenvolvido de forma independente para interações automatizadas por meio da plataforma.
Não nos responsabilizamos por qualquer uso indevido deste bot. É de responsabilidade exclusiva do usuário garantir que sua utilização esteja em conformidade com os termos de uso do WhatsApp e a legislação vigente.
1 - Abra o Termux e execute os comandos abaixo.
Não tem o Termux? Clique aqui e baixe a última versão ou clique aqui e baixe versão da Play Store caso a versão do MediaFire anterior não funcione.
pkg upgrade -y && pkg update -y && pkg install git -y && pkg install nodejs-lts -y && pkg install ffmpeg -y
2 - Habilite o acesso da pasta storage, no termux.
termux-setup-storage
3 - Escolha uma pasta de sua preferência pra colocar os arquivos do bot.
Pastas mais utilizadas:
- /sdcard
- /storage/emulated/0
- /storage/emulated/0/Download (muito comum quando você baixa o bot pelo .zip)
No nosso exemplo, vamos para a /sdcard
cd /sdcard
4 - Clone o repositório.
git clone https://github.com/guiireal/takeshi-bot.git
5 - Entre na pasta que foi clonada.
cd takeshi-bot
6 - Habilite permissões de leitura e escrita (faça apenas 1x esse passo).
chmod -R 755 ./*
7 - Execute o bot.
npm start
8 - Insira o número de telefone e pressione enter
.
9 - Informe o código que aparece no termux, no seu WhatsApp, assista aqui, caso não encontre essa opção.
10 - Aguarde 10 segundos, depois digite CTRL + C
para parar o bot.
11 - Configure o arquivo config.js
que está dentro da pasta src
.
// Prefixo dos comandos
exports.PREFIX = "/";
// Emoji do bot (mude se preferir).
exports.BOT_EMOJI = "🤖";
// Nome do bot (mude se preferir).
exports.BOT_NAME = "Takeshi Bot";
// Número do bot. Coloque o número do bot
// (apenas números, exatamente como está no WhatsApp).
// Se o seu DDD não for de SP ou do Rio, não coloque o 9 antes do número.
exports.BOT_NUMBER = "558112345678";
// Número do dono do bot. Coloque o número do dono do bot
// (apenas números, exatamente como está no WhatsApp).
// Se o seu DDD não for de SP ou do Rio, não coloque o 9 antes do número.
exports.OWNER_NUMBER = "5521950502020";
// LID do dono do bot.
// Para obter o LID do dono do bot, use o comando <prefixo>get-lid @marca ou +telefone do dono.
exports.OWNER_LID = "219999999999999@lid";
12 - Inicie o bot novamente.
npm start
As principais hosts já oferecem o Takeshi como bot padrão, não sendo necessário nenhuma instalação manual!
Hosts suportadas:
Bronxys | Nexfuture |
---|---|
Grupo oficial | Grupo oficial |
![]() |
![]() |
Speed Cloud | SpeedMaster |
---|---|
Grupo oficial | Grupo oficial |
![]() |
![]() |
1 - Abra um novo terminal e execute os seguintes comandos.
sudo apt update && sudo apt upgrade && sudo apt-get update && sudo apt-get upgrade && sudo apt install ffmpeg
2 - Instale o curl
se não tiver.
sudo apt install curl
3 - Instale o git
se não tiver.
sudo apt install git
4 - Instale o NVM.
curl -o- https://raw.github.com/nvm-sh/nvm/v0.40.3/install.sh | bash
5 - Atualize o source do seu ambiente
source ~/.bashrc
6 - Instale a versão 22 mais recente do node.js.
nvm install 22
7 - Verifique se a versão foi instalada e está ativa.
node -v # Deve exibir a versão 22
8 - Verifique se o npm foi instalado junto.
npm -v # Deverá exibir a versão do npm
9 - Instale o PM2 (recomendado).
npm install pm2 -g
10 - Clone o repositório do bot onde você desejar.
git clone https://github.com/guiireal/takeshi-bot.git
11 - Entre na pasta clonada.
cd takeshi-bot
12 - Digite o seguinte comando.
npm start
13 - O bot vai solicitar que você digite seu número de telefone.
Digite exatamente como está no WhatsApp e apenas números.
Não adicione o 9º dígito em números que não sejam de SP ou RJ.
14 - Conecte o bot no PM2
pm2 start npm --name "takeshi-bot" -- start
15 - O bot exibirá um código de pareamento que deve ser colocado em dispositivos conectados
no seu WhatsApp.
16 - Vá em dispositivos conectados
no seu WhatsApp.
17 - Clique em conectar dispositivo
18 - No canto inferior, clique em Conectar com número de telefone
19 - Coloque o código de pareamento que você recebeu no terminal, que foi feito no passo 15
.
20 - Após isso, no terminal que ficou parado, ele deve exibir que foi conectado com sucesso
21 - Digite CTRL + C
para parar o bot.
22 - Agora inicie ele pelo PM2
, executando o seguinte código abaixo.
pm2 start npm --name "takeshi-bot" -- start
23 - Configure o arquivo config.js
que está dentro da pasta src
.
// Prefixo dos comandos
exports.PREFIX = "/";
// Emoji do bot (mude se preferir).
exports.BOT_EMOJI = "🤖";
// Nome do bot (mude se preferir).
exports.BOT_NAME = "Takeshi Bot";
// Número do bot. Coloque o número do bot (apenas números).
exports.BOT_NUMBER = "5511920202020";
// Número do dono do bot. Coloque o número do dono do bot (apenas números).
exports.OWNER_NUMBER = "5511999999999";
24 - Por fim, teste o bot!
Edite o arquivo config.js
que está dentro da pasta src
e cole sua api key da plataforma Spider X API, conforme o código abaixo.
Para obter seu token, acesse: https://api.spiderx.com.br e crie sua conta gratuitamente!
exports.SPIDER_API_TOKEN = "seu_token_aqui";
Função | Contexto | Requer a Spider X API? |
---|---|---|
Alterar imagem do bot | Dono | ❌ |
Desligar o bot no grupo | Dono | ❌ |
Executar comandos de infra | Dono | ❌ |
Ligar o bot no grupo | Dono | ❌ |
Modificar o prefixo por grupo | Dono | ❌ |
Obter o ID do grupo | Dono | ❌ |
Abrir grupo | Admin | ❌ |
Agendar mensagem | Admin | ❌ |
Anti audio | Admin | ❌ |
Anti documento | Admin | ❌ |
Anti evento | Admin | ❌ |
Anti imagem | Admin | ❌ |
Anti link | Admin | ❌ |
Anti produto | Admin | ❌ |
Anti sticker | Admin | ❌ |
Anti video | Admin | ❌ |
Banir membros | Admin | ❌ |
Excluir mensagens | Admin | ❌ |
Fechar grupo | Admin | ❌ |
Gestão de mensagens do auto-responder | Admin | ❌ |
Ligar/desligar auto responder | Admin | ❌ |
Ligar/desligar boas vindas | Admin | ❌ |
Ligar/desligar saída de grupo | Admin | ❌ |
Limpar chat | Admin | ❌ |
Marcar todos | Admin | ❌ |
Mudar nome do grupo | Admin | ❌ |
Mute/unmute | Admin | ❌ |
Obter o link do grupo | Admin | ❌ |
Revelar | Admin | ❌ |
Somente admins | Admin | ❌ |
Borrar imagem | Membro | ❌ |
Busca CEP | Membro | ❌ |
Canvas Bolsonaro | Membro | ✅ |
Canvas cadeia | Membro | ✅ |
Canvas inverter | Membro | ✅ |
Canvas RIP | Membro | ✅ |
Comandos de diversão/brincadeiras | Membro | ❌ |
Espelhar imagem | Membro | ❌ |
Fake chat | Membro | ❌ |
Figurinha de texto animada | Membro | ✅ |
Geração de imagens com IA | Membro | ✅ |
Gerar link | Membro | ❌ |
Google Gemini | Membro | ✅ |
Google search | Membro | ✅ |
Imagem com contraste | Membro | ❌ |
Imagem IA Flux | Membro | ✅ |
Imagem pixelada | Membro | ❌ |
Imagem preto/branco | Membro | ❌ |
Ping | Membro | ❌ |
Play áudio | Membro | ✅ |
Play vídeo | Membro | ✅ |
Renomear figurinha | Membro | ❌ |
Sticker | Membro | ❌ |
Sticker IA | Membro | ✅ |
Sticker para imagem | Membro | ❌ |
TikTok video download | Membro | ✅ |
YT MP3 | Membro | ✅ |
YT MP4 | Membro | ✅ |
YT search | Membro | ✅ |
Comando | Função | Descrição | Características |
---|---|---|---|
/enviar-audio-de-arquivo |
Enviar áudio de arquivo | Demonstra envio de arquivos de áudio do armazenamento local | Opção de mensagem de voz, resposta citada |
/enviar-audio-de-url |
Enviar áudio de URL | Demonstra envio de arquivos de áudio de URLs externas | Opção de mensagem de voz, resposta citada |
/enviar-audio-de-buffer |
Enviar áudio de buffer | Demonstra envio de arquivos de áudio de buffers de memória | Opção de mensagem de voz, resposta citada, buffer de arquivo ou URL |
Comando | Função | Descrição | Características |
---|---|---|---|
/enviar-imagem-de-arquivo |
Enviar imagem de arquivo | Demonstra envio de arquivos de imagem do armazenamento local | Suporte a legenda personalizada, menções, resposta citada |
/enviar-imagem-de-url |
Enviar imagem de URL | Demonstra envio de arquivos de imagem de URLs externas | Envio direto de URL, suporte a menções, resposta citada |
/enviar-imagem-de-buffer |
Enviar imagem de buffer | Demonstra envio de arquivos de imagem de buffers de memória | Buffer de arquivo ou URL, legenda opcional, menções, resposta citada |
Comando | Função | Descrição | Características |
---|---|---|---|
/enviar-video-de-arquivo |
Enviar vídeo de arquivo | Demonstra envio de arquivos de vídeo do armazenamento local | Suporte a legenda personalizada, menções, resposta citada |
/enviar-video-de-url |
Enviar vídeo de URL | Demonstra envio de arquivos de vídeo de URLs externas | Envio direto de URL, suporte a menções, resposta citada |
/enviar-video-de-buffer |
Enviar vídeo de buffer | Demonstra envio de arquivos de vídeo de buffers de memória | Buffer de arquivo ou URL, legenda opcional, menções, resposta citada |
Comando | Função | Descrição | Características |
---|---|---|---|
/enviar-gif-de-arquivo |
Enviar GIF de arquivo | Demonstra envio de arquivos GIF do armazenamento local | Suporte a legenda, menções, resposta citada |
/enviar-gif-de-url |
Enviar GIF de URL | Demonstra envio de arquivos GIF de URLs externas | Suporte a legenda, menções, resposta citada |
/enviar-gif-de-buffer |
Enviar GIF de buffer | Demonstra envio de arquivos GIF de buffers de memória | Buffer de arquivo ou URL, legenda, menções, resposta citada |
Comando | Função | Descrição | Características |
---|---|---|---|
/enviar-sticker-de-arquivo |
Enviar sticker de arquivo | Demonstra envio de arquivos sticker do armazenamento local | Formato WebP |
/enviar-sticker-de-url |
Enviar sticker de URL | Demonstra envio de arquivos sticker de URLs externas | Formato WebP |
/enviar-sticker-de-buffer |
Enviar sticker de buffer | Demonstra envio de arquivos sticker de buffers de memória | Buffer de arquivo ou URL |
Comando | Função | Descrição | Características |
---|---|---|---|
/enviar-enquete |
Enviar enquete | Demonstra como criar e enviar enquetes/votações em grupos | Suporte a escolha única ou múltipla escolha |
Comando | Função | Descrição | Características |
---|---|---|---|
/enviar-localizacao |
Enviar localização | Demonstra como enviar localizações, com latitude e longitude | Suporte a latitude e longitude de qualquer lugar do mundo |
Comando | Função | Descrição | Características |
---|---|---|---|
/enviar-contato |
Enviar contato | Demonstra como enviar contatos | Os contatos podem ser chamados ou adicionados à lista dos seus contatos |
Comando | Função | Descrição | Características |
---|---|---|---|
/enviar-documento-de-arquivo |
Enviar documento de arquivo | Demonstra envio de arquivos de documento do armazenamento local | Especificação de tipo MIME, nome de arquivo personalizado |
/enviar-documento-de-url |
Enviar documento de URL | Demonstra envio de arquivos de documento de URLs externas | Especificação de tipo MIME, nome de arquivo personalizado |
/enviar-documento-de-buffer |
Enviar documento de buffer | Demonstra envio de arquivos de documento de buffers de memória | Buffer de arquivo ou URL, tipo MIME, nome de arquivo personalizado |
Comando | Função | Descrição | Características |
---|---|---|---|
/enviar-texto |
Enviar texto | Demonstra envio de mensagens de texto simples | Suporte a menções |
/enviar-resposta |
Enviar resposta | Demonstra envio de mensagens de resposta | Respostas de sucesso/erro/aviso |
/enviar-reacoes |
Enviar reações | Demonstra envio de emojis de reação | Várias reações emoji, reações de sucesso/erro/aviso |
/enviar-mensagem-editada |
Enviar mensagem editada | Demonstra envio de mensagens editadas | Pode editar mensagens enviadas de forma direta ou respondendo alguém |
Comando | Função | Descrição | Características |
---|---|---|---|
/obter-metadados-mensagem |
Obter metadados da mensagem | Demonstra extração avançada de metadados de mensagem ou mensagem citada | Análise detalhada, suporte a resposta de mensagens, informações técnicas, menções automáticas |
/obter-dados-grupo |
Obter dados do grupo | Demonstra extração de informações do grupo | Metadados do grupo, lista de participantes, informações de admin |
/funcoes-grupo |
Funções do grupo | Demonstra uso de funções utilitárias do grupo | Extração de nome, dono, admins, participantes do grupo |
Comando | Função | Descrição | Características |
---|---|---|---|
/exemplos-de-mensagens |
Central de exemplos | Central com lista de todos os exemplos disponíveis | Menu interativo, acesso direto a todos os exemplos |
O Takeshi Bot possui um auto-responder embutido, edite o arquivo em ./database/auto-responder.json
:
[
{
"match": "Oi",
"answer": "Olá, tudo bem?"
},
{
"match": "Tudo bem",
"answer": "Estou bem, obrigado por perguntar"
},
{
"match": "Qual seu nome",
"answer": "Meu nome é Takeshi Bot"
}
]
O menu do bot fica dentro da pasta src
no arquivo chamado menu.js
As mensagens ficam dentro da pasta src
no arquivo chamado messages.js
Todos os comandos de exemplo estão localizados em: src/commands/member/exemplos/
Todos os comandos de exemplo utilizam funções de src/utils/loadCommonFunctions.js
:
sendAudioFromFile(filePath, asVoice, quoted)
sendAudioFromURL(url, asVoice, quoted)
sendAudioFromBuffer(buffer, asVoice, quoted)
sendImageFromFile(filePath, caption, mentions, quoted)
sendImageFromURL(url, caption, mentions, quoted)
sendImageFromBuffer(buffer, caption, mentions, quoted)
sendVideoFromFile(filePath, caption, mentions, quoted)
sendVideoFromURL(url, caption, mentions, quoted)
sendVideoFromBuffer(buffer, caption, mentions, quoted)
sendGifFromFile(file, caption, mentions, quoted)
sendGifFromURL(url, caption, mentions, quoted)
sendGifFromBuffer(buffer, caption, mentions, quoted)
sendStickerFromFile(filePath, quoted)
sendStickerFromURL(url, quoted)
sendStickerFromBuffer(buffer, quoted)
sendDocumentFromFile(filePath, mimetype, fileName, quoted)
sendDocumentFromURL(url, mimetype, fileName, quoted)
sendDocumentFromBuffer(buffer, mimetype, fileName, quoted)
sendText(text, mentions)
sendReply(text, mentions)
sendReact(emoji)
sendSuccessReply(text, mentions)
,sendErrorReply(text, mentions)
,sendWarningReply(text, mentions)
,sendWaitReply(text, mentions)
sendSuccessReact()
,sendErrorReact()
,sendWarningReact()
,sendWaitReact()
getGroupMetadata()
- Obter metadados completos do grupogetGroupName()
- Obter apenas o nome do grupogetGroupOwner()
- Obter informações do dono do grupogetGroupParticipants()
- Obter todos os participantes do grupogetGroupAdmins()
- Obter administradores do grupo
await sendImageFromFile("./assets/image.jpg", "Olá @5511999999999!", ["5511999999999@s.whatsapp.net"]);
await sendImageFromURL(
"https://exemplo.com/imagem.png",
"Olá @5511999999999 e @5511888888888!",
["5511999999999@s.whatsapp.net", "5511888888888@s.whatsapp.net"]
);
await sendVideoFromFile("./assets/video.mp4", "Confira este vídeo @5511999999999!", ["5511999999999@s.whatsapp.net"]);
const buffer = fs.readFileSync("./video.mp4");
await sendVideoFromBuffer(
buffer,
"Vídeo especial para @5511999999999 e @5511888888888!",
["5511999999999@s.whatsapp.net", "5511888888888@s.whatsapp.net"]
);
await sendGifFromFile(
"./assets/gif.mp4",
"Tá ai @5511999999999!",
["5511999999999@s.whatsapp.net"]
);
Definições completas do TypeScript estão disponíveis em src/@types/index.d.ts
com:
- Assinaturas de função detalhadas
- Descrições de parâmetros
- Exemplos de uso
- Especificações de tipo de retorno
Todos os arquivos de exemplo são armazenados em assets/samples/
:
sample-audio.mp3
- Arquivo de áudio para testesample-document.pdf
- Documento PDF para testesample-document.txt
- Documento de texto para testesample-image.jpg
- Arquivo de imagem para testesample-sticker.webp
- Arquivo de sticker para testesample-video.mp4
- Arquivo de vídeo para teste
- 📁 assets ➔ arquivos de mídia
- 📁 auth ➔ arquivos da conexão do bot
- 📁 images ➔ arquivos de imagem
- 📁 funny ➔ gifs de comandos de diversão
- 📁 samples ➔ arquivos de exemplo para testes
- 📁 temp ➔ arquivos temporários
- 📁 database ➔ arquivos de dados
- 📁 node_modules ➔ módulos do Node.js
- 📁 src ➔ código fonte do bot (geralmente você mexerá mais aqui)
- 📁 @types ➔ pasta onde fica as definições de tipos
- 📁 commands ➔ pasta onde ficam os comandos
- 📁 admin ➔ pasta onde ficam os comandos administrativos
- 📁 member ➔ pasta onde ficam os comandos gerais (todos poderão utilizar)
- 📁 exemplos ➔ pasta com 24 comandos de exemplo
- 📁 owner ➔ pasta onde ficam os comandos de dono (grupo e bot)
- 📝🤖-como-criar-comandos.js ➔ arquivo de exemplo de como criar um comando
- 📁 errors ➔ classes de erros usadas nos comandos
- 📁 middlewares ➔ interceptadores de requisições
- 📁 services ➔ serviços diversos
- 📁 utils ➔ utilitários
- 📝 config.js ➔ arquivo de configurações do bot
- 📝 connection.js ➔ script de conexão do bot com a biblioteca Baileys
- 📝 index.js ➔ script ponto de entrada do bot
- 📝 loader.js ➔ script de carga de funções
- 📝 menu.js ➔ menu do bot
- 📝 test.js ➔ script de testes
- 📝 ⚡-cases-estao-aqui.js ➔ easter egg
- 📝 CONTRIBUTING.md ➔ eguia de contribuição
- 📝 index.js ➔ script ponto de entrada do bot para hospedagem
- 📝 .gitignore ➔ arquivo para não subir certas pastas no GitHub
- 📝 LICENSE ➔ arquivo de licença
- 📝 package-lock.json ➔ arquivo de cache das dependências do bot
- 📝 package.json ➔ arquivo de definição das dependências do bot
- 📝 README.md ➔ esta documentação
- 📝 reset-qr-auth.sh ➔ arquivo para excluir as credenciais do bot
Execute npm run test:all
O erro abaixo acontece quando é feito o download do arquivo ZIP direto no celular em algumas versões do apk ZArchiver e também de celulares sem root.
Para resolver, siga o tutorial de instalação via git clone.
Caso dê algum erro na conexão, digite o seguinte comando:
sh reset-qr-auth.sh
Depois, remova o dispositivo do WhatsApp indo nas configurações do WhatsApp em "dispositivos conectados" e repita
o procedimento de iniciar o bot com npm start
.
Abra o termux, digite termux-setup-storage
e depois, aceite as permissões
Verifique se você não tem dois Takeshi's rodando no seu celular, muitas pessoas baixam o zip e seguem o tutorial, porém, o tutorial não explica pelo zip, e sim, pelo git clone.
Geralmente as pessoas que cometem esse erro, ficam com dois bots:
- O primeiro dentro da
/sdcard
- O segundo na pasta
/storage/emulated/0/Download
, que no zip fica comotakeshi-bot-main
Você deve apagar um dos bots e tanto configurar quanto executar apenas um
O Takeshi Bot é um projeto open source e sua contribuição é muito bem-vinda!
- 🐛 Reportar bugs através das Issues
- ✨ Sugerir novas funcionalidades
- 🔧 Contribuir com código (novos comandos, correções, melhorias)
- ⭐ Dar uma estrela no repositório
- Leia nosso Guia de Contribuição completo
- Verifique as Issues abertas
- Siga o template obrigatório para Pull Requests
Este projeto está licenciado sob a Licença Pública Geral GNU (GPL-3.0).
Isso significa que:
- Você pode usar este código como quiser, seja para projetos pessoais ou comerciais.
- Você pode modificar o código para adaptá-lo às suas necessidades.
- Você pode compartilhar ou vender o código, mesmo modificado, mas precisa:
- Manter os créditos ao autor original (Guilherme França - Dev Gui).
- Tornar o código modificado disponível sob a mesma licença GPL-3.0.
O que você não pode fazer:
- Não pode transformar este código em algo proprietário (fechado) e impedir outras pessoas de acessá-lo ou usá-lo.
Esta licença garante que todos tenham acesso ao código-fonte e podem colaborar livremente, promovendo o compartilhamento e o aprimoramento do projeto.
Neste projeto, precisei hospedar a node_modules, para auxiliar quem está rodando o bot pelo celular, pois muitos deles podem não rodar o npm install
pelo termux corretamente.