Завершение модульной рефакторизации и исправления

Исправлены все основные проблемы:
- Исправлена логика фильтрации сообщений по топикам в Telegram
- Исправлен бесконечный цикл в VK клиенте get_wall_posts()
- Добавлена асинхронная поддержка для VK в главном файле
- Дедупликация работает корректно для всех платформ
- Добавлена полная документация в CLAUDE.md и README.md

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-08-11 15:11:39 +03:00
parent 188acdd812
commit 845f96209d
15 changed files with 569071 additions and 1 deletions

113
CLAUDE.md Normal file
View File

@@ -0,0 +1,113 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Архитектура проекта
Это Python-проект для автоматизации новостных ботов с модульной архитектурой, которые публикуют контент в Telegram, VK и опционально в Discord.
### Модульная структура:
- `news-bot-modular.py` - новый основной файл с модульной архитектурой
- `news-bot.py` - оригинальный монолитный файл (deprecated)
- `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.py` - конфигурация с API ключами (не включен в git)
### Структура бота:
- **Получение новостей**: парсинг с сайта `linux-gaming.ru`
- **Обработка контента**: конвертация HTML в markdown, удаление дубликатов ссылок
- **Публикация**: отправка в Telegram, VK и опционально Discord
- **Планировщик**: автоматическое выполнение каждые 30 минут
## Команды разработки
### Запуск нового модульного бота:
```bash
python3 news-bot-modular.py
```
### Запуск старого монолитного бота:
```bash
python3 news-bot.py
```
### Запуск утилиты удаления сообщений:
```bash
python3 del-tests.py
```
### Проверка синтаксиса Python:
```bash
python3 -m py_compile news-bot.py
python3 -m py_compile del-tests.py
```
## Зависимости
Проект использует следующие библиотеки:
- `telethon` - для работы с Telegram API
- `requests` - для HTTP запросов
- `schedule` - планировщик задач
- `colorlog` - цветное логирование
- `html2text` - конвертация HTML в текст
- `beautifulsoup4` - парсинг HTML
- `discord.py` - для работы с Discord API (опционально)
Установка основных зависимостей:
```bash
pip3 install telethon requests schedule colorlog html2text beautifulsoup4
```
Для включения Discord функциональности:
```bash
pip3 install discord.py
```
## Конфигурация
Настройки хранятся в `keys.py`:
- `api_key_site` - ключ для доступа к API сайта
- `api_id_tg`, `api_hash_tg` - данные Telegram API
- `api_key_vk`, `user_token_vk` - токены VK API
- `discord_enabled` - включить/отключить Discord (по умолчанию False)
- `discord_token` - токен Discord бота (если включен)
- `dicord_channel` - ID канала Discord (если включен)
- `cat_num` - номер категории новостей (8)
- `start_topic_id` - ID темы для начала публикации
## Основные функции
### Обработка контента:
- `html_to_text()` - конвертация HTML в markdown
- `remove_duplicate_links()` - удаление дубликатов ссылок
- `convert_links()` - обработка URL параметров
### Модульные классы:
- `ContentProcessor` - обработка и форматирование контента
- `TelegramNewsClient` - работа с Telegram API
- `VKClient` - работа с VK API
- `DiscordClient` - работа с Discord API (опционально)
- `SiteAPI` - работа с API сайта linux-gaming.ru
### Проверка статуса модулей:
```python
# Проверить, какие модули включены
bot.telegram_client.is_enabled() # True
bot.vk_client.is_enabled() # True
bot.discord_client.is_enabled() # True/False в зависимости от конфигурации
```
## Логирование
Используется цветное логирование с уровнями:
- DEBUG (cyan) - детальная отладочная информация
- INFO (green) - основная информация о работе
- WARNING (yellow) - предупреждения
- ERROR (red) - ошибки
- CRITICAL (red on white) - критические ошибки