110 lines
4.0 KiB
Bash
Executable File
110 lines
4.0 KiB
Bash
Executable File
#!/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
|
||
|
||
# Активация виртуального окружения
|
||
source venv/bin/activate
|
||
|
||
# Установка зависимостей
|
||
echo "📦 Проверка зависимостей..."
|
||
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
|