#!/bin/bash # Скрипт запуска Telegram CLI Bot set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" ENV_FILE="$SCRIPT_DIR/.env" # Функция для установки значения в .env set_env_value() { local key="$1" local value="$2" if [ -f "$ENV_FILE" ]; then # Если ключ существует - обновляем if grep -q "^$key=" "$ENV_FILE"; then sed -i "s|^$key=.*|$key=$value|" "$ENV_FILE" else # Иначе добавляем echo "$key=$value" >> "$ENV_FILE" fi else # Создаём файл echo "$key=$value" > "$ENV_FILE" fi } # Проверка виртуального окружения 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. Проверяем .env файл if [ -f "$ENV_FILE" ]; then TOKEN=$(grep "^TELEGRAM_BOT_TOKEN=" "$ENV_FILE" | cut -d'=' -f2) if [ -n "$TOKEN" ]; then echo "✅ Токен получен из .env" fi fi # 2. Проверяем переменную окружения (имеет приоритет над .env) if [ -n "$TELEGRAM_BOT_TOKEN" ]; then TOKEN="$TELEGRAM_BOT_TOKEN" echo "✅ Токен получен из переменной окружения" 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 "💾 Сохранить токен в .env? (y/n): " SAVE if [[ "$SAVE" =~ ^[Yy]$ ]]; then set_env_value "TELEGRAM_BOT_TOKEN" "$TOKEN" echo "✅ Токен сохранён в $ENV_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