#!/bin/bash # === RemnaWave Bot Setup & Management Script === SERVICE_NAME="remnawave-bot" BOT_FILE="main.py" ENV_FILE=".env" VENV_DIR="venv" # Select language echo "🌐 Select language / Выберите язык:" echo "1) English" echo "2) Русский" read -p ">>> " LANG_CHOICE case $LANG_CHOICE in 2) LANG_CODE="ru" ;; *) LANG_CODE="en" ;; esac # === Internationalized messages === msg() { case $1 in check_python) [[ $LANG_CODE == "ru" ]] && echo "🔍 Проверка Python..." || echo "🔍 Checking Python..." ;; python_missing) [[ $LANG_CODE == "ru" ]] && echo "❌ Python 3 не установлен. Установите Python 3.8+." || echo "❌ Python 3 is not installed. Please install Python 3.8+." ;; version) echo "📋 Python version: $PYTHON_VERSION" ;; creating_venv) [[ $LANG_CODE == "ru" ]] && echo "🔧 Создание виртуального окружения..." || echo "🔧 Creating virtual environment..." ;; activating_venv) [[ $LANG_CODE == "ru" ]] && echo "🔧 Активация виртуального окружения..." || echo "🔧 Activating virtual environment..." ;; upgrading_pip) [[ $LANG_CODE == "ru" ]] && echo "📦 Обновление pip..." || echo "📦 Upgrading pip..." ;; installing_requirements) [[ $LANG_CODE == "ru" ]] && echo "📦 Установка зависимостей..." || echo "📦 Installing requirements..." ;; env_missing) [[ $LANG_CODE == "ru" ]] && echo "⚠️ Файл .env не найден!" || echo "⚠️ .env file not found!" ;; env_created) [[ $LANG_CODE == "ru" ]] && echo "📋 Создан .env файл. Пожалуйста, отредактируйте его." || echo "📋 .env created. Please edit it." ;; validating) [[ $LANG_CODE == "ru" ]] && echo "🔍 Проверка конфигурации..." || echo "🔍 Validating configuration..." ;; config_ok) [[ $LANG_CODE == "ru" ]] && echo "✅ Конфигурация прошла проверку." || echo "✅ Configuration validated successfully." ;; creating_service) [[ $LANG_CODE == "ru" ]] && echo "🔧 Создание systemd-сервиса..." || echo "🔧 Creating systemd service..." ;; service_created) [[ $LANG_CODE == "ru" ]] && echo "✅ Сервис создан и включён." || echo "✅ Service created and enabled." ;; start_prompt) [[ $LANG_CODE == "ru" ]] && echo "🚀 Запуск бота..." || echo "🚀 Starting the bot..." ;; already_running) [[ $LANG_CODE == "ru" ]] && echo "🟢 Бот уже запущен!" || echo "🟢 Bot is already running!" ;; last_logs) [[ $LANG_CODE == "ru" ]] && echo "📄 Последние 20 строк лога:" || echo "📄 Last 20 log lines:" ;; action_menu) [[ $LANG_CODE == "ru" ]] && { echo -e "\nЧто вы хотите сделать?" echo "1) Остановить бота" echo "2) Перезапустить бота" echo "3) Выйти" } || { echo -e "\nWhat would you like to do?" echo "1) Stop the bot" echo "2) Restart the bot" echo "3) Exit" } ;; restarting) [[ $LANG_CODE == "ru" ]] && echo "🔄 Перезапуск бота..." || echo "🔄 Restarting bot..." ;; completed) echo "" [[ $LANG_CODE == "ru" ]] && { echo "🎉 Установка завершена!" echo "📋 Возможности бота:" echo " ✅ Мультиязычный интерфейс" echo " ✅ Управление балансом и подписками" echo " ✅ Промокоды и поддержка" echo "" } || { echo "🎉 Installation complete!" echo "📋 Bot Features:" echo " ✅ Multi-language support" echo " ✅ Subscription and balance management" echo " ✅ Promocode system and support" echo "" } ;; esac } # === Check if bot is running === if systemctl is-active --quiet "$SERVICE_NAME"; then msg already_running msg last_logs sudo journalctl -u "$SERVICE_NAME" -n 20 --no-pager msg action_menu read -p ">>> " choice case $choice in 1) [[ $LANG_CODE == "ru" ]] && echo "🛑 Остановка бота..." || echo "🛑 Stopping the bot..." sudo systemctl stop "$SERVICE_NAME" [[ $LANG_CODE == "ru" ]] && echo "✅ Бот остановлен." || echo "✅ Bot stopped." exit 0 ;; 2) msg restarting sudo systemctl restart "$SERVICE_NAME" [[ $LANG_CODE == "ru" ]] && echo "✅ Бот перезапущен." || echo "✅ Bot restarted." exit 0 ;; 3) [[ $LANG_CODE == "ru" ]] && echo "👋 Выход." || echo "👋 Exiting." exit 0 ;; *) [[ $LANG_CODE == "ru" ]] && echo "⚠️ Неверный выбор." || echo "⚠️ Invalid choice." exit 1 ;; esac fi # === Install/Setup === msg check_python if ! command -v python3 &> /dev/null; then msg python_missing exit 1 fi PYTHON_VERSION=$(python3 -c 'import sys; print(".".join(map(str, sys.version_info[:2])))') msg version if [ ! -d "$VENV_DIR" ]; then msg creating_venv python3 -m venv "$VENV_DIR" fi msg activating_venv source "$VENV_DIR/bin/activate" msg upgrading_pip pip install --upgrade pip msg installing_requirements pip install -r requirements.txt # Create .env if needed if [ ! -f "$ENV_FILE" ]; then msg env_missing cat > "$ENV_FILE" < /dev/null <