CRIANDO UM BOT DE WHATSAPP DO ZERO (GUIA DEFINITIVO) - BASE COMPLETA + 6 COMANDOS - JAVASCRIPT
Nós não prestamos suporte gratuíto caso você tenha adquirido esta base com terceiros e tenha pago por isso. Solicite que a pessoa que te vendeu, forneça suporte. Nós não temos vínculo nenhum com terceiros e não nos responsabilizamos por isso, nem prestamos suporte nessas condições.
Caso seu bot seja o oficial da Bronxys, interaja conosco e receba suporte através do grupo: https://chat.whatsapp.com/J5OewHvweK1Kf7RGXAwIYM
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.
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 - Entre na pasta 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
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.githubusercontent.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 | ❌ |
Obter o ID do grupo | Dono | ❌ |
Abrir grupo | Admin | ❌ |
Agendar mensagem | Admin | ❌ |
Anti link | Admin | ❌ |
Banir membros | Admin | ❌ |
Fechar grupo | 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 | ❌ |
Revelar | 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 PixArt | Membro | ✅ |
Imagem IA Stable Diffusion Turbo | 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-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 |
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-baileys |
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"
}
]
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!", ["[email protected]"]);
await sendImageFromURL(
"https://exemplo.com/imagem.png",
"Olá @5511999999999 e @5511888888888!",
["[email protected]", "[email protected]"]
);
await sendVideoFromFile("./assets/video.mp4", "Confira este vídeo @5511999999999!", ["[email protected]"]);
const buffer = fs.readFileSync("./video.mp4");
await sendVideoFromBuffer(
buffer,
"Vídeo especial para @5511999999999 e @5511888888888!",
["[email protected]", "[email protected]"]
);
await sendGifFromFile(
"./assets/gif.mp4",
"Tá ai @5511999999999!",
["[email protected]"]
);
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 ➔ easter egg
- 📝 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
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, você pode apagar os arquivos dentro da pasta /assets/auth/baileys
.
rm -rf ./asset/auth/baileys
Depois, remova o dispositivo do WhatsApp indo nas configurações do WhatsApp em "dispositivos conectados".
Adicione novamente um novo dispositivo.
Abra o termux, digite termux-setup-storage
e depois, aceite as permissões
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.