203 lines
4.6 KiB
Bash
Executable File
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." |