Files
manybot/setup
2026-04-21 11:48:41 -03:00

203 lines
4.6 KiB
Bash
Executable File

#!/bin/bash
set -e
# Salvando diretório para evitar problemas
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# ------------------------
# Cores
# ------------------------
RESET="\033[0m"
BOLD="\033[1m"
RED="\033[31m"
GREEN="\033[32m"
YELLOW="\033[33m"
BLUE="\033[34m"
CYAN="\033[36m"
MAGENTA="\033[35m"
GRAY="\033[90m"
timestamp() {
date +"%H:%M:%S"
}
log() {
local level="$1"
local color="$2"
shift 2
echo -e "${GRAY}[$(timestamp)]${RESET} ${color}${level}${RESET} $*"
}
log_info() { log "[INFO]" "$BLUE" "$@"; }
log_ok() { log "[OK]" "$GREEN" "$@"; }
log_warn() { log "[WARN]" "$YELLOW" "$@"; }
log_error() { log "[ERROR]" "$RED" "$@"; }
log_cmd() { log "[CMD]" "$CYAN" "${BOLD}$*${RESET}"; }
log_debug() { log "[DBG]" "$GRAY" "$@"; }
# ------------------------
# Banner
# ------------------------
print_banner() {
echo -e "${MAGENTA}${BOLD}"
cat << "EOF"
_____ _____ _
| |___ ___ _ _| __ |___| |_
| | | | .'| | | | __ -| . | _|
|_|_|_|__,|_|_|_ |_____|___|_|
|___|
website: www.mlplovers.com.br/manybot
repos: git.maneos.net/synt-xerror/manybot
codeberg.org/synt-xerror/manybot
EOF
echo -e "${RESET}"
}
print_banner
log_info "Inicializando setup..."
# ------------------------
# Executar comandos
# ------------------------
run_cmd() {
log_cmd "$*"
"$@"
log_ok "Comando finalizado: $1"
}
# ------------------------
# Download
# ------------------------
download_file() {
local url="$1"
local dest="$2"
log_debug "download_file(url=$url, dest=$dest)"
if [[ -f "$dest" ]]; then
log_warn "Arquivo já existe: $dest"
return
fi
log_info "Baixando $url"
log_debug "Destino: $dest"
if command -v curl >/dev/null 2>&1; then
log_debug "Downloader: curl"
curl -L "$url" -o "$dest"
elif command -v wget >/dev/null 2>&1; then
log_debug "Downloader: wget"
wget "$url" -O "$dest"
else
log_error "curl ou wget não encontrados"
exit 1
fi
chmod +x "$dest" 2>/dev/null || true
log_ok "Arquivo pronto: $dest"
}
# ------------------------
# Detectar plataforma
# ------------------------
log_info "Detectando plataforma"
UNAME="$(uname -s)"
ARCH="$(uname -m)"
PLATFORM=""
case "$UNAME" in
Linux*) PLATFORM="linux";;
Darwin*) PLATFORM="mac";;
MINGW*|MSYS*|CYGWIN*) PLATFORM="win";;
*) PLATFORM="unknown";;
esac
log_info "Sistema: $UNAME"
log_info "Arquitetura: $ARCH"
log_info "Plataforma: $PLATFORM"
# ------------------------
# Informações do ambiente
# ------------------------
log_info "Verificando ambiente"
log_debug "Node: $(node -v 2>/dev/null || echo 'não encontrado')"
log_debug "npm: $(npm -v 2>/dev/null || echo 'não encontrado')"
log_debug "PREFIX: ${PREFIX:-<vazio>}"
# ------------------------
# Termux
# ------------------------
install_deps() {
local packages=("$@")
for pkg in "${packages[@]}"; do
if ! dpkg -s "$pkg" >/dev/null 2>&1; then
log_warn "$pkg não encontrado, instalando"
run_cmd pkg install -y "$pkg"
else
log_ok "$pkg já instalado"
fi
done
}
if [[ "$PREFIX" == *"com.termux"* ]]; then
log_info "Ambiente Termux detectado"
deps=(
chromium
)
install_deps "${deps[@]}"
fi
# ------------------------
# Setup npm
# ------------------------
log_info "Instalando dependências npm"
export PUPPETEER_SKIP_DOWNLOAD=1
run_cmd npm install
# ------------------------
# Chrome Puppeeter
# ------------------------
log_info "Instalando Chrome"
npx puppeteer browsers install chrome
# ------------------------
# ManyPlug CLI
# ------------------------
log_info "Instalando ManyPlug CLI"
if ! command -v manyplug &>/dev/null; then
log_info "ManyPlug não encontrado, instalando globalmente..."
npm install -g @freakk.dev/manyplug
log_ok "ManyPlug instalado com sucesso"
else
log_ok "ManyPlug já está instalado"
fi
# ------------------------
# Configuração de exemplo
# ------------------------
log_info "Verificando configuração"
if [[ ! -f "$SCRIPT_DIR/manybot.conf" ]]; then
if [[ -f "$SCRIPT_DIR/manybot.conf.example" ]]; then
cp "$SCRIPT_DIR/manybot.conf.example" "$SCRIPT_DIR/manybot.conf"
log_ok "Arquivo manybot.conf criado a partir do exemplo"
log_warn "Edite o manybot.conf para configurar seu bot antes de executar"
else
log_warn "Arquivo manybot.conf.example não encontrado"
fi
else
log_ok "manybot.conf já existe"
fi
log_ok "Setup concluído com sucesso.\nRode sempre na raíz: 'node src/main.js' para rodar o bot."