#!/bin/bash # Скрипт запуска Telegram CLI Bot set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" CONFIG_FILE="$SCRIPT_DIR/bot_config.json" # Функция для получения значения из JSON get_json_value() { python3 -c "import json; data=json.load(open('$CONFIG_FILE')); print(data.get('$1', ''))" 2>/dev/null || echo "" } # Функция для установки значения в JSON set_json_value() { python3 -c " import json with open('$CONFIG_FILE', 'r') as f: data = json.load(f) data['$1'] = '$2' with open('$CONFIG_FILE', 'w') as f: json.dump(data, f, indent=2, ensure_ascii=False) " } # Проверка виртуального окружения if [ ! -d "venv" ]; then echo "📦 Виртуальное окружение не найдено. Создаю..." python3 -m venv venv echo "✅ Виртуальное окружение создано" fi # Активация виртуального окружения (проверяем что файл существует) if [ -f "venv/bin/activate" ]; then source venv/bin/activate else echo "❌ Ошибка: venv/bin/activate не найден" echo "Попробуйте удалить venv и запустить скрипт заново" exit 1 fi # Установка зависимостей echo "📦 Установка зависимостей..." pip install -q --upgrade pip pip install -q -r requirements.txt # Работа с токеном TOKEN="" # 1. Проверяем переменную окружения if [ -n "$TELEGRAM_BOT_TOKEN" ]; then TOKEN="$TELEGRAM_BOT_TOKEN" echo "✅ Токен получен из переменной окружения" fi # 2. Если нет в переменной, проверяем конфиг if [ -z "$TOKEN" ] && [ -f "$CONFIG_FILE" ]; then TOKEN=$(get_json_value "bot_token") if [ -n "$TOKEN" ]; then echo "✅ Токен получен из конфигурации" fi fi # 3. Если токена нет нигде, запрашиваем у пользователя if [ -z "$TOKEN" ]; then echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "🔑 Настройка Telegram Bot" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" echo "Для работы бота необходим токен от @BotFather" echo "" echo "Как получить токен:" echo " 1. Откройте @BotFather в Telegram" echo " 2. Отправьте команду /newbot" echo " 3. Введите имя бота (например: My CLI Bot)" echo " 4. Введите username бота (должен заканчиваться на 'bot')" echo " 5. Скопируйте полученный токен" echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" # Запрос токена с подтверждением while true; do read -p "📋 Вставьте токен бота: " TOKEN # Проверка формата токена (примерно 46 символов, содержит : и _) if [[ "$TOKEN" =~ ^[0-9]+:[A-Za-z0-9_-]+$ ]]; then echo "" read -p "💾 Сохранить токен в конфигурацию? (y/n): " SAVE if [[ "$SAVE" =~ ^[Yy]$ ]]; then # Создаём конфиг если нет if [ ! -f "$CONFIG_FILE" ]; then echo '{}' > "$CONFIG_FILE" fi set_json_value "bot_token" "$TOKEN" echo "✅ Токен сохранён в $CONFIG_FILE" fi break else echo "❌ Неверный формат токена. Токен должен выглядеть как: 123456789:ABCdefGHIjklMNOpqrsTUVwxyz" echo "" fi done fi # Экспорт токена для бота export TELEGRAM_BOT_TOKEN="$TOKEN" # Запуск бота echo "" echo "🤖 Запуск Telegram CLI Bot..." echo "" python bot.py