# 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 python3 del-tests.py ``` Удаляет все сообщения из всех настроенных каналов. ### Проверка синтаксиса ```bash python3 -m py_compile news-bot-modular.py python3 -m py_compile content_processor.py ``` ## 🐛 Отладка Логи с цветовой маркировкой: - 🔵 DEBUG - детальная информация - 🟢 INFO - основные события - 🟡 WARNING - предупреждения - 🔴 ERROR - ошибки - ⚪ CRITICAL - критические ошибки ## 📝 Лицензия Этот проект является частной разработкой для автоматизации публикации новостей Linux Gaming.