mirror of
https://github.com/anten-ka/gotelegram_pro.git
synced 2026-05-19 21:56:05 +00:00
133 lines
6.1 KiB
Bash
133 lines
6.1 KiB
Bash
#!/bin/bash
|
||
# GoTelegram v2.2 — Установка Telegram-бота
|
||
# Создаёт venv, ставит зависимости, настраивает systemd
|
||
|
||
set -e
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
CYAN='\033[0;36m'
|
||
NC='\033[0m'
|
||
|
||
BOT_DIR="/opt/gotelegram-bot"
|
||
SERVICE_NAME="gotelegram-bot"
|
||
GOTELEGRAM_DIR="/opt/gotelegram"
|
||
|
||
if [ "$EUID" -ne 0 ]; then
|
||
echo -e "${RED}Запустите с sudo.${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
echo -e "${CYAN}╔═══════════════════════════════════════════╗${NC}"
|
||
echo -e "${CYAN}║${NC} ${GREEN}GoTelegram v2.2 — Установка бота${NC} ${CYAN}║${NC}"
|
||
echo -e "${CYAN}╚═══════════════════════════════════════════╝${NC}"
|
||
echo ""
|
||
|
||
# ── Python ───────────────────────────────────────────────────────────────────
|
||
if ! command -v python3 &>/dev/null; then
|
||
echo -e "${YELLOW}[*] Установка python3...${NC}"
|
||
if command -v apt-get &>/dev/null; then
|
||
apt-get update -qq && apt-get install -y -qq python3 python3-pip python3-venv
|
||
elif command -v dnf &>/dev/null; then
|
||
dnf install -y -q python3 python3-pip
|
||
elif command -v yum &>/dev/null; then
|
||
yum install -y -q python3 python3-pip
|
||
fi
|
||
fi
|
||
|
||
# ── Каталог бота ─────────────────────────────────────────────────────────────
|
||
mkdir -p "$BOT_DIR"
|
||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
|
||
if [ -f "$SCRIPT_DIR/gotelegram-bot/bot.py" ]; then
|
||
echo -e "${GREEN}[*] Копирование файлов бота...${NC}"
|
||
cp "$SCRIPT_DIR/gotelegram-bot/bot.py" "$BOT_DIR/"
|
||
cp "$SCRIPT_DIR/gotelegram-bot/requirements.txt" "$BOT_DIR/"
|
||
[ -f "$SCRIPT_DIR/gotelegram-bot/config.example.env" ] && cp "$SCRIPT_DIR/gotelegram-bot/config.example.env" "$BOT_DIR/"
|
||
else
|
||
echo -e "${RED}Файлы бота не найдены в $SCRIPT_DIR/gotelegram-bot/${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
# Копируем каталог шаблонов
|
||
if [ -f "$SCRIPT_DIR/templates_catalog.json" ]; then
|
||
mkdir -p "$GOTELEGRAM_DIR"
|
||
cp "$SCRIPT_DIR/templates_catalog.json" "$GOTELEGRAM_DIR/"
|
||
echo -e "${GREEN}[*] Каталог шаблонов скопирован${NC}"
|
||
fi
|
||
|
||
# ── Virtual environment ──────────────────────────────────────────────────────
|
||
if [ ! -d "$BOT_DIR/venv" ]; then
|
||
echo -e "${GREEN}[*] Создание виртуального окружения...${NC}"
|
||
python3 -m venv "$BOT_DIR/venv"
|
||
fi
|
||
|
||
echo -e "${GREEN}[*] Установка зависимостей...${NC}"
|
||
"$BOT_DIR/venv/bin/pip" install -r "$BOT_DIR/requirements.txt" -q
|
||
|
||
# ── Конфигурация ─────────────────────────────────────────────────────────────
|
||
if [ ! -f "$BOT_DIR/.env" ]; then
|
||
echo ""
|
||
echo -e "${YELLOW}Введите BOT_TOKEN от @BotFather:${NC}"
|
||
TOKEN=""
|
||
while [ -z "$TOKEN" ]; do
|
||
read -r TOKEN
|
||
TOKEN=$(echo "$TOKEN" | tr -d '[:space:]')
|
||
[ -z "$TOKEN" ] && echo -e "${RED}Токен не может быть пустым.${NC}"
|
||
done
|
||
|
||
echo -ne "${YELLOW}ID администратора (Enter = доступ для всех):${NC} "
|
||
read -r ADMIN_ID
|
||
|
||
{
|
||
echo "BOT_TOKEN=$TOKEN"
|
||
[ -n "$ADMIN_ID" ] && echo "ALLOWED_IDS=$ADMIN_ID"
|
||
} > "$BOT_DIR/.env"
|
||
|
||
chmod 600 "$BOT_DIR/.env"
|
||
echo -e "${GREEN}[*] .env создан${NC}"
|
||
else
|
||
echo -e "${GREEN}[*] .env уже существует${NC}"
|
||
fi
|
||
|
||
# ── Systemd ──────────────────────────────────────────────────────────────────
|
||
cat > "/etc/systemd/system/${SERVICE_NAME}.service" << EOF
|
||
[Unit]
|
||
Description=GoTelegram v2.2 Telegram Bot
|
||
After=network.target
|
||
|
||
[Service]
|
||
Type=simple
|
||
WorkingDirectory=$BOT_DIR
|
||
ExecStart=$BOT_DIR/venv/bin/python $BOT_DIR/bot.py
|
||
Restart=always
|
||
RestartSec=5
|
||
Environment=PATH=$BOT_DIR/venv/bin:/usr/bin
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
EOF
|
||
|
||
systemctl daemon-reload
|
||
systemctl enable "$SERVICE_NAME"
|
||
systemctl restart "$SERVICE_NAME" 2>/dev/null || systemctl start "$SERVICE_NAME"
|
||
|
||
echo ""
|
||
echo -e "${GREEN}╔═══════════════════════════════════════════╗${NC}"
|
||
echo -e "${GREEN}║ ✅ Бот установлен и запущен! ║${NC}"
|
||
echo -e "${GREEN}╚═══════════════════════════════════════════╝${NC}"
|
||
echo ""
|
||
echo -e "Проверка: ${CYAN}systemctl status $SERVICE_NAME${NC}"
|
||
echo -e "Логи: ${CYAN}journalctl -u $SERVICE_NAME -f${NC}"
|
||
echo -e "Настройки: ${CYAN}$BOT_DIR/.env${NC}"
|
||
echo ""
|
||
|
||
# Благодарности
|
||
echo -e "${CYAN}─────────────────────────────────────────────${NC}"
|
||
echo -e "💜 Спасибо авторам открытых проектов:"
|
||
echo -e " ${CYAN}telemt${NC} — MTProxy engine (Rust)"
|
||
echo -e " ${CYAN}HTML5 UP${NC} — шаблоны сайтов (CC BY 3.0)"
|
||
echo -e " ${CYAN}learning-zone${NC} — 150+ HTML5 шаблонов"
|
||
echo -e " ${CYAN}Start Bootstrap${NC} — Bootstrap шаблоны (MIT)"
|
||
echo -e "${CYAN}─────────────────────────────────────────────${NC}"
|