#!/usr/bin/env bash
set -euo pipefail

PYTHON_BIN="python3"
VENV_DIR=".venv"
ENV_FILE=".env"

# Unique service name per folder (bot1/bot2/...)
INSTANCE_NAME="$(basename "$(pwd)")"
SERVICE_NAME="telegram-bot-${INSTANCE_NAME}"

echo "==> Telegram Bot Setup (Ubuntu 22)"
echo "==> Instance: ${INSTANCE_NAME}"
echo "==> Systemd Service: ${SERVICE_NAME}"

# 1) deps
sudo apt-get update -y
sudo apt-get install -y ${PYTHON_BIN} ${PYTHON_BIN}-venv ${PYTHON_BIN}-pip git

# 2) inputs
read -rp "Enter BOT_TOKEN: " BOT_TOKEN
read -rp "Enter SUPER ADMIN numeric ID (ADMIN_ID): " ADMIN_ID

if [[ -z "${BOT_TOKEN}" ]]; then
  echo "BOT_TOKEN is empty. Exit."
  exit 1
fi
if ! [[ "${ADMIN_ID}" =~ ^[0-9]+$ ]]; then
  echo "ADMIN_ID must be numeric. Exit."
  exit 1
fi

# 3) generate Fernet-compatible SECRET_KEY without cryptography
SECRET_KEY="$(${PYTHON_BIN} - <<'PY'
import os, base64
print(base64.urlsafe_b64encode(os.urandom(32)).decode())
PY
)"

echo "==> Writing ${ENV_FILE} ..."
cat > "${ENV_FILE}" <<EOF
BOT_TOKEN=${BOT_TOKEN}
ADMIN_ID=${ADMIN_ID}
SECRET_KEY=${SECRET_KEY}
EOF

# 4) venv + install
echo "==> Creating venv and installing requirements..."
${PYTHON_BIN} -m venv "${VENV_DIR}"
source "${VENV_DIR}/bin/activate"
pip install --upgrade pip
pip install -r requirements.txt
deactivate

# 5) systemd service
echo "==> Creating systemd service..."

WORKDIR="$(pwd)"
USER_NAME="$(whoami)"
SERVICE_PATH="/etc/systemd/system/${SERVICE_NAME}.service"

sudo bash -c "cat > '${SERVICE_PATH}'" <<EOF
[Unit]
Description=Telegram Bot Service (${SERVICE_NAME})
After=network.target

[Service]
Type=simple
User=${USER_NAME}
WorkingDirectory=${WORKDIR}
Environment=PYTHONUNBUFFERED=1
ExecStart=${WORKDIR}/${VENV_DIR}/bin/python -m app.main
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target
EOF

echo "==> Enabling and starting service..."
sudo systemctl daemon-reload
sudo systemctl enable "${SERVICE_NAME}"
sudo systemctl restart "${SERVICE_NAME}"

echo ""
echo "✅ Done!"
echo "Check logs:"
echo "  sudo journalctl -u ${SERVICE_NAME} -f"
echo "Check status:"
echo "  sudo systemctl status ${SERVICE_NAME} --no-pager -l"
