2 Commits
2.3.2 ... 2.3.3

Author SHA1 Message Date
synt-xerror
544dc770cd new config file 2026-03-16 21:56:58 -03:00
synt-xerror
5fbe257625 Bump version to 2.3.2 2026-03-16 21:56:55 -03:00
8 changed files with 247 additions and 22 deletions

1
.gitignore vendored
View File

@@ -7,3 +7,4 @@ node_modules/
cookies.txt cookies.txt
bin/ bin/
mychats.txt mychats.txt
manybot.conf

View File

@@ -13,3 +13,44 @@ Algumas funcionalidades desse bot inclui:
- Ferramenta para pegar IDs dos chats - Ferramenta para pegar IDs dos chats
- Entre outros - Entre outros
---
# Requisitos
- Node.js
- NPM
- Sistema Linux ou Windows
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.
# Instalação (Linux)
1. Clone o repositório e entre:
```
git clone https://github.com/synt-xerror/manybot
cd manybot
```
2. Execute o script de instalação:
```
bash setup
```
3. 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
# 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:
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)"
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

View File

@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# development tool # ferramenta de desenvolvimento apenas, pode apagar se quiser
# ./deploy <commit> <branch> <version (if branch=master)> # ./deploy <commit> <branch> <version (if branch=master)>
COMMIT_MSG="$1" COMMIT_MSG="$1"
@@ -12,15 +12,6 @@ if [ -z "$COMMIT_MSG" ] || [ -z "$BRANCH" ]; then
exit 1 exit 1
fi fi
echo "Rewriting config.js"
cat > "src/config.js" << 'EOF'
export const CLIENT_ID = "bot_permanente";
export const BOT_PREFIX = "🤖 *ManyBot:* ";
export const CHATS = [
// coloque os chats que quer aqui
];
EOF
# mudar para a branch # mudar para a branch
git checkout $BRANCH || { echo "Error ao change to $BRANCH"; exit 1; } git checkout $BRANCH || { echo "Error ao change to $BRANCH"; exit 1; }

4
package-lock.json generated
View File

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

View File

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

28
setup
View File

@@ -1,6 +1,9 @@
#!/bin/bash #!/bin/bash
set -e set -e
# Salvando diretório para evitar problemas
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# ------------------------ # ------------------------
# Cores # Cores
# ------------------------ # ------------------------
@@ -48,8 +51,6 @@ cat << "EOF"
website: www.mlplovers.com.br/manybot website: www.mlplovers.com.br/manybot
repo: github.com/synt-xerror/manybot repo: github.com/synt-xerror/manybot
A Amizade é Mágica!
EOF EOF
echo -e "${RESET}" echo -e "${RESET}"
} }
@@ -190,6 +191,27 @@ fi
log_debug "Total de arquivos para baixar: ${#files[@]}" log_debug "Total de arquivos para baixar: ${#files[@]}"
# ------------------------
# Config
# ------------------------
log_info "Criando arquivo de configuração"
cat > "src/config.js" << 'EOF'
export const CLIENT_ID = "bot_permanente";
export const BOT_PREFIX = "🤖 *ManyBot:* ";
export const CMD_PREFIX = "!";
export const CHATS = [
// coloque os chats que quer aqui
];
EOF
if [[ -f src/config.js ]]; then
log_ok "Arquivo de configuração criado"
else
log_error "Erro durante criação do arquivo de configuração"
fi
# ------------------------ # ------------------------
# Download # Download
# ------------------------ # ------------------------
@@ -201,4 +223,4 @@ for file in "${files[@]}"; do
download_file "$url" "$dest" download_file "$url" "$dest"
done done
log_ok "Setup concluído com sucesso" log_ok "Setup concluído com sucesso.\nRode sempre na raíz: 'node src/main.js' (ou equivalente) para rodar o bot."

View File

@@ -1,5 +1,34 @@
export const CLIENT_ID = "bot_permanente"; import fs from "fs";
export const BOT_PREFIX = "🤖 *ManyBot:* ";
export const CHATS = [ function parseValue(v) {
// coloque os chats que quer aqui v = v.trim();
];
// lista: [a, b, c]
if (v.startsWith("[") && v.endsWith("]")) {
return v
.slice(1, -1)
.split(",")
.map(x => x.trim())
.filter(Boolean);
}
return v;
}
const raw = fs.readFileSync("manybot.conf", "utf8");
const config = Object.fromEntries(
raw
.split("\n")
.map(l => l.trim())
.filter(l => l && !l.startsWith("#"))
.map(l => {
const [k, ...v] = l.split("=");
return [k.trim(), parseValue(v.join("="))];
})
);
export const CLIENT_ID = config.CLIENT_ID ?? "bot_permanente";
export const BOT_PREFIX = config.BOT_PREFIX ?? "🤖 *ManyBot:* ";
export const CMD_PREFIX = config.CMD_PREFIX ?? "!";
export const CHATS = config.CHATS ?? [];

