Бот для автоматического репоста записей из ВКонтакте в Telegram с поддержкой вложений и обновления изменённых постов.
Дань уважения моему хорошему другу и его оригинальному репостботу, которого я, с позволения автора, переписал на гошку и доработал(или испоганил).
- Автоматический репост текста из ВК в Telegram
- Поддержка вложений (фотографии)
- Обновление изменённых постов ВК в Telegram
- Разбиение длинных сообщений на несколько частей
- Кэширование обработанных постов
- Поддержка как стандартной, так и Systemd установки
- Обработка "анонимных" комментариев
- Улучшение обработки вложений
Бот использует JSON-файл конфигурации. Путь к файлу можно задать через переменную окружения CONFIG_PATH
или использовать файл config.json
в текущей директории.
Пример config.json
:
{
"vk_token": "your_vk_token_here",
"tg_token": "your_telegram_token_here",
"chat_id": "-1001234567890",
"poll_interval": 10,
"target_user": "user_id_vk",
"cache_file": "path/to/cache.json"
}
Параметры конфигурации:
vk_token
- токен доступа к API ВКонтактеtg_token
- токен Telegram ботаchat_id
- ID чата Telegram для репоста (использовать отрицательные значения для групп)poll_interval
- интервал проверки новых постов (в секундах, по умолчанию 10)target_user
- идентификатор пользователя/группы ВКонтактеcache_file
- путь к файлу кэша (по умолчанию "cache.json")
go run main.go
go build -o repostbot main.go
- Создайте файл конфигурации в домашней папке:
mkdir -p ~/repostbot
cp config.json ~/repostbot/
- Поместите исполняемый файл в /usr/local/bin:
sudo cp repostbot /usr/local/bin/
sudo chmod +x /usr/local/bin/repostbot
- Настройте systemd сервис:
sudo cp deploy/repostbot.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable repostbot.service
sudo systemctl start repostbot.service
Проект настроен для автоматического развёртывания через GitHub Actions. Конфигурация находится в deploy.yml.
Для автоматического деплоя требуется настроить следующие секреты в GitHub:
TG_TOKEN
- токен Telegram ботаVK_TOKEN
- токен доступа к API ВКонтактеTARGET_USER
- идентификатор пользователя/группы ВКонтактеCHAT_ID
- ID чата Telegram для репостаPOLL_INTERVAL
- интервал проверки новых постовUSER
- имя пользователя на сервере для установки
- Стандартные библиотеки Go для работы с HTTP и JSON
- Внешних зависимостей нет
Многое нужно фиксить...