telegram-cli-bot/run.sh

110 lines
4.0 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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