update documentation and remove systemd support
This commit is contained in:
370
README.md
370
README.md
@@ -1,308 +1,188 @@
|
||||
<div align="center">
|
||||
|
||||

|
||||
|
||||
ManyBot é um bot para WhatsApp que roda 100% localmente, sem depender da API oficial do WhatsApp. Ele utiliza a biblioteca `whatsapp-web.js`, que automatiza o WhatsApp Web sem depender de gráficos (headless).
|
||||
<p>
|
||||
<strong>Bot para WhatsApp 100% local, sem API oficial</strong>
|
||||
</p>
|
||||
|
||||
Algumas funcionalidades desse bot incluem:
|
||||
- Suporte a múltiplos chats em uma única sessão
|
||||
- Sistema de plugins — adicione, remova ou crie funcionalidades sem mexer no núcleo do bot
|
||||
<p>
|
||||
<a href="#-recursos">Recursos</a> .
|
||||
<a href="#-instalação-rápida">Instalação</a> .
|
||||
<a href="#-uso">Uso</a> .
|
||||
<a href="#-plugins">Plugins</a> .
|
||||
<a href="#-documentação">Documentação</a>
|
||||
</p>
|
||||
|
||||
# Exemplos
|
||||
<p>
|
||||
🇧🇷 Português · <a href="README_EN.md">🇺🇸 English</a>
|
||||
</p>
|
||||
|
||||
<center>
|
||||
<p>
|
||||
<img src="https://img.shields.io/badge/Node.js-18+-339933?logo=node.js&logoColor=white" alt="Node.js 18+">
|
||||
<img src="https://img.shields.io/badge/npm-9+-CB3837?logo=npm&logoColor=white" alt="npm 9+">
|
||||
<img src="https://img.shields.io/badge/License-GPL--v3-blue.svg" alt="License: GPL v3">
|
||||
<img src="https://img.shields.io/badge/Platform-Linux%20%7C%20Windows-lightgrey" alt="Platform">
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<img src="https://img.shields.io/badge/whatsapp--web.js-%2325D366?logo=whatsapp&logoColor=white" alt="whatsapp-web.js">
|
||||
<img src="https://img.shields.io/badge/headless-Automated-green" alt="Headless">
|
||||
</p>
|
||||
|
||||
<br>
|
||||
|
||||
> **Versão Oficial Online**
|
||||
> Quer usar o ManyBot sem instalar? Adicione o bot oficial:
|
||||
>
|
||||
> **+55 (16) 99459-1903**
|
||||
>
|
||||
> Online 24h (quando possível) - Disponibilidade não garantida
|
||||
>
|
||||
> Ao adicionar, você concorda com os [Termos de Uso](TERMOS_pt-br.md)
|
||||
|
||||

