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

241 lines
8.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 <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
# После настройки конфигурации
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.