1
0
Fork 0
mirror of https://github.com/EDeev/vkrepost_to_tg.git synced 2026-10-07 20:49:50 +03:00
vkrepost_to_tg/README.md
Egor Deev b7a1f6ea22 Зависимости, тесты, CI, Docker, лицензия MIT и README на русском и английском
requirements.txt раньше не устанавливался (sqlite3 и бэкпорт asyncio с PyPI).
2026-10-05 19:52:45 +00:00

4.9 KiB
Raw Permalink Blame History

Portal in VK

Русский · English

CI Docker License

Telegram-бот, который пересылает новые посты со страниц и сообществ ВКонтакте в Telegram: подписываешься командой /add <короткое имя>, и каждый новый пост приходит сообщением — с фото, обложками видео, документами, аудио, опросами и репостами.

Статус: личный проект, завершён · бот @vkportalbot

Стек: Python 3.12 · aiogram 3 · vk_api · SQLite · Docker

Возможности

  • До 10 подписок на пользователя: личные страницы, группы и паблики
  • Пост переводится в формат Telegram:
    • фото, обложки видео и картинки-документы — альбомом;
    • аудио — отдельным сообщением;
    • опросы, ссылки и документы — в тексте;
    • упоминания [id1|Имя] — ссылками;
    • у репостов — оба автора и комментарий.
  • Ограничения Telegram учтены: одиночное фото, альбомы до 10 элементов, длинный текст отдельными сообщениями
  • /last_post — последний пост любой страницы, /update — прислать пост заново с актуальными данными
  • Свой токен VK (необязательно) даёт посты закрытых страниц, на которые вы подписаны, и лайки из Telegram (/like ответом на пост)

Important

Если вы присылаете боту свой токен VK, он хранится на сервере бота. Удалить его можно командой /logout, полностью отозвать доступ — в настройках VK, раздел «Приложения и сайты».

Запуск

git clone https://github.com/EDeev/vkrepost_to_tg.git && cd vkrepost_to_tg
cp .env.example .env      # BOT_TOKEN и сервисный ключ приложения VK
docker compose up -d

Готовый образ: docker pull ghcr.io/edeev/vkrepost_to_tg или docker pull dcr.deev.su/edeev/vkrepost_to_tg. Базы SQLite создаются при первом запуске.

Без Docker: Python 3.12, pip install -r requirements.txt, затем cd code && BOT_TOKEN=… VK_SERVICE_TOKEN=… python bot.py.

Как устроено

code/bot.py          запуск и фоновый опрос подписок раз в минуту
code/handlers.py     команды: подписки, последний пост, лайки, токен VK
code/vk_scripts.py   запросы к VK API и разбор поста
code/scripts.py      пост → текст в HTML и медиа Telegram, отправка с учётом ограничений
code/sql.py          пользователи, подписки и последний пост каждой страницы (SQLite)

Для закрытой страницы бот берёт токен одного из её подписчиков, для открытых — сервисный ключ. Запросы к VK идут в отдельном потоке, чтобы бот не замирал. Текст из ВК экранируется.

Разработка

pip install -r requirements-dev.txt
ruff check --select E9,F code tests && pytest

Тесты проверяют разбор постов (экранирование, упоминания, ссылки, репосты, лимит альбома) и отправку (одиночное фото, длинный текст, аудио). Docker-образ собирается по тегу v* и публикуется в GitHub Packages и dcr.deev.su.

Лицензия

MIT — см. LICENSE.

Автор

Деев Егор Викторович — GitHub · Telegram · egor@deev.space


⭐ Если проект оказался полезным, поставьте звёздочку на GitHub!

Сделано с ❤️ — deev.space