mirror of
https://github.com/EDeev/vkrepost_to_tg.git
synced 2026-06-18 22:11:01 +03:00
155 lines
7.1 KiB
Markdown
155 lines
7.1 KiB
Markdown
# Repost from Vk to Tg 🔄
|
||
|
||
[](https://python.org)
|
||
[](https://aiogram.dev)
|
||
[](https://dev.vk.com)
|
||
[](LICENSE)
|
||
|
||
**Автоматизированная система репостинга контента из VKontakte в Telegram**
|
||
|
||
Telegram-бот для автоматического мониторинга и репостинга публикаций из социальной сети ВКонтакте с поддержкой персонализированных подписок и расширенным функционалом взаимодействия.
|
||
|
||
## 🎯 Основная функциональность
|
||
|
||
### Ключевые возможности
|
||
- **Автоматический мониторинг** публикаций из VK страниц и сообществ
|
||
- **Персонализированные подписки** до 10 источников на пользователя
|
||
- **Интеграция с VK API** через пользовательские токены
|
||
- **Интерактивное взаимодействие** с лайками постов через Telegram
|
||
- **Многоформатная поддержка** медиа-контента (фото, видео, аудио, документы)
|
||
|
||
### Архитектурные особенности
|
||
- Асинхронная обработка запросов с использованием `asyncio`
|
||
- Двухуровневая система баз данных (пользователи/группы)
|
||
- Токен-ротация для обхода ограничений API
|
||
- Централизованное управление подписками
|
||
|
||
## 🚀 Быстрый старт
|
||
|
||
### Предварительные требования
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### Конфигурация
|
||
1. Создайте Telegram-бота через [@BotFather](https://t.me/botfather)
|
||
2. Получите служебный токен VK API
|
||
3. Настройте файл `config.py`:
|
||
|
||
```python
|
||
# TOKENS
|
||
botToken = 'YOUR_TELEGRAM_BOT_TOKEN'
|
||
serviceToken = "YOUR_VK_SERVICE_TOKEN"
|
||
|
||
# URL
|
||
loginUrl = "https://oauth.vk.com/authorize?client_id=YOUR_APP_ID&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=wall,likes&response_type=token&v=5.131"
|
||
```
|
||
|
||
### Запуск системы
|
||
```bash
|
||
python bot.py
|
||
```
|
||
|
||
## 📋 Структура команд
|
||
|
||
| Команда | Описание | Синтаксис |
|
||
|---------|----------|-----------|
|
||
| `/start` | Инициализация пользователя | `/start` |
|
||
| `/add` | Добавление подписки | `/add domain_name` |
|
||
| `/del` | Удаление подписки | `/del domain_name` |
|
||
| `/list` | Просмотр активных подписок | `/list` |
|
||
| `/like` | Лайк поста (ответ на сообщение) | `/like` |
|
||
| `/notif` | Переключение уведомлений | `/notif` |
|
||
| `/last_post` | Получение последней публикации | `/last_post domain_name` |
|
||
|
||
## 🏗️ Архитектура системы
|
||
|
||
### Компоненты системы
|
||
```
|
||
├── bot.py # Основной модуль бота
|
||
├── vk_scripts.py # VK API интеграция
|
||
├── sql.py # Управление базами данных
|
||
├── scripts.py # Вспомогательные функции
|
||
├── config.py # Конфигурация проекта
|
||
└── db/
|
||
├── users.db # База пользователей
|
||
└── base.db # Основная база данных
|
||
```
|
||
|
||
### Технологический стек
|
||
- **Backend**: Python 3.8+
|
||
- **Telegram Framework**: Aiogram 2.x
|
||
- **VK Integration**: vk_api
|
||
- **Database**: SQLite
|
||
- **Async Processing**: asyncio
|
||
- **Media Processing**: Built-in handlers
|
||
|
||
### Схема базы данных
|
||
|
||
#### Таблица `user` (users.db)
|
||
```sql
|
||
user_id INTEGER PRIMARY KEY -- Telegram ID пользователя
|
||
id INTEGER AUTOINCREMENT -- Внутренний ID
|
||
```
|
||
|
||
#### Таблица `user` (base.db)
|
||
```sql
|
||
user_id INTEGER -- Ссылка на users.db
|
||
status BOOLEAN -- Статус уведомлений
|
||
groups TEXT -- Список подписок (разделитель ;)
|
||
token TEXT -- VK access token
|
||
count INTEGER -- Количество подписок
|
||
```
|
||
|
||
## ⚡ Алгоритм работы
|
||
|
||
### Цикл мониторинга
|
||
1. **Сканирование источников** (интервал: 60 секунд)
|
||
2. **Проверка новых публикаций** через VK API
|
||
3. **Форматирование контента** под Telegram
|
||
4. **Массовая рассылка** подписчикам
|
||
5. **Обновление метаданных** в базе данных
|
||
|
||
### Обработка медиа-контента
|
||
- **Фотографии**: Группировка в медиа-альбомы
|
||
- **Видео**: Информационные заглушки с ссылками
|
||
- **Аудио**: Отдельные медиа-сообщения
|
||
- **Документы**: Прямые ссылки с метаданными
|
||
- **Опросы**: Текстовое представление с результатами
|
||
|
||
## 🔧 Расширенные возможности
|
||
|
||
### Система токенов
|
||
- **Служебный токен**: Базовый доступ к публичному контенту
|
||
- **Пользовательские токены**: Доступ к закрытым страницам и функции лайков
|
||
- **Автоматическая ротация**: Распределение нагрузки между токенами
|
||
|
||
### Обработка ошибок
|
||
- Graceful handling VK API лимитов
|
||
- Автоматический фallback на служебный токен
|
||
- Логирование критических ошибок
|
||
|
||
## 📊 Метрики производительности
|
||
|
||
- **Пропускная способность**: До 1000 пользователей
|
||
- **Частота обновлений**: 60 секунд
|
||
- **Лимит подписок**: 10 на пользователя
|
||
- **Поддерживаемые форматы**: 6 типов медиа
|
||
|
||
## 📄 Лицензия
|
||
|
||
Проект распространяется под лицензией MIT.
|
||
|
||
## 👨💻 Автор
|
||
|
||
**Деев Егор Викторович**
|
||
- GitHub: [@EDeev](https://github.com/EDeev)
|
||
- Email: egor@deev.space
|
||
- Telegram: [@Egor_Deev](https://t.me/Egor_Deev)
|
||
|
||
---
|
||
|
||
<div align="center">
|
||
<sub>Проект носит некоммерческий характер и предназначен для образовательных целей и личного использования.</sub>
|
||
<p><sub>Создано с ❤️ от вашего дорогого - deev.space ©</sub></p>
|
||
</div>
|