telegram-cli-bot/run.sh

115 lines
4.1 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"
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