6 Commits
2.4.0 ... 2.3.7

Author SHA1 Message Date
synt-xerror
ba08626bd8 support to root on get_id and optional chat filtering 2026-03-17 10:20:33 -03:00
synt-xerror
1ce6740a3b support to root on get_id and optional chat filtering 2026-03-17 10:16:24 -03:00
synt-xerror
f0f87dde78 Bump version to 2.3.6 2026-03-17 10:16:21 -03:00
synt-xerror
12a9cf122f adding root support 2026-03-17 08:12:55 -03:00
synt-xerror
48e851fd05 Bump version to 2.3.5 2026-03-17 08:12:52 -03:00
synt-xerror
ae256da596 root support 2026-03-17 08:10:16 -03:00
7 changed files with 149 additions and 26 deletions

3
.gitignore vendored
View File

@@ -7,4 +7,5 @@ node_modules/
cookies.txt
bin/
mychats.txt
manybot.conf
manybot.conf
update.log

139
README.md
View File

@@ -1,17 +1,16 @@
![ManyBot Logo](logo.png)
Criei esse bot para servir um grupo de amigos. Meu foco não é fazer ele funcionar para todo mundo.
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).
Ele é 100% local e gratuito, sem necessidade de APIs burocraticas. Usufrui da biblioteca `whatsapp-web.js`, que permite bastante coisa mesmo sem a API oficial.
Você consegue totalmente clonar esse repoistório e rodar seu próprio ManyBot. A licenca GPLv3 permite que você modifique o que quiser e faça seu próprio bot, mas se for publicar, deve ser open source assim como o ManyBot original.
Algumas funcionalidades desse bot inclui:
- Funciona em multiplos chats em apenas uma única sessão
- Comandos de jogos e download com yt-dlp
Algumas funcionalidades desse bot incluem:
- Suporte a múltiplos chats em uma única sessão
- Comandos de jogos
- Download de mídia via yt-dlp
- Gerador de figurinhas
- Ferramenta para pegar IDs dos chats
- Entre outros
# Screenshots
---
@@ -30,27 +29,129 @@ git clone https://github.com/synt-xerror/manybot
cd manybot
```
2. Execute o script de instalação:
2. Crie e abra o arquivo de configuração (use o editor de sua preferência):
```
bash setup
touch manybot.conf
nano manybot.conf
```
3. Rode o bot pela primeira vez:
3. Nele você pode configurar algumas coisas do ManyBot. Esse é o arquivo base para que possa modificar:
```
node src/main.js
CLIENT_ID=manybot
BOT_PREFIX=🤖 *ManyBot:*
CMD_PREFIX=!
CHATS=[
123456789@c.us,
123456789@g.us
]
```
- **CLIENT_ID:** ID do cliente, serve para identificar sua sessão.
- **BOT_PREFIX:** Prefixo/nome do bot, o que aparece sempre que manda uma mensagem.
- **CMD_PREFIX:** Prefixo do comando, o caractere que você usa para executar um comando (!many, !figurinha).
- **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.
4. Execute o script de instalação:
```
bash ./setup
```
5. Rode o bot pela primeira vez:
```
node ./src/main.js
```
Ele vai pedir para que escaneie o QR Code com seu celular.
Vá em: WhatsApp > Trẽs pontos no canto inferior > Dispositivos conectados > Conectar um dispositivo
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 com Bash. No entanto, você pode usar o Git Bash, que simula um terminal Linux com Bash real:
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/current
Role a tela e selecione "binário independente (.zip)"
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
Após baixar e instalar ambos, abra o Git Bash e execute exatamente os mesmos passos do Linux
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:
```
node ./src/main.js
```
## Atualizações
É recomendável sempre ter a versão mais recente do ManyBot. Para isso, temos um utilitário logo na raíz. Para executar:
```
bash ./update
```
## 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.
1. Configurando o diretório
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)
2. Criando o serviço
Abra o arquivo:
```
/etc/systemd/system/manybot.service
```
E cole o seguinte conteúdo:
```
[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:
```
systemctl daemon-reload
```
Inicie o serviço:
```
systemctl start manybot
```
Habilite para que ele seja iniciado junto com o seu sistema (opcional):
```
systemctl enable manybot
```
## Comandos
O ManyBot vem com alguns comandos pré-definidos, sendo esses:
- `video <link>`: baixa um vídeo da internet
- `audio <link>`: também baixa um vídeo, mas manda apenas o áudio
- `figurinha`: gerador de figurinhas
- `adivinhação`: jogo simples de adivnhação de um número entre 1 a 100
O prefixo para ativá-los depende da sua configuração, mas por padrão é o ponto de exclamação (`!`).
# Considerações
ManyBot é distribuído sob a licença GPLv3. Você pode usar, modificar e redistribuir o software conforme os termos da licença.
Saiba mais sobre as permissões lendo o arquivo [[LICENSE]] ou em: https://www.gnu.org/licenses/quick-guide-gplv3.pt-br.html

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "whatsapp-bot",
"version": "2.3.4",
"version": "2.3.6",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "whatsapp-bot",
"version": "2.3.4",
"version": "2.3.6",
"dependencies": {
"node-addon-api": "^7",
"node-gyp": "^12.2.0",

View File

@@ -1,6 +1,6 @@
{
"name": "manybot",
"version": "2.3.4",
"version": "2.3.6",
"type": "module",
"dependencies": {
"node-addon-api": "^7",

View File

@@ -16,7 +16,15 @@ logger.info(isTermux
// ── Instância ─────────────────────────────────────────────────
export const client = new Client({
authStrategy: new LocalAuth({ clientId: CLIENT_ID }),
puppeteer: { headless: true, ...resolvePuppeteerConfig() },
puppeteer: {
headless: true,
args: [
'--no-sandbox',
'--disable-setuid-sandbox',
...(resolvePuppeteerConfig().args || [])
],
...resolvePuppeteerConfig()
},
});
// ── Eventos ───────────────────────────────────────────────────

View File

@@ -16,7 +16,11 @@ export async function handleMessage(msg) {
const chat = await msg.getChat();
const chatId = getChatId(chat);
if (!CHATS.includes(chatId)) return;
// se CHATS estiver vazio, ele pega todos os chats.
// se nao, ele pega os que estão na lista.
if (CHATS.length > 0) {
if (!CHATS.includes(chatId)) return;
}
const ctx = await buildMessageContext(msg, chat, BOT_PREFIX);
logger.msg(ctx);

View File

@@ -5,6 +5,7 @@
import pkg from "whatsapp-web.js";
import qrcode from "qrcode-terminal";
import { CLIENT_ID } from "../config.js";
import { resolvePuppeteerConfig } from "../client/environment.js";
const { Client, LocalAuth } = pkg;
@@ -17,7 +18,15 @@ if (!arg) {
const client = new Client({
authStrategy: new LocalAuth({ clientId: CLIENT_ID }),
puppeteer: { headless: true },
puppeteer: {
headless: true,
args: [
'--no-sandbox',
'--disable-setuid-sandbox',
...(resolvePuppeteerConfig().args || [])
],
...resolvePuppeteerConfig()
},
});
client.on("qr", (qr) => {