|
||||
|
||||
</center>
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
# Requisitos
|
||||
- Node.js
|
||||
- NPM
|
||||
- Sistema Linux ou Windows
|
||||
## Recursos
|
||||
|
||||
obs: Sistemas Android e iOS ainda não são 100% compatíveis. O suporte para Termux está em fases de testes e sem garantia de funcionamento correto.
|
||||
- **100% Local** - Sem depender da API oficial do WhatsApp
|
||||
- **Multi-chat** - Suporte a múltiplos chats em uma única sessão
|
||||
- **Sistema de Plugins** - Adicione, remova ou crie funcionalidades sem mexer no núcleo
|
||||
- **Headless** - Funciona em segundo plano sem interface gráfica
|
||||
- **Fácil Configuração** - Arquivo de config simples e intuitivo
|
||||
|
||||
# Instalação (Linux)
|
||||
---
|
||||
|
||||
## Instalação Rápida
|
||||
|
||||
### Opção 1: Usar o Bot Oficial (Sem instalar)
|
||||
|
||||
Adicione o número **+55 (16) 99459-1903** aos seus contatos e envie `!many` para ver os comandos disponíveis.
|
||||
|
||||
**Status:** 🟢 Online (24h quando possível, mas sem garantia)
|
||||
|
||||
> ⚠️ **Importante:** Ao usar o bot oficial, você concorda com os [Termos de Uso](TERMOS_pt-br.md). Leia antes de adicionar!
|
||||
|
||||
---
|
||||
|
||||
### Opção 2: Instalar sua Própria Versão
|
||||
|
||||
1. Clone o repositório e entre:
|
||||
```bash
|
||||
# 1. Clone o repositório
|
||||
git clone https://github.com/synt-xerror/manybot
|
||||
cd manybot
|
||||
```
|
||||
|
||||
2. Crie e abra o arquivo de configuração (use o editor de sua preferência):
|
||||
```bash
|
||||
touch manybot.conf
|
||||
# 2. Crie o arquivo de configuração
|
||||
cp manybot.conf.example manybot.conf
|
||||
|
||||
# 3. Configure conforme sua necessidade (veja a documentação)
|
||||
nano manybot.conf
|
||||
```
|
||||
|
||||
3. Nele você pode configurar algumas coisas do ManyBot. Esse é o arquivo base para que possa modificar:
|
||||
```bash
|
||||
# Comentários com '#'
|
||||
|
||||
CLIENT_ID=bot_permanente
|
||||
CMD_PREFIX=!
|
||||
CHATS=[
|
||||
123456789@c.us,
|
||||
123456789@g.us
|
||||
]
|
||||
PLUGINS=[
|
||||
video,
|
||||
audio,
|
||||
figurinha,
|
||||
adivinhacao
|
||||
]
|
||||
```
|
||||
- **CLIENT_ID:** ID do cliente, serve para identificar sua sessão.
|
||||
- Valor padrão: `bot_permanente`
|
||||
- **CMD_PREFIX:** Prefixo do comando, o caractere que você usa para executar um comando (!many, !figurinha).
|
||||
- Valor padrão: `!`
|
||||
- **CHATS:** ID dos chats no qual você quer que o bot assista. Use o utilitário: `src/utils/get_id.js` para descobrir os IDs. Deixe vazio caso queira que funcione com qualquer chat.
|
||||
- Valor padrão: (nenhum)
|
||||
- **PLUGINS:** Lista de plugins ativos. Cada nome corresponde a uma pasta dentro de `src/plugins/`. Remova ou comente uma linha para desativar o plugin sem apagá-lo.
|
||||
- Valor padrão: (nenhum)
|
||||
|
||||
obs: o utilitário `src/utils/get_id.js` usa um CLIENT_ID separado para que não entre em conflito com a sessão principal do ManyBot. Você terá que escanear o QR Code novamente para executá-lo.
|
||||
|
||||
4. Execute o script de instalação:
|
||||
```bash
|
||||
# 4. Execute o script de instalação
|
||||
bash ./setup
|
||||
```
|
||||
|
||||
5. Rode o bot pela primeira vez (você deve rodar da raiz, não dentro de `src`):
|
||||
```bash
|
||||
node ./src/main.js
|
||||
```
|
||||
Ele vai pedir para que escaneie o QR Code com seu celular.
|
||||
|
||||
No WhatsApp:
|
||||
Menu (três pontos) > Dispositivos conectados > Conectar um dispositivo
|
||||
|
||||
# Instalação (Windows)
|
||||
|
||||
O uso desse bot foi pensado para rodar em um terminal Linux. No entanto, você pode usar o Git Bash, que simula um terminal Linux com Bash real:
|
||||
|
||||
1. Para baixar o Git Bash: https://git-scm.com/install/windows
|
||||
Selecione a versão que deseja (portátil ou instalador)
|
||||
|
||||
2. Para baixar o Node.js: https://nodejs.org/pt-br/download
|
||||
Role a tela e selecione "Instalador Windows (.msi)"
|
||||
Ou se preferir, use um gerenciador de pacotes como mostra no conteúdo inicial
|
||||
|
||||
Depois de instalar ambos, abra o Git Bash e execute exatamente os mesmos comandos mostrados na seção Linux.
|
||||
|
||||
# Uso
|
||||
|
||||
Feito a instalação, você pode executar o bot apenas rodando:
|
||||
```bash
|
||||
# 5. Rode o bot
|
||||
node ./src/main.js
|
||||
```
|
||||
|
||||
## Atualizações
|
||||
📱 **Escaneie o QR Code** no WhatsApp: Menu → Dispositivos conectados → Conectar um dispositivo
|
||||
|
||||
> **⚡ Pronto!** Veja a [documentação completa](docs/INSTALACAO.md) para mais detalhes.
|
||||
|
||||
---
|
||||
|
||||
## 💻 Uso
|
||||
|
||||
É recomendável sempre ter a versão mais recente do ManyBot. Para isso, temos um utilitário logo na raíz. Para executar:
|
||||
```bash
|
||||
# Iniciar o bot
|
||||
node ./src/main.js
|
||||
|
||||
# Atualizar para a versão mais recente
|
||||
bash ./update
|
||||
|
||||
# Descobrir IDs de chats
|
||||
node src/utils/get_id.js
|
||||
```
|
||||
|
||||
## Criando um serviço (opcional)
|
||||
---
|
||||
|
||||
Se estiver rodando numa VPS ou apenas quer mais controle, é recomendável criar um serviço systemd. Siga os passos abaixo para saber como criar, habilitar e gerenciar um.
|
||||
## 🔌 Plugins
|
||||
|
||||
1. Configurando o diretório
|
||||
O ManyBot é construído em torno de um sistema de plugins. O kernel apenas conecta ao WhatsApp e distribui as mensagens — os plugins decidem o que fazer.
|
||||
|
||||
Primeiro passo é garantir que o diretório do ManyBot esteja no local adequado, é recomendável guardar em `/root/manybot` (os passos a seguir supõem que esteja essa localização)
|
||||
### Plugins Incluídos
|
||||
|
||||
2. Criando o serviço
|
||||
| Plugin | Comando | Descrição |
|
||||
|--------|---------|-----------|
|
||||
| **figurinha** | `!figurinha` | Converte imagens, GIFs e vídeos em figurinhas |
|
||||
| **video** | `!video <link>` | Baixa vídeos da internet |
|
||||
| **audio** | `!audio <link>` | Baixa áudio de vídeos como mensagem de voz |
|
||||
| **adivinhacao** | `!adivinhacao comecar` | Jogo de adivinhação (1-100) |
|
||||
| **forca** | `!forca comecar` | Jogo da forca clássico |
|
||||
| **many** | `!many` | Lista todos os comandos disponíveis |
|
||||
| **obrigado** | `!obrigado` | Responde agradecimentos |
|
||||
|
||||
Abra o arquivo:
|
||||
```bash
|
||||
/etc/systemd/system/manybot.service
|
||||
```
|
||||
### Criar um Plugin
|
||||
|
||||
E cole o seguinte conteúdo:
|
||||
```conf
|
||||
[Unit]
|
||||
Description=ManyBot
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/env node /root/manybot/src/main.js
|
||||
WorkingDirectory=/root/manybot
|
||||
Restart=always
|
||||
Environment=NODE_ENV=production
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
3. Iniciando e habilitando o serviço:
|
||||
|
||||
Primeiro reinicie o daemon do systemd:
|
||||
```bash
|
||||
systemctl daemon-reload
|
||||
```
|
||||
|
||||
Inicie o serviço:
|
||||
```bash
|
||||
systemctl start manybot
|
||||
```
|
||||
|
||||
Habilite para que ele seja iniciado junto com o seu sistema (opcional):
|
||||
```bash
|
||||
systemctl enable manybot
|
||||
```
|
||||
|
||||
4. Gerenciando o serviço:
|
||||
|
||||
Ver logs:
|
||||
```bash
|
||||
journalctl -u manybot
|
||||
```
|
||||
|
||||
Em tempo real:
|
||||
```bash
|
||||
journalctl -u manybot -f
|
||||
```
|
||||
|
||||
Parar o serviço:
|
||||
```bash
|
||||
systemctl stop manybot
|
||||
```
|
||||
|
||||
Reiniciar o serviço:
|
||||
```bash
|
||||
systemctl restart manybot
|
||||
```
|
||||
|
||||
Saiba mais sobre como gerenciar serviços em: https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-services-and-units-pt
|
||||
Sobre o journalctl: https://www.digitalocean.com/community/tutorials/how-to-use-journalctl-to-view-and-manipulate-systemd-logs-pt
|
||||
|
||||
# Plugins
|
||||
|
||||
O ManyBot é construído em torno de um sistema de plugins. O núcleo do bot (kernel) apenas conecta ao WhatsApp e distribui as mensagens — quem decide o que fazer com elas são os plugins.
|
||||
|
||||
Isso significa que você pode adicionar, remover ou criar funcionalidades sem tocar no código principal do bot.
|
||||
|
||||
## Plugins incluídos
|
||||
|
||||
O ManyBot vem com alguns plugins prontos para uso, como:
|
||||
|
||||
- **video** — baixa um vídeo da internet e envia no chat (`!video <link>`)
|
||||
- **audio** — baixa o áudio de um vídeo e envia como mensagem de voz (`!audio <link>`)
|
||||
- **figurinha** — converte imagens, GIFs e vídeos em figurinhas (`!figurinha`)
|
||||
- **adivinhacao** — jogo de adivinhação de um número entre 1 e 100 (`!adivinhação começar`)
|
||||
- **forca** — clássico jogo da forca (`!forca começar`)
|
||||
- **many** — exibe a lista de comandos disponíveis (`!many`)
|
||||
- **obrigado** — responde agradecimentos (`!obrigado`, `!valeu`, `!brigado`)
|
||||
|
||||
Para ativar ou desativar qualquer um deles, basta editar a lista `PLUGINS` no `manybot.conf`.
|
||||
|
||||
## Criando um plugin
|
||||
|
||||
Cada plugin é uma pasta dentro de `plugins/` com um arquivo `index.js`. O bot carrega automaticamente todos os plugins listados no `manybot.conf`.
|
||||
|
||||
A estrutura mínima de um plugin:
|
||||
|
||||
```
|
||||
plugins/
|
||||
└── meu-plugin/
|
||||
└── index.js
|
||||
```
|
||||
|
||||
O `index.js` deve exportar uma função `default` que o kernel chama a cada mensagem recebida. A função recebe `{ msg, api }` e decide por conta própria se age ou ignora:
|
||||
|
||||
```js
|
||||
```javascript
|
||||
// plugins/meu-plugin/index.js
|
||||
|
||||
import { CMD_PREFIX } from "../../config.js"
|
||||
import { CMD_PREFIX } from "../../config.js";
|
||||
|
||||
export default async function ({ msg, api }) {
|
||||
if (!msg.is(CMD_PREFIX + "oi")) return;
|
||||
|
||||
await msg.reply("Olá! 👋");
|
||||
}
|
||||
```
|
||||
|
||||
### O objeto `msg`
|
||||
Veja mais na [documentação de plugins](docs/PLUGINS.md).
|
||||
|
||||
Contém as informações da mensagem recebida:
|
||||
---
|
||||
|
||||
| Propriedade | Descrição |
|
||||
|---|---|
|
||||
| `msg.body` | Texto da mensagem |
|
||||
| `msg.args` | Tokens da mensagem — `["!video", "https://..."]` |
|
||||
| `msg.type` | Tipo — `"chat"`, `"image"`, `"video"`, `"audio"`, `"sticker"` |
|
||||
| `msg.sender` | ID de quem enviou |
|
||||
| `msg.senderName` | Nome de quem enviou |
|
||||
| `msg.fromMe` | `true` se foi o próprio bot que enviou |
|
||||
| `msg.hasMedia` | `true` se a mensagem tem mídia |
|
||||
| `msg.hasReply` | `true` se é uma resposta a outra mensagem |
|
||||
| `msg.isGif` | `true` se a mídia é um GIF |
|
||||
| `msg.is(cmd)` | Retorna `true` se a mensagem começa com `cmd` |
|
||||
| `msg.reply(text)` | Responde à mensagem com quote |
|
||||
| `msg.downloadMedia()` | Baixa a mídia — retorna `{ mimetype, data }` |
|
||||
| `msg.getReply()` | Retorna a mensagem citada, ou `null` |
|
||||
## 📚 Documentação
|
||||
|
||||
### O objeto `api`
|
||||
- [📥 Instalação Completa](docs/INSTALACAO.md) — Linux, Windows, Termux
|
||||
- [⚙️ Configuração](docs/CONFIGURACAO.md) — Todas as opções do `manybot.conf`
|
||||
- [🔌 Criando Plugins](docs/PLUGINS.md) — Guia completo de desenvolvimento
|
||||
- [🖥️ Serviço Systemd](docs/SYSTEMD.md) — Rodar como serviço Linux
|
||||
- [🛠️ API de Plugins](docs/API.md) — Referência de objetos `msg` e `api`
|
||||
|
||||
Contém tudo que o plugin pode fazer — enviar mensagens, acessar outros plugins, registrar logs:
|
||||
## 🌍 Internacionalização
|
||||
|
||||
| Método | Descrição |
|
||||
|---|---|
|
||||
| `api.send(text)` | Envia texto no chat |
|
||||
| `api.sendVideo(filePath)` | Envia um vídeo a partir de um arquivo local |
|
||||
| `api.sendAudio(filePath)` | Envia um áudio a partir de um arquivo local |
|
||||
| `api.sendImage(filePath, caption?)` | Envia uma imagem a partir de um arquivo local |
|
||||
| `api.sendSticker(bufferOuPath)` | Envia uma figurinha — aceita `Buffer` ou caminho |
|
||||
| `api.getPlugin(name)` | Retorna a API pública de outro plugin |
|
||||
| `api.chat.id` | ID do chat atual |
|
||||
| `api.chat.name` | Nome do chat atual |
|
||||
| `api.chat.isGroup` | `true` se é um grupo |
|
||||
| `api.log.info(...)` | Loga uma mensagem informativa |
|
||||
| `api.log.warn(...)` | Loga um aviso |
|
||||
| `api.log.error(...)` | Loga um erro |
|
||||
O ManyBot suporta múltiplos idiomas. Configure no `manybot.conf`:
|
||||
|
||||
### Lendo o manybot.conf no plugin
|
||||
|
||||
Se o seu plugin precisar de configurações próprias, você pode adicioná-las diretamente no `manybot.conf` e importá-las no código:
|
||||
|
||||
```js
|
||||
import { MEU_PREFIXO } from "../../src/config.js";
|
||||
|
||||
const prefixo = MEU_PREFIXO ?? "padrão";
|
||||
```bash
|
||||
LANGUAGE=pt # Português
|
||||
LANGUAGE=en # English
|
||||
LANGUAGE=es # Español
|
||||
```
|
||||
|
||||
### Expondo uma API para outros plugins
|
||||
- **Padrão:** Inglês (`en`)
|
||||
- **Fallback:** Se o idioma selecionado não existir, o bot usa inglês
|
||||
|
||||
Um plugin pode expor funções para que outros plugins as utilizem. Para isso, basta exportar um objeto `api`:
|
||||
---
|
||||
|
||||
```js
|
||||
// plugins/utilidades/index.js
|
||||
## 📋 Requisitos
|
||||
|
||||
export const api = {
|
||||
formatarData: (date) => date.toLocaleDateString("pt-BR"),
|
||||
};
|
||||
- **Node.js** 18+
|
||||
- **NPM** 9+
|
||||
- **Linux** ou **Windows** (via Git Bash)
|
||||
|
||||
export default async function ({ msg }) {
|
||||
// lógica normal do plugin
|
||||
}
|
||||
```
|
||||
> ⚠️ Android/iOS e Termux têm suporte experimental sem garantias.
|
||||
|
||||
Outro plugin pode chamar:
|
||||
---
|
||||
|
||||
```js
|
||||
const utils = api.getPlugin("utilidades");
|
||||
utils.formatarData(new Date());
|
||||
```
|
||||
## 📝 Licença
|
||||
|
||||
### Erros no plugin
|
||||
Distribuído sob a licença **GPLv3**. Veja [LICENSE](LICENSE) para mais detalhes.
|
||||
|
||||
Se um plugin lançar um erro, o kernel o desativa automaticamente e loga o problema — o restante dos plugins continua funcionando normalmente. Isso garante que um plugin com bug não derruba o bot inteiro.
|
||||
---
|
||||
|
||||
# Considerações
|
||||
<div align="center">
|
||||
|
||||
ManyBot é distribuído sob a licença GPLv3. Você pode usar, modificar e redistribuir o software conforme os termos da licença.
|
||||
**[⬆ Voltar ao topo](#)**
|
||||
|
||||
Saiba mais sobre as permissões lendo o arquivo [LICENSE](LICENSE) ou em: https://www.gnu.org/licenses/quick-guide-gplv3.pt-br.html
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user