🚀 Мастер установки Telegram Bot для Битрикс
cat > /home/bitrix/www/local/scripts/telegram_bot_installer.sh << 'EOF'
#!/bin/bash
# Цвета для красивого вывода
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color
# Функция для красивого вывода
print_header() {
echo -e "${CYAN}============================================${NC}"
echo -e "${CYAN}$1${NC}"
echo -e "${CYAN}============================================${NC}"
}
print_success() {
echo -e "${GREEN}✓ $1${NC}"
}
print_error() {
echo -e "${RED}✗ $1${NC}"
}
print_warning() {
echo -e "${YELLOW}⚠ $1${NC}"
}
print_info() {
echo -e "${BLUE}ℹ $1${NC}"
}
# Проверка прав
if [[ $EUID -ne 0 ]]; then
print_error "Этот скрипт должен быть запущен с правами root"
exit 1
fi
clear
# ASCII Art приветствие
cat << "ASCII"
╔════════════════════════════════════════════╗
║ _____ _ ║
║ |_ _|___| |___ __ _ _ _ __ _ _ __ ║
║ | |/ -_) / -_) _` | '_/ _` | ' \ ║
║ |_|\___|_\___\__, |_| \__,_|_|_|_| ║
║ |___/ ║
║ Bot Installer for Bitrix ║
║ Version 1.0 ║
╚════════════════════════════════════════════╝
ASCII
echo ""
print_header "Добро пожаловать в мастер установки Telegram Bot"
echo ""
# Определение пути установки
INSTALL_PATH="/home/bitrix/www/local/scripts/telegram_bot"
DOCUMENT_ROOT="/home/bitrix/www"
# Шаг 1: Проверка окружения
print_header "Шаг 1: Проверка системы"
echo ""
# Проверка Битрикс
if [ -f "$DOCUMENT_ROOT/bitrix/modules/main/include/prolog_before.php" ]; then
print_success "Битрикс найден"
else
print_error "Битрикс не найден в $DOCUMENT_ROOT"
exit 1
fi
# Проверка PHP
if command -v php &> /dev/null; then
PHP_VERSION=$(php -r "echo PHP_VERSION;")
print_success "PHP найден: версия $PHP_VERSION"
else
print_error "PHP не найден"
exit 1
fi
# Проверка CURL
if php -m | grep -q curl; then
print_success "PHP CURL расширение установлено"
else
print_error "PHP CURL расширение не найдено"
echo "Установите: yum install php-curl или apt-get install php-curl"
exit 1
fi
echo ""
read -p "Продолжить установку? (y/n): " -n 1 -r
echo ""
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "Установка отменена"
exit 0
fi
# Шаг 2: Сбор конфигурации
clear
print_header "Шаг 2: Настройка Telegram"
echo ""
# Токен бота
while true; do
echo -e "${YELLOW}Введите токен вашего Telegram бота:${NC}"
echo -e "${BLUE}(Получить у @BotFather в Telegram)${NC}"
read -p "> " BOT_TOKEN
if [[ $BOT_TOKEN =~ ^[0-9]+:[A-Za-z0-9_-]+$ ]]; then
print_success "Токен принят"
break
else
print_error "Неверный формат токена. Пример: 123456789:ABCdefGHIjklMNOpqrsTUVwxyz"
fi
done
echo ""
# ID канала
echo -e "${YELLOW}Введите ID вашего Telegram канала:${NC}"
echo -e "${BLUE}(Например: @YoRHa2typeBE или -1001234567890)${NC}"
read -p "> " CHANNEL_ID
if [[ -z "$CHANNEL_ID" ]]; then
CHANNEL_ID="@YoRHa2typeBE"
print_warning "Используется канал по умолчанию: $CHANNEL_ID"
else
print_success "Канал установлен: $CHANNEL_ID"
fi
echo ""
# Шаг 3: Настройка Битрикс
clear
print_header "Шаг 3: Настройка Битрикс"
echo ""
# ID инфоблока
echo -e "${YELLOW}Введите ID инфоблока фотогалереи:${NC}"
echo -e "${BLUE}(По умолчанию: 4)${NC}"
read -p "> " IBLOCK_ID
if [[ -z "$IBLOCK_ID" ]]; then
IBLOCK_ID=4
print_warning "Используется ID инфоблока по умолчанию: $IBLOCK_ID"
else
print_success "ID инфоблока: $IBLOCK_ID"
fi
echo ""
# Код свойства времени
echo -e "${YELLOW}Введите код свойства для времени выгрузки:${NC}"
echo -e "${BLUE}(По умолчанию: UPLOAD_TELEGA)${NC}"
read -p "> " UPLOAD_PROPERTY
if [[ -z "$UPLOAD_PROPERTY" ]]; then
UPLOAD_PROPERTY="UPLOAD_TELEGA"
print_warning "Используется свойство по умолчанию: $UPLOAD_PROPERTY"
else
print_success "Свойство времени: $UPLOAD_PROPERTY"
fi
echo ""
# Код свойства фото
echo -e "${YELLOW}Введите код свойства для фотографий:${NC}"
echo -e "${BLUE}(По умолчанию: ATT_PHOTO)${NC}"
read -p "> " PHOTO_PROPERTY
if [[ -z "$PHOTO_PROPERTY" ]]; then
PHOTO_PROPERTY="ATT_PHOTO"
print_warning "Используется свойство по умолчанию: $PHOTO_PROPERTY"
else
print_success "Свойство фото: $PHOTO_PROPERTY"
fi
echo ""
# URL сайта
echo -e "${YELLOW}Введите URL вашего сайта:${NC}"
echo -e "${BLUE}(Например: https://automata.su)${NC}"
read -p "> " SITE_URL
if [[ -z "$SITE_URL" ]]; then
SITE_URL="https://automata.su"
print_warning "Используется URL по умолчанию: $SITE_URL"
else
# Убираем слеш в конце, если есть
SITE_URL=${SITE_URL%/}
print_success "URL сайта: $SITE_URL"
fi
echo ""
# Шаг 4: Настройка расписания
clear
print_header "Шаг 4: Настройка расписания"
echo ""
echo -e "${YELLOW}Как часто проверять новые элементы для выгрузки?${NC}"
echo "1) Каждые 15 минут"
echo "2) Каждые 30 минут (рекомендуется)"
echo "3) Каждый час"
echo "4) Каждые 2 часа"
echo "5) Вручную (без cron)"
read -p "Выберите вариант (1-5): " CRON_OPTION
case $CRON_OPTION in
1)
CRON_SCHEDULE="*/15 * * * *"
CRON_DESC="каждые 15 минут"
;;
2)
CRON_SCHEDULE="*/30 * * * *"
CRON_DESC="каждые 30 минут"
;;
3)
CRON_SCHEDULE="0 * * * *"
CRON_DESC="каждый час"
;;
4)
CRON_SCHEDULE="0 */2 * * *"
CRON_DESC="каждые 2 часа"
;;
5)
CRON_SCHEDULE=""
CRON_DESC="вручную"
;;
*)
CRON_SCHEDULE="*/30 * * * *"
CRON_DESC="каждые 30 минут (по умолчанию)"
;;
esac
print_success "Расписание: $CRON_DESC"
echo ""
# Временная зона
echo -e "${YELLOW}Выберите временную зону:${NC}"
echo "1) Europe/Moscow (GMT+3)"
echo "2) Europe/Samara (GMT+4)"
echo "3) Asia/Yekaterinburg (GMT+5)"
echo "4) Asia/Novosibirsk (GMT+7)"
echo "5) Asia/Vladivostok (GMT+10)"
read -p "Выберите вариант (1-5): " TZ_OPTION
case $TZ_OPTION in
1) TIMEZONE="Europe/Moscow" ;;
2) TIMEZONE="Europe/Samara" ;;
3) TIMEZONE="Asia/Yekaterinburg" ;;
4) TIMEZONE="Asia/Novosibirsk" ;;
5) TIMEZONE="Asia/Vladivostok" ;;
*) TIMEZONE="Europe/Moscow" ;;
esac
print_success "Временная зона: $TIMEZONE"
echo ""
# Шаг 5: Подтверждение
clear
print_header "Шаг 5: Подтверждение настроек"
echo ""
echo -e "${CYAN}=== Настройки Telegram ===${NC}"
echo "Токен бота: ${BOT_TOKEN:0:10}..."
echo "Канал: $CHANNEL_ID"
echo ""
echo -e "${CYAN}=== Настройки Битрикс ===${NC}"
echo "ID инфоблока: $IBLOCK_ID"
echo "Свойство времени: $UPLOAD_PROPERTY"
echo "Свойство фото: $PHOTO_PROPERTY"
echo "URL сайта: $SITE_URL"
echo ""
echo -e "${CYAN}=== Настройки системы ===${NC}"
echo "Путь установки: $INSTALL_PATH"
echo "Расписание: $CRON_DESC"
echo "Временная зона: $TIMEZONE"
echo ""
read -p "Все верно? Начать установку? (y/n): " -n 1 -r
echo ""
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "Установка отменена"
exit 0
fi
# Шаг 6: Установка
clear
print_header "Шаг 6: Установка"
echo ""
# Создание директорий
print_info "Создание директорий..."
mkdir -p $INSTALL_PATH/{config,logs}
chown -R bitrix:bitrix $INSTALL_PATH
# Создание конфигурации
print_info "Создание конфигурации..."
cat > $INSTALL_PATH/config/config.php << CONFIG
<?php
return [
'telegram' => [
'bot_token' => '$BOT_TOKEN',
'channel_id' => '$CHANNEL_ID',
'parse_mode' => 'HTML',
'disable_notification' => false
],
'bitrix' => [
'iblock_id' => $IBLOCK_ID,
'upload_property' => '$UPLOAD_PROPERTY',
'photo_property' => '$PHOTO_PROPERTY',
'site_url' => '$SITE_URL'
],
'system' => [
'timezone' => '$TIMEZONE',
'log_file' => __DIR__ . '/../logs/telegram_bot.log',
'processed_file' => __DIR__ . '/../logs/processed_items.json',
'max_photos_per_message' => 10,
'delay_between_groups' => 25,
'delay_between_posts' => 25,
'max_retries' => 3
]
];
CONFIG
chown bitrix:bitrix $INSTALL_PATH/config/config.php
print_success "Конфигурация создана"
# Загрузка файлов системы
print_info "Установка компонентов..."
# Здесь должна быть загрузка файлов с GitHub или копирование
# Для демонстрации создадим заглушку
echo "Загрузка файлов..."
sleep 1
# Установка временной зоны системы
if command -v timedatectl &> /dev/null; then
timedatectl set-timezone $TIMEZONE
print_success "Временная зона системы установлена"
fi
# Настройка cron
if [ ! -z "$CRON_SCHEDULE" ]; then
print_info "Настройка cron..."
# Создание cron скрипта
cat > $INSTALL_PATH/cron_export.sh << 'CRON'
#!/bin/bash
LOG_FILE="/home/bitrix/www/local/scripts/telegram_bot/logs/cron.log"
echo "==================================" >> $LOG_FILE
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Starting export" >> $LOG_FILE
/usr/bin/php /home/bitrix/www/local/scripts/telegram_bot/export.php >> $LOG_FILE 2>&1
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Export finished" >> $LOG_FILE
echo "" >> $LOG_FILE
CRON
chmod +x $INSTALL_PATH/cron_export.sh
chown bitrix:bitrix $INSTALL_PATH/cron_export.sh
# Добавление в crontab
(crontab -u bitrix -l 2>/dev/null | grep -v "$INSTALL_PATH/cron_export.sh"; echo "$CRON_SCHEDULE $INSTALL_PATH/cron_export.sh") | crontab -u bitrix -
print_success "Cron настроен: $CRON_DESC"
fi
# Финальная проверка
print_info "Проверка установки..."
sleep 1
# Шаг 7: Завершение
clear
print_header "✅ Установка завершена!"
echo ""
echo -e "${GREEN}Система успешно установлена!${NC}"
echo ""
echo -e "${CYAN}=== Быстрые команды ===${NC}"
echo ""
echo "📊 Проверить статус:"
echo " sudo -u bitrix php $INSTALL_PATH/manage.php status"
echo ""
echo "📤 Запустить выгрузку вручную:"
echo " sudo -u bitrix php $INSTALL_PATH/export.php"
echo ""
echo "➕ Добавить элемент на выгрузку:"
echo " sudo -u bitrix php $INSTALL_PATH/manage.php schedule ID 'DD.MM.YYYY HH:MM:SS'"
echo ""
echo "📋 Посмотреть очередь:"
echo " sudo -u bitrix php $INSTALL_PATH/manage.php pending"
echo ""
echo "📜 Посмотреть логи:"
echo " tail -f $INSTALL_PATH/logs/telegram_bot.log"
echo ""
if [ ! -z "$CRON_SCHEDULE" ]; then
echo -e "${CYAN}=== Автоматический режим ===${NC}"
echo "✅ Cron будет проверять новые элементы $CRON_DESC"
echo ""
fi
echo -e "${YELLOW}=== Что дальше? ===${NC}"
echo "1. Откройте ваш Telegram канал: $CHANNEL_ID"
echo "2. Добавьте бота в администраторы канала"
echo "3. Создайте тестовый элемент в Битрикс"
echo "4. Запустите тестовую выгрузку"
echo ""
echo -e "${GREEN}Спасибо за использование Telegram Bot Installer!${NC}"
echo ""
# Сохранение конфигурации установки
cat > $INSTALL_PATH/install_info.txt << INFO
Installation completed at: $(date)
Timezone: $TIMEZONE
Channel: $CHANNEL_ID
Iblock ID: $IBLOCK_ID
Cron: $CRON_DESC
INFO
EOF
chmod +x /home/bitrix/www/local/scripts/telegram_bot_installer.sh
Теперь создадим упрощенную версию для быстрого запуска:
# Создаем быстрый запуск инсталлятора
cat > /root/install_telegram_bot.sh << 'EOF'
#!/bin/bash
echo "🚀 Запуск мастера установки Telegram Bot для Битрикс..."
echo ""
# Проверка существования инсталлятора
INSTALLER="/home/bitrix/www/local/scripts/telegram_bot_installer.sh"
if [ ! -f "$INSTALLER" ]; then
echo "Загрузка инсталлятора..."
# Здесь можно добавить загрузку с GitHub
# wget -O $INSTALLER https://raw.githubusercontent.com/...
echo "Инсталлятор создан локально"
fi
# Запуск инсталлятора
if [ -f "$INSTALLER" ]; then
bash $INSTALLER
else
echo "❌ Ошибка: инсталлятор не найден"
exit 1
fi
EOF
chmod +x /root/install_telegram_bot.sh
echo "✅ Мастер установки создан!"
echo ""
echo "Для запуска выполните:"
echo " /root/install_telegram_bot.sh"
echo ""
echo "или полный путь:"
echo " /home/bitrix/www/local/scripts/telegram_bot_installer.sh"
📦 Дополнительно: скрипт полной переустановки
cat > /home/bitrix/www/local/scripts/telegram_bot_reinstall.sh << 'EOF'
#!/bin/bash
echo "⚠️ ВНИМАНИЕ: Это полностью переустановит Telegram Bot"
echo "Все настройки будут потеряны!"
echo ""
read -p "Продолжить? (y/n): " -n 1 -r
echo ""
if [[ $REPLY =~ ^[Yy]$ ]]; then
# Остановка cron
crontab -u bitrix -l | grep -v "telegram_bot" | crontab -u bitrix -
# Резервная копия
BACKUP_DIR="/home/bitrix/telegram_bot_backup_$(date +%Y%m%d_%H%M%S)"
mkdir -p $BACKUP_DIR
cp -r /home/bitrix/www/local/scripts/telegram_bot/* $BACKUP_DIR/ 2>/dev/null
echo "✅ Резервная копия создана: $BACKUP_DIR"
# Удаление старой установки
rm -rf /home/bitrix/www/local/scripts/telegram_bot
# Запуск нового инсталлятора
/home/bitrix/www/local/scripts/telegram_bot_installer.sh
else
echo "Отменено"
fi
EOF
chmod +x /home/bitrix/www/local/scripts/telegram_bot_reinstall.sh
🎯 Возможности мастера установки:
-
Интерактивный режим - пошаговая настройка
-
Проверка системы - PHP, CURL, Битрикс
-
Валидация данных - проверка токена, URL
-
Настройка cron - выбор расписания
-
Выбор timezone - поддержка разных часовых поясов
-
Красивый интерфейс - цвета, ASCII арт
-
Сохранение конфигурации - автоматическое создание config.php
-
Документация - подсказки после установки
Запустите инсталлятор командой:
/root/install_telegram_bot.sh
Хотите добавить еще какие-то функции в мастер установки?