241 lines
8.5 KiB
Markdown
241 lines
8.5 KiB
Markdown
# 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. |