8.5 KiB
8.5 KiB
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 топика можно получить:
- Перейти в топик супергруппы
- Скопировать ссылку на первое сообщение топика
- ID будет в конце ссылки:
/c/channel_id/topic_id
📝 Лицензия
Этот проект является частной разработкой для автоматизации публикации новостей Linux Gaming.