Skip to content
qweendevPublic

About

Автопостинг из групп ВКонтакте в Telegram-каналы: фото, гифки, документы, опросы и репосты

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

vk2tg

ci python license

Переносит новые посты из групп ВКонтакте в Telegram-каналы: текст, фотографии, гифки, документы, ссылки, опросы и репосты с именем автора.

Пост из ВКонтакте появляется в Telegram-канале

Что умеет

  • Несколько групп и каналов в одном запуске, любая группа может идти в любой канал.
  • Фотографии уходят альбомом, больше десяти разбиваются на несколько альбомов.
  • Длинный текст идёт после фотографий отдельными сообщениями, деление по абзацам.
  • Упоминания и ссылки из разметки ВКонтакте становятся обычными ссылками.
  • Рекламные посты и посты для донов не переносятся.
  • При первом запуске старые посты не публикуются, после перезапуска опубликованное не повторяется.
  • Если Telegram отклонил пост, бот пропускает его и идёт дальше.

Видео приходит ссылкой на ВКонтакте, потому что API не отдаёт сами файлы.

Запуск

Понадобятся два токена.

Токен ВКонтакте: создайте приложение в кабинете разработчика на dev.vk.com и скопируйте сервисный ключ доступа из его настроек. Этого ключа хватает, чтобы читать открытые группы.

Токен Telegram: создайте бота через @BotFather и добавьте его администратором в канал с правом публиковать сообщения.

cp .env.example .env
cp routes.example.toml routes.toml
docker compose up -d

Токены впишите в .env, а группы и каналы в routes.toml.

Без Docker:

uv sync
uv run vk2tg

Группы и каналы

Каждая пара группа и канал описывается отдельным блоком в routes.toml:

[[route]]
vk = "habr"
telegram = "@habr_mirror"

[[route]]
vk = "https://vk.com/club123"
telegram = -1001234567890
reposts = false
source_link = false
поле по умолчанию что делает
vk короткое имя группы, club123 или ссылка на неё
telegram @имя канала или его числовой id
reposts true переносить ли репосты
source_link true добавлять ли ссылку на пост в ВКонтакте

Настройки

переменная по умолчанию что делает
VK2TG_VK_TOKEN сервисный ключ приложения ВКонтакте, обязательно
VK2TG_TELEGRAM_TOKEN токен бота, обязательно
VK2TG_INTERVAL 60 как часто проверять группы, в секундах
VK2TG_ROUTES_FILE routes.toml путь к файлу с группами и каналами
VK2TG_DATABASE_URL sqlite+aiosqlite:///data/vk2tg.db где хранить последние опубликованные посты

Разработка

uv sync
uv run pytest
uv run ruff check .
uv run mypy src tests

Лицензия

MIT, текст в файле LICENSE.

About

Автопостинг из групп ВКонтакте в Telegram-каналы: фото, гифки, документы, опросы и репосты

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages