cain_lin • client interno oficial • Boruto Baileys v7 • Pairing Code Custom
!menu • !menurpg • !menuclans • !menuadm • !menudono • !menuinfo • !menusistemas • !menuferramentas
🎬 Vídeo • 🚀 Instalação • 📱 Conectar • 🎮 RPG • ⚙️ Comandos • 🛡️ Sistemas • 📚 Docs
UI Premium 100% Cain Lin • Roxo serpente • Gold real • Medusa Crown • 1920x1080 • Baileys Interactive Native Flow
💜 Curtiu? Deixe seu LIKE e INSCREVA-SE!
Ative o 🔔 para não perder atualizações da Queen Medusa!
| # | Vídeo | Duração | Link |
|---|---|---|---|
| 1 | 🐍 Cain Lin – Instalação completa Termux + VPS | 12:34 | Assistir |
| 2 | 🎮 RPG Donghua – Do Mortal ao Lenda Cai Lin | 18:20 | Assistir |
| 3 | ⚔️ Clans, Seitas e Guerra de Organizações | 15:10 | Assistir |
| 4 | 🛡️ Todos os Antis – Anti-link, Anti-fake, X9 | 22:05 | Assistir |
| 5 | 🧊 Stickers Premium – !s !f !take !toimg | 8:45 | Assistir |
🔧 Para configurar seu vídeo:
SubstituaSEU_VIDEO_AQUIpelo ID do seu vídeo YouTube
Ex:https://youtu.be/dQw4w9WgXcQ→ ID =dQw4w9WgXcQ
Também troqueSEU_CANALpelo @ do seu canal
| Sistema | Status | Detalhe |
|---|---|---|
| 🐍 Boruto Baileys v7 | ✅ Full | @boruto_vk7/baileys latest, ESM puro |
| 👑 Personalidade Queen Medusa | ✅ | 彩鳞 • frases, console, welcome temático |
| 🎮 RPG Donghua Completo | ✅ ULTRA | 11 reinos • linhagens • técnicas • pets • artefatos • ascensão |
| ⚔️ Clans / Seitas / Alianças | ✅ | Guerra org • territórios • diplomacia • cofre |
| 🛡️ X9 Ampliado | ✅ | Apagadas • editadas • participantes • admin • anti-link |
| 📡 Canais / Newsletter | ✅ | @newsletter nativo |
| 🎨 8 Menus UI Premium | ✅ | Thumbs locais + fallback remoto CDN |
| 🔄 LID ↔ JID System | ✅ | Conversão automática WhatsApp moderno |
| 🧩 Interativos Nativos | ✅ | buttons • list • nativeFlow • poll • album |
| 📊 !ping Diagnóstico Real | ✅ | 10s live edit • rede • CPU • RAM • download Mbps |
| 🧊 Stickers Full | ✅ | !s full 512 • !f proporção • !take • EXIF |
| 🔐 Anti Systems x14 | ✅ | link • fake • flood • call • pv • viewonce • payment • mídia... |
| 🧠 Cache Inteligente | ✅ TTL | groups • contacts • messages • lid • commands |
| 🖼️ Welcome Canvas Zero Two | ✅ | premium-welcome / goodbye API |
# 1. Clone
git clone https://github.com/Otakump4/cai-lin-bot.git
cd cai-lin-bot
# 2. Requisitos (Termux)
pkg update -y && pkg upgrade -y
pkg install nodejs git bash ffmpeg libwebp -y
# Node >=22 recomendado
node -v
# 3. Instalar
npm install
# 4. Configurar
cp .env.example .env
nano .env# IDENTIDADE
PREFIX=!
NUMERO_DONO=5591999999999
NOME_DONO=Lucas Mod Domina
NOME_BOT=Cain Lin
SESSION_NAME=cain_lin
# BAILEYS / BROWSER
PAIRING_ENABLED=true
PAIRING_USE_CUSTOM_CODE=true
PAIRING_CUSTOM_CODE=CAILINO1
BROWSER_PLATFORM=macOS
BROWSER_NAME=Google Chrome
LOG_LEVEL=silent
# MENUS / MIDIA
MENU_MEDIA_BASE_URL=
MENU_FALLBACK_IMAGE_URL=
# STICKER
STICKER_PACKNAME=Cain Lin (彩鳞)
STICKER_AUTHOR=Lucas Mod Domina
STICKER_CATEGORY=Cain Lin Bot
STICKER_EMOJIS=🐍,💜,👑
# ZERO TWO CANVAS
ZEROSITE=https://zero-two-apis.store
API_KEY_ZEROTWO=Tang San
# LINKS OFICIAIS
ZERO_TWO_STORE_NOME=Zero Two Store
ZERO_TWO_STORE_LINK=https://wa.me/601164286801?text=*menu
CHANNEL_ID=120363404952584770@newsletter
CHANNEL_LINK=https://whatsapp.com/channel/0029Va6riekH5JLwLUFI7P2B
CHANNEL_NOME=🫧 𝗖𝗢𝗡𝗡𝗘𝗖𝗧𝗘𝗗 𝗖𝗢𝗡𝗧𝗘Ú𝗗𝗢𝗦 🫧
GROUP_LINK=https://chat.whatsapp.com/FdiHHOb8gvDDK8hu5YIPLk?mode=ems_copy_t
GROUP_NOME=🫧 𝗖𝗢𝗡𝗡𝗘𝗖𝗧𝗘𝗗 𝗖𝗢𝗡𝗧𝗘Ú𝗗𝗢𝗦 🫧
# SISTEMA
COMMAND_COOLDOWN_MS=2500
ANTI_FLOOD_LIMIT=6
ANTI_FLOOD_WINDOW_MS=8000
AUTO_READ_GROUPS=true
SYNC_FULL_HISTORY=false
MARK_ONLINE=true| Modo | Comando | Ideal para |
|---|---|---|
| QR Code | sh start.sh / sh start.sh qr / npm run start:qr |
PC / VPS rápido |
| Pairing Code | sh start.sh sim |
Termux / Servidor sem tela |
| Pairing + Número | sh start.sh sim 5591999999999 |
Automático |
| NPM Pairing | npm run start:sim -- --number=5591999999999 |
NPM users |
Pairing Code Custom:
PAIRING_USE_CUSTOM_CODE=true
PAIRING_CUSTOM_CODE=CAILINO1Código de 8 caracteres alfanuméricos • WhatsApp: Dispositivos conectados → Conectar com número de telefone
Sessão salva em: sessao/cain_lin/
11 Reinos • 14+ Linhagens • 6 Elementos • Profissões • Técnicas • Artefatos • Pets • Dungeons • Ascensão
Mortal sem Qi → Discípulo do Qi → Praticante de Dou Qi → Mestre de Escamas
→ Grande Mestre Serpentino → Espírito Medusa → Rei/Rainha Dou → Imperador Dou
→ Ancestral Serpente Celestial → Soberano das Sete Cores → Lenda Cai Lin
| Módulo | Comandos | Destaque |
|---|---|---|
| Personagem / Linhagem | !personagem |
medusa • alquimista • espadachim • guardiao • besta • fantasma • jovem_alquimista • mestre_ancestral • princesa_serpente • guerreiro_yun • mercenario_deserto • herdeiro_cla • espirito_chama • guardia_real |
| Elementos | !elemento |
fogo • veneno • raio • vento • terra • agua |
| Profissões | !profissao |
alquimista • ferreiro • domador • mercenario • estrategista |
| Técnicas Dou | !tecnicas |
comprar / equipar • ATK/DEF/QI elemental |
| Artefatos | !artefatos |
espada_qi e mais • equipar |
| Pets Espirituais | !pets |
serpente_sete_cores e mais |
| Mapa / Exploração | !explorar |
cidade_qingshan • deserto_tager • capital_jiama • seita_nuvem • vale_alquimistas • reino_serpente • tumulo_dou_saint |
| Dungeons | !dungeon |
caverna_qi • cooldown 45min |
| Saga / História | !historia |
despertar • promessa • deserto • chama • seita • ancestral |
| Craft / Refino | !craft !refinar |
pilula_celestial • escama_ancestral • chave_santo_dou |
| Mercado P2P | !mercado |
vender / comprar entre players |
| Organizações | !org / !menuclans |
cla • seita • aliança • guerra • territórios • diplomacia |
| Conquistas | !conquistas |
Primeiro Cultivo • Voz do Reino • Duelista Dou • ... |
| Ascensão | !ascender |
Reset com bônus permanente • Marca de Ascensão • +3000 Pedras • Título Lenda das Sete Cores |
Economia: 💎 Pedras Espirituais
!perfil • !cultivo • !nivel • !ranking • !missoes • !inventario • !carteira
!daily • !pagar • !lojarpg • !usaritem • !titulo • !guiarpg
!lutar @user • !poder • !habilidades • !treinar • !cacar
!menuclans / !menucla / !menuseitas / !menuorg
!organizacao
!org criar cla id Nome
!org entrar id
!org info id
!org rank
!orgadmin invite @user
!orgadmin accept id
!orgadmin kick @user
!orgadmin transfer @user
!orgadmin deposit 100
!orgadmin withdraw 100
!orgadmin diplomacy outra-org ally/war/neutral
!orgadmin destroy
!territorio
!territorio claim deserto_tager
• Deserto Tager • Torre de Qi • Vale das Chamas • Templo Medusa
!guerraorg id1 id2 # cooldown 1h
!orgprestigio
!orgloja
!seitadaily
| Comando | Thumb | Função |
|---|---|---|
!menu |
menu.png | Hub principal interativo |
!menuadm |
menuadm.png | Administração de grupo |
!menudono |
menudono.png | Dono / Bot config |
!menuinfo |
menuinfo.png | Info / Ping / Criador |
!menusistemas |
menusistemas.png | Sistemas / Anti / X9 |
!menuferramentas |
menuferramentas.png | Ferramentas / Sticker / Dev |
!menurpg |
menurpg.png | RPG Cultivo completo |
!menuclans |
menuclans.png | Clans / Seitas / Guerra |
!ban @user • !add 5591... • !promover @user • !rebaixar @user
!linkgp • !revogarlink • !abrirgp • !fechargp
!nomegp • !descgp • !listadm • !infogp
!marcartodos texto • !hidetag texto • !apagar
!welcome on/off • !welcomeimg on/off
!setwelcome texto • !setgoodbye texto
!antilink on/off [delete|ban]
!antifake on 55 • !listfake • !banfake
!antiflood on warn/ban 8 • !antiflood off
!anti imagem/video/audio/sticker/doc/contato/localizacao/enquete/catalogo/viewonce/convite on
!antiviewonce / !antivisuunica on
!antipayment on
!anticall on
!antipv on • !antipv2 • !antipv3
!x9 on/off • !x9 apagadas/editadas/participantes/admins/antilink on/off
!reiniciar • !block @user • !unblock @user
!setprefix . • !sairgp • !jid • !eval
!broadcast mensagem • !grupos • !entrargp link
!boton • !botoff • !botstatus • !botconfig
!limparcache • !limparcache memoria/disco/medio/profundo/simular
!limparqr • !limparqr medio/profundo/simular
!seradmin • !sermembro
!rpgreset @user
!s / !sticker / !figurinha # full 512x512
!f # mantém proporção + transparência
!rename pack | author
!marca pack | author
!take
!toimg / !toimage / !img # sticker → PNG
!togif / !tomp4 / !tovideo # sticker animado → vídeo
!ping / !p / !latencia / !speed / !velocidade # diagnóstico 10s live
!dono • !criador • !botinfo • !frases • !statusbot / !status / !runtime
!canal • !grupo • !loja
!perfil • !cultivo • !nivel • !ranking
!visualizarstatus on react • !statusreact ❤️💜💙
!canalmsg texto • !canalinfo • !canalreact
!canalgerenciar list/follow/unfollow/mute/unmute/fetch
!boruto • !baileysv7 • !compat
!testeboruto • !testev7 • !borutoteste
| Sistema | Comando | Ação |
|---|---|---|
| Anti-Link | !antilink on ban |
Apaga + ban |
| Anti-Fake DDI | !antifake on 55 |
Remove estrangeiro |
| Anti-Flood | !antiflood on ban 8 |
Warn/ban por spam |
| Anti-ViewOnce | !antivisuunica on |
Revela única |
| Anti-Payment | !antipayment on |
Remove payment msg |
| Anti-Call | !anticall on |
Bloqueia quem liga |
| Anti-PV | !antipv / !antipv2 / !antipv3 |
warn / block / ignore |
| Anti-Mídias (14 tipos) | !anti imagem on |
img, vídeo, áudio, sticker, doc... |
| X9 Ampliado | !x9 on |
apagadas, editadas, participantes, admin |
| Warn System | !warn @user |
auto-kick no limite |
| Status View | !visualizarstatus on react |
visualiza + reage status |
- Sticker Full / Fit
- ToImage / ToGIF / ToMP4
- Console Cain Lin temático
- Detecção de 30+ tipos de mídia Baileys
- LID ↔ JID conversor automático
- Logs privados para dono com origem Grupo/Privado + link wa.me
- Cache TTL inteligente
!apagarcom suporte a payment!marcaraceita número / JID / LID / @- Safe Participant Action (corrige erro 500 Baileys em promote/demote/ban)
cai-lin-bot/
├── conexão.js # entrada Baileys
├── index.js
├── exports.js
├── lib/
│ └── baileys-client.js # cain_lin • Boruto v7
├── comandos/
│ ├── geral/ menu.js ping.js
│ ├── admin/ ... (ban, promover, antilink, etc)
│ ├── dono/ ... (reiniciar, eval, broadcast...)
│ └── rpg/ ...
├── database/
│ ├── functions/
│ │ ├── botões.js
│ │ ├── color.js
│ │ ├── frases.js
│ │ ├── console.js
│ │ ├── media-types.js
│ │ ├── jid-utils.js
│ │ ├── cache.js
│ │ ├── runtime.js
│ │ ├── rpg.js
│ │ └── menu-style.js
│ ├── media/
│ │ ├── menu.png
│ │ ├── menuadm.png
│ │ ├── menudono.png
│ │ ├── menuinfo.png
│ │ ├── menusistemas.png
│ │ ├── menuferramentas.png
│ │ ├── menurpg.png
│ │ └── menuclans.png
│ └── cache/
├── settings/settings.js
├── sessao/cain_lin/ # auth Baileys
└── temp/
sendButtons() • sendList() • sendNativeFlow() • sendAlbum()
sendPoll() • sendLocation() • sendEvent() • sendProduct()
sendCodeBlock() • sendTable() • sendRichResponse()
pinMessage() • forwardMessage() • sendStatusMention()
findUserId() • updateProfilePicture() • updateProfileName()
sendInteractive() • sendMenu() • sendImage() • sendMention()
sendContact() • sendProfileCard()
sendNewsletterText() • newsletterMetadata() • newsletterReact()A base procura thumbs nesta ordem:
1. database/media/<menu>.png
2. database/media/<menu>.jpg
3. database/media/menu.png
4. database/media/menu.jpg
5. database/media/banner.png
6. <MENU>_IMAGE_URL no .env
7. MENU_MEDIA_BASE_URL/<menu>.png
8. MENU_FALLBACK_IMAGE_URL
9. fallback interno
MENU_MEDIA_BASE_URL=https://meusite.com/menus
MENU_IMAGE_URL=https://meusite.com/menu.png
MENUADM_IMAGE_URL=...
MENUDONO_IMAGE_URL=...
MENUINFO_IMAGE_URL=...
MENUSISTEMAS_IMAGE_URL=...
MENUFERRAMENTAS_IMAGE_URL=...
MENURPG_IMAGE_URL=...
MENUCLANS_IMAGE_URL=...
MENU_FALLBACK_IMAGE_URL=https://meusite.com/fallback.pngFunção:
readMenuImage('menurpg') // retorna Buffer ou { url: 'https://...' }WhatsApp moderno:
5511999999999@s.whatsapp.net # PN / JID
123456789012345@lid # Linked Identity
120363000000000000@g.us # Grupo
lidToJid('123@lid', { groupJid })
jidToLid('5591...@s.whatsapp.net')
resolveMentionTarget('123@lid', { groupJid })
registerJidPair({ lid, jid, groupJid })
absorbMessageMappings(message)
absorbGroupMetadata(metadata)Cache persistente: database/cache/lid-jid-map.json
!ping / !p / !latencia / !speed
- Animação por edição 10 segundos
- Latência interna real-time
- Teste Cloudflare / Google / GitHub
- Download Cloudflare Speed Mbps
- Ambiente: Termux / VPS / Docker / Render / Railway / Heroku / Vercel
- CPU / RAM / Node / PID / Uptime
- Diretório do projeto
!limparcache # memória + disco seguro
!limparcache memoria
!limparcache disco
!limparcache medio
!limparcache profundo confirmar
!limparcache simular
!limparqr # sessão seguro
!limparqr medio
!limparqr profundo confirmar
!limparqr simular
creds.jsonnunca é apagado automaticamente
Criado por Lucas Mod Domina • @lucas_mod_domina
Cain Lin / Cai Lin (彩鳞) • Queen Medusa
Battle Through the Heavens
Base Boruto Baileys v7 • @boruto_vk7/baileys
Engine ESM • Node >=22
© Copyright by Lucas Mod Domina
É proibida a venda da base original sem modificações significativas.
Mantenha os créditos aos autores.
⭐ Deixe uma estrela no GitHub! ⭐
GitHub • Zero Two Store • Canal WhatsApp
cain_lin • Queen Medusa • 彩鳞
Abaixo está a documentação original completa, preservada 100% sem simplificação, organizada em seções expansíveis para consulta técnica avançada.
📖 Abrir Documentação Completa Cain Lin • Boruto Baileys v7 (51315 chars • 2328 linhas)
Base criada por Lucas Mod Domina (@lucas_mod_domina) com personalidade e design inspirados em Cai Lin / Queen Medusa de Battle Through the Heavens.
A base agora foi reestruturada para usar Boruto Baileys v7 (@boruto_vk7/baileys) diretamente, sem OpenWA Gateway. O client interno do bot se chama:
cain_linDocumentação complementar renderizada junto ao projeto: veja também
README-LUCAS.md.
A conexão agora possui browser configurável no .env. Para Pairing Code, a documentação recomenda usar um browser lógico/desktop, por exemplo Browsers.macOS("Google Chrome").
Configuração padrão da base:
BROWSER_PLATFORM=macOS
BROWSER_NAME=Google ChromePlataformas conhecidas do helper Browsers:
macOS
windows
ubuntu
baileys
appropriate/autoA base converte automaticamente essas opções para:
browser: makeBrowserConfig()Exemplos:
BROWSER_PLATFORM=macOS
BROWSER_NAME=Google Chrome
BROWSER_PLATFORM=windows
BROWSER_NAME=Google Chrome
BROWSER_PLATFORM=ubuntu
BROWSER_NAME=Chrome
BROWSER_PLATFORM=appropriate
BROWSER_NAME=Google ChromeSe o helper Browsers não existir ou a plataforma não for reconhecida na versão instalada, a base usa fallback seguro:
['Mac OS', 'Google Chrome', '14.4.1']Foi adicionada uma camada maior de métodos no client cain_lin para cobrir os recursos documentados da fork:
cain_lin.sendButtons()
cain_lin.sendList()
cain_lin.sendNativeFlow()
cain_lin.sendAlbum()
cain_lin.sendPoll()
cain_lin.sendPollResult()
cain_lin.sendLocation()
cain_lin.sendEvent()
cain_lin.sendGroupInvite()
cain_lin.sendProduct()
cain_lin.sendCodeBlock()
cain_lin.sendInlineLinks()
cain_lin.sendTable()
cain_lin.sendRichResponse()
cain_lin.sendWithAd()
cain_lin.pinMessage()
cain_lin.keepMessage()
cain_lin.forwardMessage()
cain_lin.sendStatusMention()
cain_lin.findUserId()
cain_lin.updateProfilePicture()
cain_lin.removeProfilePicture()
cain_lin.updateProfileName()
cain_lin.updateProfileStatus()Também foi criado um comando informativo:
!boruto
!baileysv7
!compatE um comando de teste:
!testeboruto
!testev7
!borutotesteO !testeboruto tenta enviar interativos, poll e tabela para validar rapidamente se o WhatsApp atual da sessão aceita esses formatos.
Observação: vários recursos da fork dependem da versão do WhatsApp Web, dispositivo, tipo de chat e permissões. A base tenta usar o formato novo primeiro e aplica fallback seguro quando possível.
As thumbs dos menus continuam procurando primeiro arquivos locais em:
database/media/menu.png
database/media/menuadm.png
database/media/menudono.png
database/media/menuinfo.png
database/media/menusistemas.png
database/media/menuferramentas.png
database/media/menurpg.png
database/media/menuclans.pngSe a mídia local não existir, a base agora pode usar links remotos. Configure no .env:
MENU_MEDIA_BASE_URL=https://meusite.com/menus
# ou links individuais:
MENU_IMAGE_URL=https://meusite.com/menu.png
MENUADM_IMAGE_URL=https://meusite.com/menuadm.png
MENUDONO_IMAGE_URL=https://meusite.com/menudono.png
MENUINFO_IMAGE_URL=https://meusite.com/menuinfo.png
MENUSISTEMAS_IMAGE_URL=https://meusite.com/menusistemas.png
MENUFERRAMENTAS_IMAGE_URL=https://meusite.com/menuferramentas.png
MENURPG_IMAGE_URL=https://meusite.com/menurpg.png
MENUCLANS_IMAGE_URL=https://meusite.com/menuclans.png
MENU_FALLBACK_IMAGE_URL=https://meusite.com/fallback.pngOrdem de busca:
1. database/media/<menu>.png
2. database/media/<menu>.jpg
3. database/media/menu.png
4. database/media/menu.jpg
5. database/media/banner.png
6. link individual do menu no .env
7. MENU_MEDIA_BASE_URL/<menu>.png
8. MENU_FALLBACK_IMAGE_URL
9. fallback mínimo internoA função responsável é:
readMenuImage('menurpg')Ela retorna Buffer quando a imagem local existe, ou { url: 'https://...' } quando usa fallback remoto, compatível com @boruto_vk7/baileys.
O projeto foi migrado da Baileys anterior para:
npm i @boruto_vk7/baileys@latestDependência atual:
"@boruto_vk7/baileys": "latest"Principais adaptações feitas:
- imports ESM usando
makeWASocketnomeado; - store interno
makeInMemoryStoresincronizando emdatabase/cache/boruto-store.json; - Pairing Code e Pairing Code personalizado mantidos;
- botões/interativos adaptados para o modelo simplificado da fork (
buttons,nativeFlow,sections,url,copy,call); - fallback manual com proto/nativeFlow antigo caso algum botão falhe;
- suporte ampliado a newsletter/canais;
- comandos de gerenciamento de newsletter;
- novos wrappers de grupo: aprovação de entrada, modo de adicionar membro, temporárias e lista de requests.
!canalgerenciar list
!canalgerenciar follow jid@newsletter
!canalgerenciar unfollow jid@newsletter
!canalgerenciar mute jid@newsletter
!canalgerenciar unmute jid@newsletter
!canalgerenciar fetch jid@newsletter 10
!gpmodo approval on/off
!gpmodo add admin/all
!gpmodo temp 86400
!gpmodo requestsAlguns recursos dependem da versão do WhatsApp Web, permissões da conta e disponibilidade real do método dentro da fork. A base trata métodos indisponíveis sem quebrar.
- Removida a camada OpenWA/API/Webhook.
- Engine atualizado para
@boruto_vk7/baileys. - Sessão real salva em
sessao/cain_lin. - Client interno padronizado como
cain_lin. - Modo Pairing Code agora inicia com:
sh start.sh simmsg/messagefoi padronizado parainfonos comandos.- Menu interativo com imagem, lista, footer e botões URL.
- O comando
!pingfoi transformado em diagnóstico completo com:- animação por edição de mensagem por 10 segundos;
- medição de latência interna em tempo real;
- tempo de envio/edit;
- teste de latência para Cloudflare, Google e GitHub;
- teste de download via Cloudflare Speed;
- identificação de ambiente Termux, VPS, container ou hospedagem;
- informações de sistema, CPU, RAM, Node, PID, uptime e diretório do projeto.
cai-lin-bot/
├── database/
│ ├── banner.js
│ ├── exports/
│ │ └── index.js
│ └── functions/
│ ├── botões.js
│ ├── color.js
│ ├── frases.js
│ ├── notcmd.js
│ ├── runtime.js
│ └── similaridade.js
├── temp/
├── sessao/
│ └── cain_lin/ # gerada automaticamente após conexão
├── settings/
│ └── settings.js
├── comandos/
│ └── geral/
│ ├── menu.js
│ └── ping.js
├── lib/
│ └── baileys-client.js
├── conexão.js
├── index.js
├── exports.js
├── start.sh
├── README.md
├── README-LUCAS.md
├── .env.example
└── package.jsondatabase/banner.js: banner visual da Cain Lin no terminal.database/exports/index.js: exportações centrais, loader automático de comandos e dispatcher.database/functions/color.js: cores, gradientes e estilos comchalk.database/functions/botões.js: abstração de botões/listas com fallback textual.database/functions/notcmd.js: aviso de comando inexistente com sugestão.database/functions/similaridade.js: similaridade precisa e automática baseada nos comandos carregados.database/functions/frases.js: falas, mensagens de aguarde e personalidade da bot.database/functions/runtime.js: diagnósticos do ambiente, rede, velocidade e sistema.lib/baileys-client.js: conexão Boruto Baileys v7, QR, Pairing Code e adaptação das mensagens.conexão.js: entrada principal da conexão.exports.js: reservado para eventos globais futuros, como boas-vindas, X9, status e admins.start.sh: reinicialização automática em caso de queda.
- Node.js
>=22 - npm
- git, curl e bash/sh
- WhatsApp instalado no celular
- Um número WhatsApp para conexão
Recomendado:
pkg update -y && pkg upgrade -y
pkg install nodejs git bash -ycd cai-lin-bot
npm install
cp .env.example .envConfigure o .env:
PREFIX=!
NUMERO_DONO=5591999999999
NOME_DONO=Lucas Mod Domina
NOME_BOT=Cain Lin
SESSION_NAME=cain_lin
PAIRING_NUMBER=
LOG_LEVEL=silentsh start.sh
# ou
sh start.sh qr
# ou
npm run start:qrTutorial:
- Abra o WhatsApp.
- Vá em Dispositivos conectados.
- Toque em Conectar um dispositivo.
- Escaneie o QR exibido direto no terminal.
O modo pedido para Pairing Code é:
sh start.sh simTambém pode informar o número direto:
sh start.sh sim 5591999999999Ou pelo npm:
npm run start:sim -- --number=5591999999999Tutorial:
- Informe o número no formato internacional, apenas dígitos:
DDI + DDD + número. - No WhatsApp: Dispositivos conectados → Conectar dispositivo.
- Escolha Conectar com número de telefone.
- Digite o código exibido no terminal.
Adicione comandos em qualquer subpasta dentro de comandos/:
export default {
name: 'exemplo',
aliases: ['ex'],
category: 'geral',
description: 'Meu comando de exemplo.',
async execute({ client, message, args, settings }) {
await client.sendText(message.chatId || message.from, 'Funcionou!');
},
};O sistema de similaridade carrega tudo automaticamente. Se você criar comandos/admin/ban.js, o comando !ban entra nas sugestões sem precisar cadastrar manualmente.
O !ping atual faz uma mensagem inicial e edita a mesma mensagem durante 10 segundos usando a key retornada pelo Baileys:
await client.editText(chatId, sent.key, novoTexto)Ele mostra:
- diretório onde o projeto está rodando;
- ambiente detectado: Termux, VPS, Docker/container, Render, Railway, Heroku, Vercel etc.;
- host, sistema, release, arquitetura;
- CPU, load average, RAM livre/total;
- versão do Node, PID, uptime e memória do processo;
- latência interna do bot;
- tempo real de envio/edição;
- latência de rede externa;
- teste de download em Mbps.
Comandos relacionados:
!ping
!p
!latencia
!speed
!velocidadeA base agora inclui uma camada completa para botões em database/functions/botões.js, usando Native Flow/Interactive Message da Baileys quando disponível.
Tipos implementados:
quickReplyButton() // resposta rápida
replyButton() // cta_reply
urlButton() // botão URL
callButton() // botão de ligação
copyButton() // copiar código/texto
locationButton() // solicitar/enviar localização
addressButton() // fluxo de endereço
reminderButton() // fluxo de lembrete
cancelReminderButton() // cancelar lembrete
nativeFlowButton() // botão raw/customizado
listButton() // single_select/lista
menuSections() // gera seções automáticas por categoria
readMenuImage() // imagem padrão do menuO client cain_lin recebeu:
client.sendInteractive(jid, payload)
client.sendMenu(jid, payload)
client.sendImage(jid, payload)
client.sendMention(jid, text, targets)O comando !menu agora envia:
- imagem/banner da Cain Lin;
- título;
- corpo personalizado;
- footer;
- lista de comandos disponíveis;
- submenus como
menuadmemenudono; - botão URL para a Zero Two Store;
- botão URL para o canal do WhatsApp;
- botão URL para o grupo oficial.
Configurações no .env:
ZERO_TWO_STORE_NOME=Zero Two Store
ZERO_TWO_STORE_LINK=https://wa.me/601164286801?text=*menu
CHANNEL_ID=120363404952584770@newsletter
CHANNEL_LINK=https://whatsapp.com/channel/0029Va6riekH5JLwLUFI7P2B
CHANNEL_NOME=🫧 𝗖𝗢𝗡𝗡𝗘𝗖𝗧𝗘𝗗 𝗖𝗢𝗡𝗧𝗘Ú𝗗𝗢𝗦 🫧
GROUP_LINK=https://chat.whatsapp.com/FdiHHOb8gvDDK8hu5YIPLk?mode=ems_copy_t
GROUP_NOME=🫧 𝗖𝗢𝗡𝗡𝗘𝗖𝗧𝗘𝗗 𝗖𝗢𝗡𝗧𝗘Ú𝗗𝗢𝗦 🫧Observação: botões interativos podem mudar conforme atualizações do WhatsApp. Por isso o
!menupossui fallback: se o envio interativo falhar, ele envia imagem com caption e links em texto.
A estrutura de mensagem da bot foi padronizada para info, no estilo de bases brasileiras. Os comandos agora recebem:
async execute({ client, info, args, commands, settings }) {
await client.sendText(info.chatId, 'resposta')
}Por compatibilidade temporária, o dispatcher ainda envia message: info, mas a base oficial passa a usar info.
O WhatsApp moderno pode entregar usuários em dois formatos:
5511999999999@s.whatsapp.net # PN/JID com número
123456789012345@lid # LID / Linked Identity
120363000000000000@g.us # GrupoA base agora possui database/functions/jid-utils.js, responsável por:
- detectar
@lid,@s.whatsapp.nete@g.us; - converter LID para JID/PN quando existir mapeamento em cache;
- converter JID/PN para LID quando existir mapeamento;
- absorver mapeamentos vindos de mensagens, contatos, histórico e metadados de grupos;
- ler arquivos de sessão do Baileys em busca de mapas
lid-mapping; - persistir os pares encontrados em
database/cache/lid-jid-map.json; - permitir menções usando número, JID ou LID.
Importante: LID não é matematicamente convertível para número. A conversão correta depende de mapeamento aprendido pelo Baileys através de eventos, histórico, contatos,
participantPn, metadados de grupo ou arquivos da sessão. Se o WhatsApp não disponibilizar o par, a base usa o próprio LID como fallback.
lidToJid('123@lid', { groupJid })
jidToLid('5591999999999@s.whatsapp.net')
resolveMentionTarget('123@lid', { groupJid })
registerJidPair({ lid, jid, groupJid })
absorbMessageMappings(message)
absorbGroupMetadata(metadata)O client cain_lin agora possui:
await client.sendMention(chatId, 'Olá @5591999999999', ['5591999999999'])
await client.sendMention(chatId, 'Olá usuário LID', ['123456789@lid'])Comando de teste criado:
!marcar 5591999999999
!marcar 123456789@lidA base ganhou database/functions/cache.js com caches TTL em memória para:
- comandos carregados automaticamente;
- metadados de grupos;
- contatos;
- mensagens;
- retry de mensagens;
- pares LID ↔ JID.
No Baileys, isso é usado em:
cachedGroupMetadata: async (jid) => globalCache.groups.get(jid)
msgRetryCounterCache: globalCache.retry
getMessage: async (key) => getCachedMessage(key)?.messageAlém disso, ao conectar, a base tenta aquecer o cache com groupFetchAllParticipating() e atualiza o cache em eventos groups.update, group-participants.update, contacts.upsert, contacts.update, messaging-history.set e messages.upsert.
A conexão Baileys agora usa:
sock.ev.process(...)para processar eventos em lote/ordem;- reconexão com backoff progressivo;
keepAliveIntervalMs;connectTimeoutMs;defaultQueryTimeoutMs;retryRequestDelayMs;- cache de retry;
- cache de metadados de grupo;
getMessagepelo cache para retries e mensagens citadas;- leitura/processamento de todas as mensagens recebidas nos grupos.
Configurações no .env:
AUTO_READ_GROUPS=true
SYNC_FULL_HISTORY=false
MARK_ONLINE=trueA bot agora tenta tratar eventos de solicitação de entrada (group.join-request e variações expostas pela Baileys). Quando ativo, somente os admins do grupo são mencionados.
!joinrequest on
!joinrequest off
!request lista
!request -aceitar 1
!request -recusar 1Quando alguém solicita entrada, a bot envia no grupo:
- foto do solicitante quando disponível;
- nome/menção do solicitante;
- nome do grupo;
- botões
AceitareRecusar; - fallback em texto se botões não forem aceitos.
Observação: o evento e o método
groupRequestParticipantsUpdatedependem da versão da Baileys/WhatsApp. A base trata de forma segura e avisa caso o método não exista.
Configuração:
ZEROSITE=https://zero-two-apis.store
API_KEY_ZEROTWO=Tang SanO welcome com imagem agora tenta usar:
/api/canvas/premium-welcome
/api/canvas/premium-goodbyeComandos para legendas:
!setwelcome texto
!setgoodbye textoVariáveis suportadas:
#tempo#
#hora#
#nomedogp#
#numerodele#
#nomedele#
#wame#
#numero#
#status#
#numerobot#
#nomebot#
#nickdono#
#estado#
#descrição#
#descricao#
#prefixo#Ao abrir conexão, a bot agora:
sendPresenceUpdate('available')
updateProfileStatus('🐍 Conectada! Prefix: [...]')Também foi adicionado tratamento mais detalhado dos motivos de queda da Baileys, como sessão inválida, conexão substituída, deslogado, timeout, serviço indisponível e outros.
A base foi adaptada para trabalhar com JIDs @newsletter quando a versão/sessão da Baileys disponibilizar suporte.
Comandos novos:
!canalmsg texto
!canalmsg texto | 120363...@newsletter
!canalinfo
!canalreact SERVER_ID ❤️ [jid@newsletter]Recursos:
cain_lin.sendNewsletterText(jid, text)para enviar texto ao canal;cain_lin.newsletterMetadata(jid)quando o método existir na Baileys;cain_lin.newsletterReact(jid, serverId, emoji)quando a versão expusernewsletterReactMessage;- comandos recebidos de
@newsletterpassam pelo dispatcher como chats normais, respeitando permissões e limitações da própria plataforma.
Observação: recursos de canais/newsletter variam bastante por versão do WhatsApp Web/Baileys e por permissão da conta no canal. A base chama os métodos de forma segura, sem quebrar caso o método não exista.
Quando !visualizarstatus on está ativo, a bot agora imprime um console bonito para cada status processado:
STATUS VISUALIZADO
Contato
Número/JID
Status ID
Visualizado: SIM/NÃO
Reação enviada
Tipo de mídia
Type Baileys
Caption/conteúdo
Hora
DataArquivo responsável:
database/functions/console.jsFunção:
consoleStatusCainLin(info, { reaction, viewed })Além de !antiviewonce, foi adicionado o comando com nome brasileiro:
!antivisuunica on
!antivisuunica offAliases:
!antivisualizacaounica
!antiviewonce2
!antiverunicaEle usa o mesmo sistema central de anti-mídias e remove mensagens de visualização única quando ativo.
Foi criado um console próprio para mensagens vindas de @newsletter. Ele tenta puxar metadata do canal para mostrar:
Nome do canal
ID do canal
Inscritos
Quantidade de admins quando disponível
Tipo da mensagem/mídia
Conteúdo/caption
Descrição do canal
Hora/DataFunção:
consoleNewsletterCainLin(info, cain_lin)A bot usa esse console automaticamente quando info.isNewsletter é verdadeiro.
Novos comandos de dono:
!seradmin
!sermembroAliases:
!botadm
!viraradm
!mepromover
!botmembro
!virarmembro
!merebaixarSem alvo, eles tentam promover/rebaixar a própria bot. Com alvo, aceitam menção, número, PN, LID ou mensagem respondida.
Algumas versões do WhatsApp/Baileys executam a ação administrativa, mas retornam erro internal-server-error 500 em groupParticipantsUpdate.
Para evitar falsa falha, os comandos agora usam uma camada segura:
safeParticipantAction()Ela:
- tenta executar a ação;
- se a Baileys retornar erro, aguarda um pouco;
- verifica no metadata do grupo se a ação realmente foi aplicada;
- se tiver sido aplicada, responde como sucesso com aviso;
- se não tiver sido aplicada, aí sim deixa o erro cair.
Comandos ajustados:
!promover / !promote / !daradm
!rebaixar / !demote / !tiraradm
!ban / !kick / !removerTambém foi mantida a melhoria de alvos por @, número, PN, LID e mensagem respondida.
Os comandos administrativos como !promover, !rebaixar, !ban, !warn e similares agora reconhecem melhor alvos por:
menção real do WhatsApp
@559491569380 digitado no texto
número puro
JID PN
JID LID
mensagem respondida
participantAlt quando a Baileys entregarO comando !apagar também foi ajustado para resolver melhor o participante de mensagens LID/PN ao apagar payments citados.
O AntiPayment detecta payments diretos e o !apagar detecta payments citados em quotedMessage.requestPaymentMessage, incluindo os que carregam noteMessage com menções.
Novo comando de dono:
!limparcache
!clearcache
!cacheclear
!limparchace
!cleanchaceEle limpa e entrega relatório de:
- caches em memória;
- arquivos de cache em
database/cache; - arquivos temporários em
temp; - quantidade antes/depois;
- tamanho antes/depois;
- espaço liberado;
- falhas;
- exemplos dos arquivos selecionados.
Modos:
!limparcacheLimpa memória + disco seguro.
!limparcache memoriaLimpa apenas caches runtime:
commands, groups, contacts, messages, retry, lid, cooldowns, antiflood, joinRequests!limparcache discoLimpa apenas arquivos seguros de cache.
!limparcache medioMais agressivo em database/cache.
!limparcache profundo confirmarLimpa tudo em database/cache, exceto proteções internas do comando.
!limparcache simularMostra o que seria apagado sem remover nada.
Use
!limparqrpara limpeza específica da sessão Baileys. Use!limparcachepara limpar cache runtime/disco da bot.
Novo comando de dono:
!limparqr
!limparsessao
!clearsession
!limparsession
!limparauthEle entrega um relatório moderno com:
- quantidade de arquivos antes;
- tamanho antes;
- arquivos selecionados;
- arquivos apagados;
- tamanho depois;
- espaço liberado;
- falhas;
- exemplos dos arquivos removidos.
Modos:
!limparqrModo seguro. Remove apenas arquivos reconstruíveis/cache, como:
device-list-*.json
lid-mapping-*.json
database/cache/boruto-store.json
database/cache/lid-jid-map.json
temp/qrcode.png e temporários!limparqr medioInclui também app-state-sync-*, podendo forçar ressincronização.
!limparqr profundo confirmarInclui chaves identity-key, session, pre-key, sender-key, mantendo creds.json. Use apenas se souber o que está fazendo.
!limparqr simularMostra o que seria apagado, sem remover nada.
Por segurança,
creds.jsonnunca é apagado pelo comando.
A conexão agora ignora mensagens enviadas pela própria bot antes de passar pelo console e pelo dispatcher. Isso evita:
- a bot responder a si mesma;
- comandos enviados pela própria bot entrarem em loop;
- console ficar registrando respostas da própria Cain Lin;
- eventos próprios vazarem mesmo quando
emitOwnEvents=false.
A verificação considera:
info.fromMe
sock.user.id
sock.user.jid
sock.user.lidFoi reforçado o filtro de ruído interno da Baileys para bloquear dumps como:
Closing open session in favor of incoming prekey bundle
Closing session: SessionEntry { ... }
pendingPreKey ...
currentRatchet ...Agora o filtro atua em:
console.log
console.info
console.warn
process.stdout.write
process.stderr.writeNovos comandos:
!toimg
!toimage
!img
!togif
!tomp4
!tovideoUso:
Responda uma figurinha com !toimg para converter para PNG.
Responda uma figurinha animada com !togif para converter para vídeo/GIF.Foram aplicadas correções em pontos práticos encontrados nos testes:
- filtro mais forte para logs internos
Closing session: SessionEntryeClosing open session; - números no console agora aparecem como
+55 94 99156-9380; protocolMessageesenderKeyDistributionMessagenão poluem mais o console principal;- X9 de entrada/saída normaliza participantes que vêm como objeto;
- X9 de editadas verifica também
protocolMessage.editedMessage; - status visualizado mostra
SIM,NAOouTENTADO; !visualizarstatus onagora ativa reação por padrão, exceto se usarnoreact;!menumostra apenas submenus; comandos ficam em seus menus;!marcartodoslista usuários em linhas numeradas;- cooldowns do RPG foram reduzidos para uso mais fluido.
Novos comandos:
!s
!f
!sticker
!figurinha
!rename pack | author
!marca pack | author
!takeDiferença importante:
!s -> figurinha cheia, preenchendo todo o quadrado 512x512. Pode cortar laterais/topo.
!f -> figurinha no formato original, mantendo proporção e completando com transparência.Funciona respondendo imagem, vídeo ou figurinha.
Configuração no .env:
STICKER_PACKNAME=Cain Lin (彩鳞)
STICKER_AUTHOR=Lucas Mod Domina
STICKER_CATEGORY=Cain Lin Bot
STICKER_EMOJIS=🐍,💜,👑Requisitos no ambiente:
pkg install ffmpeg libwebpA base usa ffmpeg para converter para WebP e node-webpmux para injetar EXIF/metadados.
!marca Meu Pack | Meu Nome
!takeO client cain_lin agora usa a mensagem atual como quoted automaticamente durante a execução de comandos. Isso melhora respostas da bot em comandos comuns, pois elas ficam respondendo diretamente à mensagem do usuário.
Para desativar em uma resposta específica:
await cain_lin.sendText(info.chatId, 'texto', { quote: false })Os logs enviados ao dono agora incluem:
Origem: Grupo/Privado
Link/Chat: link do grupo ou wa.me do usuário
Usuário: jid do usuárioEm grupos, a bot tenta montar o link via groupInviteCode. Em privado, usa wa.me/numero.
Novo comando:
!antipayment on
!antipayment offAliases:
!antipay
!antipagamento
!antipagamentosO sistema detecta tipos de pagamento como:
requestPaymentMessage
paymentInviteMessage
paymentMessage
paymentOrderMessageQuando ativo, tenta remover usando um método especial para payment:
- cria uma mensagem vazia do bot;
- edita essa mensagem usando o ID da payment como
messageId; - tenta apagar a payment original;
- apaga a mensagem auxiliar do bot.
O comando !apagar também foi atualizado para usar esse método especial quando a mensagem respondida for payment.
Foram adicionados novos sistemas globais e de grupo baseados nos eventos recentes da Baileys.
!boton
!botoff
!botstatusQuando desativado, todas as funcionalidades ficam inativas para usuários comuns. O dono continua usando tudo normalmente.
!anticall on
!anticall offAo detectar chamada via evento call, a bot avisa, bloqueia e envia log ao dono quando ativo.
!antipv on/off # modo aviso
!antipv2 # modo bloquear
!antipv3 # modo ignorarModos:
warn — responde avisando
block — avisa e bloqueia
ignore — ignora completamente!visualizarstatus on react
!visualizarstatus off
!statusreact ❤️ 💜 💙 💚 💛 🧡A bot tenta marcar status como visualizado e reagir com emojis configurados.
!botconfigMostra bot ON/OFF, AntiCall, AntiPV, status view/react e prefixo.
Comando genérico:
!anti status
!anti imagem on
!anti video on
!anti audio on
!anti sticker on
!anti doc on
!anti contato on
!anti localizacao on
!anti enquete on
!anti catalogo on
!anti viewonce on
!anti convite onAtalhos:
!antisticker on
!antiimg on
!antivideo on
!antiaudio on
!antidoc on
!antiviewonce on!listfake
!banfake!listfake lista membros com DDI fora do permitido. !banfake remove automaticamente, se a bot for admin.
O X9 agora mostra melhor eventos de participantes, autor da ação quando disponível, mensagem apagada com prévia de cache quando possível, edições e logs de anti-mídia/anti-link.
Para deixar o RPG com começo, meio, fim e retorno ao começo, foram adicionados sistemas finais de ciclo:
!titulo
!titulo usar duelista_douTítulos concedem poder e representam conquistas narrativas.
!craft
!craft pilula_celestial
!craft escama_ancestral
!craft chave_santo_douUsa materiais obtidos em exploração, dungeons e caça.
!mercado
!mercado vender Pílula de Qi | 300
!mercado comprar IDPermite comércio entre cultivadores usando Pedras Espirituais.
!ascender
!renascer
!reencarnarRequisitos:
- atingir o último reino de cultivo;
- concluir todos os capítulos da história;
- ter linhagem/personagem;
- ter elemento espiritual.
Ao ascender, o usuário volta ao início do cultivo, mas ganha bônus permanente:
- +1 ascensão;
- 3000 Pedras Espirituais;
- Marca de Ascensão;
- título Lenda das Sete Cores;
- bônus permanente de poder nas próximas jornadas.
Assim o RPG passa a ter ciclo completo: despertar → cultivar → explorar → lutar → organizar → conquistar → concluir saga → ascender → recomeçar mais forte.
O RPG foi ampliado novamente para ficar mais próximo de uma jornada completa de cultivo.
Além das anteriores, foram adicionadas novas opções:
jovem_alquimista
mestre_ancestral
princesa_serpente
guerreiro_yun
mercenario_deserto
herdeiro_cla
espirito_chama
guardia_realUse:
!personagem
!personagem escolher jovem_alquimista!profissao
!profissao escolher alquimista
!profissao escolher ferreiro
!profissao escolher domador
!profissao escolher mercenario
!profissao escolher estrategistaProfissões dão identidade e bônus em sistemas como refino, caça, pets, técnicas e recompensas.
!tecnicas
!tecnicas comprar palma_chama
!tecnicas equipar palma_chamaTécnicas possuem raridade, elemento, ATK, DEF, QI e preço. A técnica equipada entra no cálculo de poder.
!explorar
!explorar cidade_qingshan
!explorar deserto_tager
!explorar capital_jiama
!explorar seita_nuvem
!explorar vale_alquimistas
!explorar reino_serpente
!explorar tumulo_dou_saintCada região possui poder mínimo, XP, Pedras Espirituais e itens únicos.
!historia
!historia concluir despertar
!historia concluir promessa
!historia concluir deserto
!historia concluir chama
!historia concluir seita
!historia concluir ancestralCada capítulo exige XP mínimo e dá recompensas.
!orgprestigioPermite evoluir a organização usando o cofre.
Novos módulos adicionados:
!artefatos
!artefatos comprar espada_qi
!artefatos equipar espada_qiArtefatos possuem tipo, ATK, DEF, QI, poder e preço. Equipamentos afetam o cálculo de poder.
!pets
!pets comprar serpente_sete_cores
!pets usar serpente_sete_coresPets dão bônus de ATK, DEF, QI e poder.
!dungeon
!dungeon entrar caverna_qiCada dungeon possui poder mínimo, recompensa, drop e cooldown de 45 minutos.
!seitadailyDá Pedras Espirituais e XP baseado no nível/territórios da organização.
!rpgreset @userO RPG recebeu novos módulos de progressão e qualidade de vida:
!conquistas
!conquistas claim primeiro_cultivoConquistas iniciais:
Primeiro Cultivo
Voz do Reino
Duelista Dou
Tesouro Espiritual
Artista de Jade!usaritem Pílula de Qi
!usaritem Pílula Celestial
!usaritem Núcleo de Besta!orgloja
!orgloja comprar estandarte
!orgloja comprar matriz
!orgloja comprar altarEstruturas compradas com o cofre aumentam o poder da organização.
!guiarpgMostra o caminho recomendado para começar: escolher linhagem, elemento, treinar, caçar, missões, conquistas e organização.
O !perfil agora mostra também:
- linhagem/personagem;
- elemento;
- organização;
- vitórias/derrotas em duelos;
- quantidade de conquistas;
- inventário e top comandos/mídias.
Foram implementados os upgrades avançados do RPG:
!orgadmin invite @user
!orgadmin accept id
!orgadmin kick @user
!orgadmin transfer @user
!orgadmin destroy!orgadmin deposit 100
!orgadmin withdraw 100!orgadmin diplomacy outra-org ally
!orgadmin diplomacy outra-org war
!orgadmin diplomacy outra-org neutral!territorio
!territorio claim deserto_tagerTerritórios disponíveis:
Deserto Tager
Torre de Qi
Vale das Chamas
Templo Medusa!elemento
!elemento escolher fogo
!elemento escolher veneno
!elemento escolher raio
!elemento escolher vento
!elemento escolher terra
!elemento escolher agua!refinar
!refinar celestialUsa Núcleos de Besta para criar pílulas.
!bestiario
!worldboss
!torneioO !worldboss é um chefe mundial diário simplificado. O !torneio lista cultivadores por vitórias em duelos.
O RPG foi ampliado para um sistema de cultivo inspirado em donghua, com personagens/linhagens, atributos, lutas, organizações e guerras.
!personagem
!personagem escolher medusa
!personagem escolher alquimista
!personagem escolher espadachim
!personagem escolher guardiao
!personagem escolher besta
!personagem escolher fantasmaCada linhagem possui HP, ATK, DEF, QI e habilidade especial.
!poder [@user]
!habilidades
!treinar
!cacarA fórmula de poder considera:
- linhagem/personagem;
- HP base;
- ataque;
- defesa;
- Qi;
- XP;
- nível técnico;
- reino de cultivo;
- itens no inventário.
!lutar @userA batalha simula turnos com dano, defesa, crítico, uso de Qi e habilidades. O vencedor ganha XP e Pedras Espirituais.
!organizacao
!org criar cla id Nome do Clã
!org criar seita id Nome da Seita
!org criar alianca id Nome da Aliança
!org entrar id
!org sair
!org info id
!org rankO dono/líder da organização é quem cria. Usuários podem entrar em organizações existentes ou criar as próprias.
!guerraorg id1 id2O poder da organização considera o poder de todos os membros, quantidade de membros, nível, vitórias e derrotas.
!menuclans
!menucla
!menuseitas
!menuorgThumb própria:
database/media/menuclans.pngO sistema de XP foi reorganizado em uma arquitetura de leveling/cultivo. Por padrão, em grupos o cultivo só começa quando um admin ativa:
!leveling on
!rpg onleveling: ativa ganho de XP e evolução.rpg: ativa recompensas/moedas espirituais.
A moeda temática agora é:
💎 Pedras EspirituaisOs níveis técnicos continuam existindo, mas a exibição principal usa reinos de cultivo:
Mortal sem Qi
Discípulo do Qi
Praticante de Dou Qi
Mestre de Escamas
Grande Mestre Serpentino
Espírito Medusa
Rei/Rainha Dou
Imperador Dou
Ancestral Serpente Celestial
Soberano das Sete Cores
Lenda Cai LinArquivo estrutural:
database/functions/rpg.jsNovo submenu com thumb própria:
!menurpg
database/media/menurpg.pngComandos RPG/cultivo:
!perfil # perfil completo
!cultivo # etapa/reino de cultivo
!nivel # XP rápido
!ranking # ranking de XP
!missoes # missões disponíveis
!missoes claim ID
!inventario # itens espirituais
!carteira # saldo de Pedras Espirituais
!daily # recompensa diária
!pagar @user 50
!lojarpg
!lojarpg comprar pilulaO !perfil agora mostra:
- foto de perfil;
- reino/etapa de cultivo;
- título do cultivo;
- barra de progresso;
- próximo reino e XP restante;
- level técnico e XP;
- Pedras Espirituais;
- mensagens enviadas;
- mídias enviadas;
- tipos de mídia enviados;
- comandos executados;
- top comandos usados;
- warns;
- inventário;
- primeira aparição.
Missões iniciais:
Mensageiro do Reino # enviar mensagens
Conjurador de Comandos # usar comandos
Artista das Escamas # enviar mídias
Cultivador Persistente # acumular XPForam implementados os módulos planejados:
Cada mensagem soma XP automaticamente e comandos somam XP extra.
!perfil
!cultivo
!nivel
!ranking
!missoes
!inventarioUsuários ganham coins por atividade e comandos.
!carteira
!daily
!pagar @user 50!warn @user motivo
!warns @user
!unwarn @userQuando o usuário atinge o limite configurado em warnLimit, a bot tenta remover do grupo.
A bot envia logs de comandos/erros para o dono e também persiste logs locais.
!logs!configgpMostra anti-link, anti-fake, anti-flood, welcome, X9, warns, auto-resposta e logs.
!antifake on 55
!antifake offAo entrar membro com DDI não permitido, a bot tenta remover automaticamente.
!antiflood on warn 8
!antiflood on ban 8
!antiflood offO welcome agora tenta usar foto de perfil do novo membro no card de boas-vindas.
!welcome on
!welcomeimg on
!welcomeimg off!perfilMostra foto de perfil, level, XP, coins, mensagens, comandos e warns.
!autoresposta add oi | Olá, mortal.
!autoresposta del oi
!autoresposta listaAliases: !ar, !keyword, !resposta.
!aluguel set 30 [grupo@g.us]
!aluguel status [grupo@g.us]
!aluguel del [grupo@g.us]Quando o aluguel expira, comandos em grupo são bloqueados para usuários que não são o dono.
A conexão agora suporta Pairing Code personalizado, baseado no uso de requestPairingCode(number, customCode) da Baileys quando disponível na versão instalada.
Configuração:
PAIRING_ENABLED=true
PAIRING_USE_CUSTOM_CODE=true
PAIRING_CUSTOM_CODE=CAILINO1Exemplo interno:
const custom = settings.baileys.pairing.useCustomCode
? settings.baileys.pairing.customCode
: ''
const code = custom
? await sock.requestPairingCode(number, custom)
: await sock.requestPairingCode(number)O código personalizado deve ter 8 caracteres alfanuméricos. A base limpa caracteres inválidos e usa os primeiros 8.
A personalidade da Cain Lin foi ampliada em database/functions/frases.js com categorias:
aguardes
menu
permissoes
erros
sucesso
x9
welcome
despedidaNovas funções:
fraseAguarde()
fraseSucesso()
fraseErro()
frasePermissao()
fraseX9()
fraseWelcome()
fraseDespedida()
fraseMenu()
fraseCategoria(categoria)Novo comando:
!frases
!frases lista
!frases x9
!frases welcome
!frases errosTambém foram adicionadas proteções leves no dispatcher:
COMMAND_COOLDOWN_MS=2500
ANTI_FLOOD_LIMIT=6
ANTI_FLOOD_WINDOW_MS=8000O dono ignora cooldown/flood. Usuários comuns recebem mensagens temáticas quando tentam floodar comandos.
Novo comando de diagnóstico rápido:
!statusbot
!status
!runtimeO sistema X9 foi ampliado para vigiar mais eventos do grupo e trabalhar junto com o cache da Baileys:
!x9 # mostra status completo
!x9 on/off # liga/desliga o X9 geral
!x9 apagadas on/off # mensagens apagadas/revogadas
!x9 editadas on/off # mensagens editadas
!x9 participantes on/off
!x9 admins on/off # promove/rebaixa
!x9 antilink on/off # dedura anti-linkConfigurações persistidas por grupo:
x9
x9Deletes
x9Edits
x9Participants
x9Admin
x9AntilinkEventos usados:
group-participants.updatepara entradas, saídas, promoções e rebaixamentos;messages.updatepara tentativa de detectar mensagem apagada/revogada e editada;- dispatcher de anti-link para dedurar links bloqueados.
Observação: o WhatsApp/Baileys pode variar o payload de deleção/edição conforme versão e privacidade. A base trata os principais caminhos e mantém cache para melhorar a identificação.
Novos comandos modernos:
!dono # mostra dono atual com foto de perfil e vCard
!criador # mostra criador da base com foto de perfil, informações e vCard
!canal # canal oficial com botão URL
!grupo # grupo oficial com botão URL
!loja # Zero Two Store com botão URL
!botinfo # informações da bot/base
!frases # frases/persona da bot
!statusbot # status rápido da runtime/cacheO client recebeu:
cain_lin.sendContact(jid, { number, name, organization, title, url })
cain_lin.sendProfileCard(jid, { number, name, caption, organization, title, url })Configuração no .env:
DONO_BIO=Dono atual da Cain Lin.
CRIADOR_NOME=Lucas Mod Domina
CRIADOR_NUMERO=5591999999999
CRIADOR_BIO=Idealizador e desenvolvedor principal da base Cain Lin (彩鳞).Foi criado database/functions/menu-style.js, reunindo linhas, painéis e símbolos para deixar os menus com uma estética mais bonita e combinando com a personagem:
tituloMenu('MENU')
blocoMenu('NOME', ['item 1', 'item 2'])
painelCainLin({ titulo, subtitulo, linhas, rodape })
menuCaption({ titulo, prefix, total, dono, canal })Estilo base usado:
𓊈𒆜 CAIN LIN 彩鳞 𒆜𓊉
⊰᯽⊱═══❖•ೋ°▽°ೋ•❖═══⊰᯽⊱
│› item
⊰᯽⊱═══❖•ೋ°▽°ೋ•❖═══⊰᯽⊱Além de !menu, !menuadm e !menudono, foram adicionados:
!menuinfo
!menusistemas
!menuferramentasCada um possui thumb própria:
database/media/menuinfo.png
database/media/menusistemas.png
database/media/menuferramentas.pngA base ganhou um console temático em database/functions/console.js, inspirado no estilo brasileiro de bots, mas adaptado para Cain Lin (彩鳞). A cada mensagem recebida, o terminal mostra:
- usuário/pushname;
- número ou
status; - chat privado/grupo/status;
- nome do grupo quando houver cache;
- se é comando, mensagem, mídia, reação, interativo ou sistema;
- tipo real da Baileys;
- prévia de texto;
- quoted/citada;
- reação;
- hora e data.
Também foi criado database/functions/media-types.js, com suporte para detectar e normalizar vários tipos da Baileys, incluindo wrappers como ephemeralMessage, viewOnceMessage, viewOnceMessageV2, viewOnceMessageV2Extension e documentWithCaptionMessage.
Tipos mapeados incluem:
conversation
extendedTextMessage
editedMessage
imageMessage
videoMessage
audioMessage
stickerMessage
documentMessage
documentWithCaptionMessage
contactMessage
contactsArrayMessage
locationMessage
liveLocationMessage
productMessage
orderMessage
paymentInviteMessage
pollCreationMessage
pollCreationMessageV2
pollCreationMessageV3
pollUpdateMessage
reactionMessage
protocolMessage
groupInviteMessage
buttonsMessage
buttonsResponseMessage
listMessage
listResponseMessage
templateMessage
templateButtonReplyMessage
interactiveMessage
interactiveResponseMessage
requestPhoneNumberMessage
albumMessage
eventMessage
newsletterAdminInviteMessage
keepInChatMessageCada info agora carrega:
info.message // conteúdo bruto da mensagem
info.media // resultado detalhado de detectMedia()
info.type // type real da Baileys
info.messageType // Mensagem/Mídia/Comando/Interativo/Sistema
info.mediaType // Imagem/Vídeo/Áudio/etc
info.isCmd
info.commandName
info.budyAlém da thumb principal:
database/media/menu.pngforam criadas thumbs específicas:
database/media/menuadm.png
database/media/menudono.pngA função readMenuImage(menu) agora procura automaticamente a imagem do menu solicitado e cai para menu.png se não encontrar:
await readMenuImage('menuadm')
await readMenuImage('menudono')Os comandos foram ajustados para usar o nome do client da base diretamente:
async execute({ cain_lin, info, args, settings }) {
await cain_lin.sendText(info.chatId, 'resposta')
}O dispatcher ainda envia client como alias temporário para compatibilidade, mas o padrão oficial da base é cain_lin.
A base agora possui comandos completos separados por categoria em comandos/admin/ e comandos/dono/. Todos usam info, cache de grupo, resolução LID/JID e verificações de permissão.
!ban @user # remove membro
!add 5591999999999 # adiciona/convida membro
!promover @user # promove a admin
!rebaixar @user # remove admin
!linkgp # mostra link do grupo
!revogarlink # revoga e gera novo link
!abrirgp # todos podem falar
!fechargp # apenas admins falam
!nomegp Novo nome # altera nome
!descgp Nova descrição # altera descrição
!antilink on/off [delete|ban]
!marcartodos texto # marca todos visivelmente
!hidetag texto # marca todos oculto
!apagar # apaga mensagem respondida
!listadm # lista admins
!infogp # status do grupo/sistemas
!welcome on/off # boas-vindas
!x9 on/off # X9 ampliado
!x9 apagadas on/off # módulo de apagadas
!x9 editadas on/off # módulo de editadas!reiniciar # reinicia o processo
!block @user # bloqueia usuário
!unblock @user # desbloqueia usuário
!setprefix . # troca prefixo em tempo real
!sairgp # bot sai do grupo atual
!jid # mostra JIDs/LIDs do chat/mensagem
!eval código # execução JS restrita ao dono
!broadcast mensagem # envia para grupos em cache
!grupos # lista grupos em cache
!entrargp link # entra em grupo por linkConfigurações ficam em:
database/cache/group-settings.json
database/cache/bot-settings.jsonO anti-link é aplicado no dispatcher antes dos comandos. Se antilinkAction for ban, a bot tenta remover o usuário após apagar a mensagem.
!ping— diagnóstico completo em tempo real.!menu— menu interativo com lista, imagem e links.!menuadm— submenu administrativo.!menudono— submenu do dono.
A base deixa o ponto de integração preparado para:
- Boas-vindas e despedida.
- Sistema X9 completo.
- Visualizar/curtir status.
- Sistemas administrativos.
- Anti-link, anti-fake, anti-flood.
- Logs e auditoria.
- Persistência em banco real além de arquivos locais.
- Esta base usa WhatsApp Web via Baileys. Use com responsabilidade para evitar bloqueios por spam ou automações abusivas.
- O Pairing Code não é API mobile; é apenas uma forma de parear o WhatsApp Web sem QR.
- Se a sessão quebrar ou quiser trocar de número, apague a pasta
sessao/cain_line conecte novamente.
Base criada por Lucas Mod Domina (@lucas_mod_domina).
É proibida a venda da base original sem modificações significativas. Se modificar, mantenha créditos aos autores.
Veja também: README-LUCAS.md.
© Copyright by Lucas Mod Domina
Base • README • Lucas Mod Domina
Boruto Baileys v7 • ESM • RPG Donghua Completo





