61 lines
2.6 KiB
Bash
61 lines
2.6 KiB
Bash
#!/usr/bin/env bash
|
|
# Мобильный деплой support-бота: скачивает репозиторий прямо в целевую папку
|
|
# (без вложенной "streamhelp-support-bot/streamhelp-support-bot"), ставит
|
|
# зависимости и поднимает бота в screen-сессии. Повторный запуск обновляет код
|
|
# и перезапускает сессию — можно гонять этот скрипт при каждом деплое.
|
|
#
|
|
# Использование:
|
|
# curl -fsSL https://.../deploy.sh | bash
|
|
# или руками на сервере:
|
|
# ./deploy.sh
|
|
set -euo pipefail
|
|
|
|
REPO_URL="https://git.twitchmagic.pro/AdministratorEbaka1337/streamhelp-bot.git"
|
|
APP_DIR="/opt/support-bot"
|
|
ENV_FILE="/etc/support-bot.env"
|
|
DB_DIR="/var/lib/support-bot"
|
|
SESSION="support-bot"
|
|
|
|
command -v screen >/dev/null || { echo "Нужен screen: apt install -y screen (или yum/dnf)"; exit 1; }
|
|
command -v python3 >/dev/null || { echo "Нужен python3"; exit 1; }
|
|
command -v git >/dev/null || { echo "Нужен git"; exit 1; }
|
|
|
|
# Клонируем прямо в APP_DIR — без "git clone REPO APP_DIR/streamhelp-bot".
|
|
if [ -d "$APP_DIR/.git" ]; then
|
|
git -C "$APP_DIR" pull --ff-only
|
|
else
|
|
mkdir -p "$APP_DIR"
|
|
git clone "$REPO_URL" "$APP_DIR"
|
|
fi
|
|
|
|
cd "$APP_DIR"
|
|
|
|
python3 -m venv .venv --upgrade-deps >/dev/null 2>&1 || python3 -m venv .venv
|
|
./.venv/bin/pip install -q -r requirements.txt
|
|
|
|
mkdir -p "$DB_DIR"
|
|
|
|
if [ ! -f "$ENV_FILE" ]; then
|
|
cp support-bot.env "$ENV_FILE"
|
|
chmod 600 "$ENV_FILE"
|
|
echo "!!! Заполни $ENV_FILE (BOT_TOKEN, SUPPORT_CHAT_ID) и запусти скрипт снова."
|
|
exit 1
|
|
fi
|
|
|
|
if grep -q "ВСТАВЬ_СЮДА_ТОКЕН_БОТА" "$ENV_FILE" || grep -q "SUPPORT_CHAT_ID=0" "$ENV_FILE"; then
|
|
echo "!!! $ENV_FILE ещё не заполнен реальными значениями — заполни и перезапусти."
|
|
exit 1
|
|
fi
|
|
|
|
# Пересоздаём screen-сессию: убиваем старую (если есть) и поднимаем свежую.
|
|
screen -S "$SESSION" -X quit >/dev/null 2>&1 || true
|
|
screen -dmS "$SESSION" "$APP_DIR/.venv/bin/python" "$APP_DIR/support_bot.py"
|
|
|
|
sleep 1
|
|
if screen -list | grep -q "\.$SESSION"; then
|
|
echo "Бот запущен в screen-сессии '$SESSION'. Смотреть: screen -r $SESSION (выход из сессии — Ctrl+A, D)."
|
|
else
|
|
echo "!!! Сессия не поднялась — смотри вывод вручную: cd $APP_DIR && ./.venv/bin/python support_bot.py"
|
|
exit 1
|
|
fi
|