readme
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
# Telegram → VK: репост из канала в сообщество
|
||||
|
||||
Сервис на **ASP.NET Core** слушает посты в **Telegram-канале** (long polling), публикует их на **стене сообщества ВКонтакте** и при редактировании поста в Telegram обновляет соответствующий пост ВК. Соответствие «сообщение Telegram ↔ пост ВК» хранится в **SQLite**.
|
||||
|
||||
Поддерживаются:
|
||||
|
||||
- текст и подписи к фото;
|
||||
- несколько фото в одном посте ВК (альбомы из Telegram собираются в один пост);
|
||||
- правки поста в Telegram → `wall.edit` в ВК.
|
||||
|
||||
## Требования
|
||||
|
||||
- [.NET 10 SDK](https://dotnet.microsoft.com/download) — для локального запуска без Docker;
|
||||
- Docker и Compose с поддержкой **Compose file 3.8+** (для `healthcheck.start_period`) — для контейнера.
|
||||
|
||||
## Быстрый старт (Docker)
|
||||
|
||||
1. Склонируйте репозиторий и перейдите в каталог проекта.
|
||||
|
||||
2. Создайте файл `.env` рядом с `docker-compose.yml`. Переменные конфигурации должны соответствовать [соглашению ASP.NET Core](https://learn.microsoft.com/aspnet/core/fundamentals/configuration/#environment-variables): секция и свойство разделяются **двойным подчёркиванием** `__`.
|
||||
|
||||
Пример:
|
||||
|
||||
```env
|
||||
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. Запуск:
|
||||
|
||||
```bash
|
||||
docker compose build
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
База по умолчанию: том `./data` → `/data/mapping.sqlite` в контейнере (см. `DB__Path` в `docker-compose.yml`).
|
||||
|
||||
## Локальный запуск (без Docker)
|
||||
|
||||
```bash
|
||||
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 |
|
||||
Reference in New Issue
Block a user