141
update Normal file
View File

@@ -0,0 +1,141 @@
#!/bin/bash
# ==============================================================================
# update.sh — Script de atualização segura do ManyBot
# ==============================================================================
set -euo pipefail
# ------------------------------------------------------------------------------
# Configuração
# ------------------------------------------------------------------------------
dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
tmp_dir="$dir/tmp"
log_file="$dir/update.log"
config_items=(".wwebjs_auth" ".wwebjs_cache" "node_modules")
# ------------------------------------------------------------------------------
# Logging
# ------------------------------------------------------------------------------
log() {
local level="$1"; shift
local msg="$*"
local timestamp
timestamp="$(date '+%Y-%m-%d %H:%M:%S')"
echo "[$timestamp] [$level] $msg" | tee -a "$log_file"
}
# ------------------------------------------------------------------------------
# Trap: executa em caso de qualquer erro
# ------------------------------------------------------------------------------
cleanup_on_error() {
local exit_code=$?
log "ERROR" "Falha durante a atualização (código: $exit_code)."
if [ -d "$tmp_dir" ] && [ "$(ls -A "$tmp_dir" 2>/dev/null)" ]; then
log "WARN" "Arquivos de configuração preservados em: $tmp_dir"
log "WARN" "Restaure manualmente com: mv $tmp_dir/* $dir/"
fi
exit $exit_code
}
trap cleanup_on_error ERR
# ------------------------------------------------------------------------------
# Validações iniciais
# ------------------------------------------------------------------------------
log "INFO" "Iniciando atualização do ManyBot..."
# Verifica dependências obrigatórias
for cmd in git npm; do
if ! command -v "$cmd" &>/dev/null; then
log "ERROR" "Dependência ausente: '$cmd' não encontrado no PATH."
exit 1
fi
done
# Verifica se está em um repositório git
if ! git -C "$dir" rev-parse --is-inside-work-tree &>/dev/null; then
log "ERROR" "'$dir' não é um repositório git."
exit 1
fi
# Exibe o remote para transparência
remote_url=$(git -C "$dir" remote get-url origin 2>/dev/null || echo "(não definido)")
log "INFO" "Remote: $remote_url"
# Verifica se há alterações locais não commitadas
if ! git -C "$dir" diff --quiet || ! git -C "$dir" diff --cached --quiet; then
log "WARN" "Existem alterações locais não commitadas. Elas serão descartadas pelo reset."
read -r -p "Deseja continuar mesmo assim? [s/N] " confirm
confirm="${confirm:-N}"
if [[ ! "$confirm" =~ ^[sS]$ ]]; then
log "INFO" "Atualização cancelada pelo usuário."
exit 0
fi
fi
# ------------------------------------------------------------------------------
# Backup dos arquivos de configuração
# ------------------------------------------------------------------------------
rm -rf "$tmp_dir"
mkdir -p "$tmp_dir"
backed_up=()
for item in "${config_items[@]}"; do
src="$dir/$item"
if [ -e "$src" ]; then
mv "$src" "$tmp_dir/"
backed_up+=("$item")
log "INFO" "Backup: $item → tmp/"
fi
done
# ------------------------------------------------------------------------------
# Atualização do repositório
# ------------------------------------------------------------------------------
log "INFO" "Buscando atualizações..."
git -C "$dir" fetch origin
branch=$(git -C "$dir" rev-parse --abbrev-ref HEAD)
log "INFO" "Branch atual: $branch"
# Registra o hash antes e depois para auditoria
hash_before=$(git -C "$dir" rev-parse HEAD)
git -C "$dir" reset --hard "origin/$branch"
hash_after=$(git -C "$dir" rev-parse HEAD)
if [ "$hash_before" = "$hash_after" ]; then
log "INFO" "Repositório já estava atualizado (sem mudanças)."
else
log "INFO" "Atualizado: $hash_before → $hash_after"
fi
# ------------------------------------------------------------------------------
# Instalação de dependências
# ------------------------------------------------------------------------------
log "INFO" "Instalando dependências..."
npm ci --omit=dev 2>&1 | tee -a "$log_file"
# ------------------------------------------------------------------------------
# Restauração dos arquivos de configuração
# ------------------------------------------------------------------------------
if [ ${#backed_up[@]} -gt 0 ]; then
for item in "${backed_up[@]}"; do
src="$tmp_dir/$item"
dst="$dir/$item"
if [ -e "$src" ]; then
# Remove o que npm possa ter criado (ex: node_modules)
rm -rf "$dst"
mv "$src" "$dst"
log "INFO" "Restaurado: $item"
else
log "WARN" "Item esperado no backup não encontrado: $item"
fi
done
fi
# Limpa tmp apenas após restauração bem-sucedida
rm -rf "$tmp_dir"
# ------------------------------------------------------------------------------
# Concluído
# ------------------------------------------------------------------------------
log "INFO" "ManyBot atualizado com sucesso."