# News Bot для Linux Gaming Автоматизированный бот для публикации новостей с сайта linux-gaming.ru в Telegram, VK и опционально в Discord. ## ✨ Особенности - **Модульная архитектура** - каждая платформа в отдельном модуле - **Опциональный Discord** - можно включать/отключать через конфигурацию - **Обработка контента** - автоматическая конвертация HTML в markdown - **Дедупликация** - исключение повторных публикаций - **Планировщик** - автоматическое выполнение каждые 30 минут - **Цветное логирование** - удобная отладка и мониторинг ## 🚀 Быстрый старт ### 1. Установка зависимостей ```bash # Основные зависимости pip3 install telethon requests schedule colorlog html2text beautifulsoup4 # Для Discord (опционально) pip3 install discord.py ``` ### 2. Конфигурация ```bash # Скопировать пример конфигурации cp keys_example.py keys.py # Отредактировать keys.py с вашими API ключами nano keys.py ``` ### 3. Запуск ```bash # Новый модульный бот (рекомендуется) python3 news-bot-modular.py # Или старый монолитный бот python3 news-bot.py ``` ## 📁 Структура проекта ``` ├── news-bot-modular.py # Новый основной файл ├── news-bot.py # Старый монолитный файл ├── config.py # Централизованная конфигурация ├── logger.py # Настройка логирования ├── content_processor.py # Обработка контента ├── telegram_client.py # Telegram API клиент ├── vk_client.py # VK API клиент ├── discord_client.py # Discord API клиент (опциональный) ├── site_api.py # API сайта linux-gaming.ru ├── del-tests.py # Утилита очистки каналов ├── keys_example.py # Пример конфигурации └── keys.py # Реальная конфигурация (создается вручную) ``` ## ⚙️ Конфигурация Настройки в файле `keys.py`: | Параметр | Описание | Обязательный | |----------|----------|--------------| | `api_key_site` | Ключ API сайта | ✅ | | `api_id_tg` | Telegram API ID | ✅ | | `api_hash_tg` | Telegram API Hash | ✅ | | `channel_username_tg` | Telegram канал | ✅ | | `api_key_vk` | VK API ключ | ✅ | | `user_token_vk` | VK пользовательский токен | ✅ | | `own_id` | ID VK группы/страницы | ✅ | | `discord_enabled` | Включить Discord | ❌ (по умолчанию False) | | `discord_token` | Discord бот токен | ❌ (если Discord включен) | | `dicord_channel` | Discord канал ID | ❌ (если Discord включен) | | `cat_num` | Номер категории новостей | ✅ (по умолчанию 8) | | `start_topic_id` | Стартовый ID темы | ✅ (по умолчанию 0) | ## 🔧 Модули ### ContentProcessor Обрабатывает и форматирует контент: - Конвертация HTML → Markdown - Удаление дубликатов ссылок - Форматирование под каждую платформу ### TelegramNewsClient - Асинхронная работа с Telegram API - Обработка FloodWait ошибок - Проверка существующих сообщений ### VKClient - Публикация в VK - Специальная обработка для постов о скриптах - Прикрепление ссылок и изображений ### DiscordClient (опциональный) - Включается/выключается через конфигурацию - Автоматическая проверка зависимостей - Разбивка длинных сообщений ### SiteAPI - Получение новостей с сайта - Мониторинг новых версий скриптов - Публикация обновлений ## 🎯 Использование ```python from news_bot_modular import NewsBot bot = NewsBot() # Проверить статус модулей print("Telegram:", bot.telegram_client.is_enabled()) print("VK:", bot.vk_client.is_enabled()) print("Discord:", bot.discord_client.is_enabled()) # Запустить бота bot.start() ``` ## ⚡ Быстрые команды ```bash # Полная переустановка rm -rf venv keys.py *.session bash setup_venv.sh cp keys_example.py keys.py # Обновление зависимостей source venv/bin/activate pip install --upgrade -r requirements.txt # Проверка всех модулей python3 -c "from news_bot_modular import NewsBot; bot = NewsBot(); print('✓ Все модули загружены успешно')" ``` ## 🛠 Утилиты и скрипты ### Управление ботом ```bash # Запуск бота через виртуальное окружение bash run_bot.sh # Прямой запуск (если venv активировано) python3 news-bot-modular.py # Системная установка как сервис bash install-service.sh # Управление сервисом bash service-control.sh start # Запуск bash service-control.sh stop # Остановка bash service-control.sh restart # Перезапуск bash service-control.sh status # Статус ``` ### Обслуживание ```bash # Очистка каналов от тестовых сообщений python3 del-tests.py # Переустановка виртуального окружения rm -rf venv bash setup_venv.sh # Проверка синтаксиса python3 -m py_compile news-bot-modular.py python3 -m py_compile telegram_client.py ``` ## 🐛 Отладка Логи с цветовой маркировкой: - 🔵 DEBUG - детальная информация - 🟢 INFO - основные события - 🟡 WARNING - предупреждения - 🔴 ERROR - ошибки - ⚪ CRITICAL - критические ошибки ## 🚀 Развертывание на сервере ### Быстрое развертывание ```bash # 1. Клонирование репозитория git clone cd bot-news-linux-gaming # 2. Автоматическая установка bash setup_venv.sh # 3. Конфигурация cp keys_example.py keys.py nano keys.py # Заполнить все API ключи # 4. Тестовый запуск bash run_bot.sh ``` ### Установка как системный сервис ```bash # После настройки конфигурации bash install-service.sh # Управление сервисом sudo systemctl start bot-news-linux-gaming sudo systemctl enable bot-news-linux-gaming # Автозапуск sudo systemctl status bot-news-linux-gaming # Проверка статуса # Просмотр логов journalctl -u bot-news-linux-gaming -f ``` ### Требования к серверу - **ОС**: Ubuntu 20.04+ / Debian 11+ - **Python**: 3.8+ - **Память**: минимум 512MB RAM - **Диск**: 100MB свободного места - **Сеть**: доступ к интернету для API запросов ## 🔧 Конфигурация топиков Telegram Для публикации в конкретном топике супергруппы: ```python # В файле keys.py добавить: telegram_topic_id = 123456 # ID первого сообщения топика ``` ID топика можно получить: 1. Перейти в топик супергруппы 2. Скопировать ссылку на первое сообщение топика 3. ID будет в конце ссылки: `/c/channel_id/topic_id` ## 📝 Лицензия Этот проект является частной разработкой для автоматизации публикации новостей Linux Gaming.