2026-04-03 21:03:09 +03:00
upd
2026-04-03 21:03:09 +03:00
2026-04-02 20:22:29 +03:00
++
2026-04-02 20:52:22 +03:00
2026-04-02 17:56:29 +00:00
2026-04-02 19:05:33 +00:00
2026-04-02 21:58:30 +03:00
2026-04-02 22:05:16 +03:00

Telegram → VK: репост из канала в сообщество

Сервис на ASP.NET Core слушает посты в Telegram-канале (long polling), публикует их на стене сообщества ВКонтакте и при редактировании поста в Telegram обновляет соответствующий пост ВК. Соответствие «сообщение Telegram ↔ пост ВК» хранится в SQLite.

Поддерживаются:

  • текст и подписи к фото;
  • несколько фото в одном посте ВК (альбомы из Telegram собираются в один пост);
  • правки поста в Telegram → wall.edit в ВК.

Требования

  • .NET 10 SDK — для локального запуска без Docker;
  • Docker и Compose с поддержкой Compose file 3.8+ (для healthcheck.start_period) — для контейнера.

Быстрый старт (Docker)

  1. Склонируйте репозиторий и перейдите в каталог проекта.

  2. Создайте файл .env рядом с docker-compose.yml. Переменные конфигурации должны соответствовать соглашению ASP.NET Core: секция и свойство разделяются двойным подчёркиванием __.

    Пример:

    TELEGRAM__BotToken=123456:ABC...
    TELEGRAM__ChannelId=-1001234567890
    VK__AccessToken=vk1.a...
    VK__GroupId=123456789
    VK__ApiVersion=5.199
    
    • TELEGRAM__ChannelId — ID канала (для каналов часто вида -100…).
    • VK__GroupId — числовой ID сообщества без минуса (в API владелец стены задаётся как отрицательный ID группы).
  3. Добавьте бота в канал как администратора (чтобы приходили обновления о постах).

  4. Токен ВК должен позволять публикацию от имени сообщества (wall, загрузка фото и т.д. — по вашей настройке приложения).

  5. Запуск:

    docker compose build
    docker compose up -d
    

    База по умолчанию: том ./data → /data/mapping.sqlite в контейнере (см. DB__Path в docker-compose.yml).

Локальный запуск (без Docker)

cd src/Telegram2VkBot
dotnet run

Перед запуском задайте те же переменные окружения или отредактируйте appsettings.json (секции TELEGRAM, VK, DB). Путь к SQLite по умолчанию: data/mapping.sqlite относительно рабочей директории.

HTTP-сервер слушает адрес из ASPNETCORE_URLS (в Docker: http://+:8080).

Проверка работоспособности

  • GET /health — общий health; в теге telegram проверяется доступность Telegram Bot API.
  • GET / — перенаправление на /health.

Структура репозитория

Путь Назначение
src/Telegram2VkBot/ приложение: ForwardWorker (polling), VkApiClient, MappingRepository, health check
Dockerfile multi-stage сборка .NET 10, runtime + curl для healthcheck
docker-compose.yml сервис, порт 8080, том data, healthcheck
S
Description
No description provided
Readme
68 KiB
Languages
C# 98.7%
Dockerfile 1.3%