115 lines
4.1 KiB
Bash
Executable File
115 lines
4.1 KiB
Bash
Executable File
#!/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
|