Files
bot-news-linux-gaming/README.md

8.5 KiB
Raw Blame History

News Bot для Linux Gaming

Автоматизированный бот для публикации новостей с сайта linux-gaming.ru в Telegram, VK и опционально в Discord.

Особенности

  • Модульная архитектура - каждая платформа в отдельном модуле
  • Опциональный Discord - можно включать/отключать через конфигурацию
  • Обработка контента - автоматическая конвертация HTML в markdown
  • Дедупликация - исключение повторных публикаций
  • Планировщик - автоматическое выполнение каждые 30 минут
  • Цветное логирование - удобная отладка и мониторинг

🚀 Быстрый старт

1. Установка зависимостей

# Основные зависимости
pip3 install telethon requests schedule colorlog html2text beautifulsoup4

# Для Discord (опционально)
pip3 install discord.py

2. Конфигурация

# Скопировать пример конфигурации
cp keys_example.py keys.py

# Отредактировать keys.py с вашими API ключами
nano keys.py

3. Запуск

# Новый модульный бот (рекомендуется)
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

  • Получение новостей с сайта
  • Мониторинг новых версий скриптов
  • Публикация обновлений

🎯 Использование

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()

Быстрые команды

# Полная переустановка
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 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   # Статус

Обслуживание

# Очистка каналов от тестовых сообщений
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 - критические ошибки

🚀 Развертывание на сервере

Быстрое развертывание

# 1. Клонирование репозитория
git clone <repository-url>
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 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

Для публикации в конкретном топике супергруппы:

# В файле keys.py добавить:
telegram_topic_id = 123456  # ID первого сообщения топика

ID топика можно получить:

  1. Перейти в топик супергруппы
  2. Скопировать ссылку на первое сообщение топика
  3. ID будет в конце ссылки: /c/channel_id/topic_id

📝 Лицензия

Этот проект является частной разработкой для автоматизации публикации новостей Linux Gaming.