Это python скрипт, который использует библиотеки vk_api и pyTelegramBotAPI для простой пересылки сообщений из VK в TG
Warning
Скрипт полностью синхронный, поэтому может работать с задержками при большом количестве сообщений
- Создайте fork этого репозитория
- Создайте новую пару приватного и публичного ssh ключа с помощью команды ssh-keygen
- В настройках вашего fork репозитория в разделе Security > Secrets and variables > Actions
добавьте следующие Repository secrets:
- DEPLOY_KEY - приватный ssh ключ
- SERVER_IP - IP адрес вашего сервера
- USERNAME - имя пользователя на вашем сервере
- Добавьте публичный ssh ключ на ваш сервер. Например, с помощью команды ssh-copy-id
- Теперь выполняем на сервере следующую длинную команду
mkdir ~/DuplicateMessageBot && cd ~/DuplicateMessageBot && touch .env && chmod 600 .env, чтобы создать файл .env с переменными окружения для нашего сервиса - Добавьте в файл .env с помощью nano или vim следующие переменные:
- TG_DM_BOT_TOKEN - токен от бота Телеграм. Получить его можно в официальном боте @BotFather
- VK_DM_BOT_TOKEN - access_token от VK API. Тут сложнее из-за смены политики ВК в отношение юзер ботов в 2024. Но выход всё ещё есть. Через сайт ВК и DevTools браузера можно узнать client_id официального приложения ВКонтакте API, тут подробнее. Для получения бессрочного (offline) access_token с доступом к messages надо перейти по ссылке: https://oauth.vk.com/authorize?client_id=6287487&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=messages,offline&response_type=token После перехода по ссылке будет редирект на https://oauth.vk.com/blank.html#access_token=ТОКЕН&expires_in=0&user_id=АЙДИ&email=ПОЧТА, где вместо слова ТОКЕН будет ваш access_token
- VK_ADMIN_IDS - айди аккаунтов ВК с разделителем двоеточия - ":". Чтобы узнать свой или чужой айди по короткому имени можно воспользоваться песочницей VK API - https://dev.vk.com/ru/method/users.get#Пример%20запроса
- VK_CHAT_IDS - айди чатов ВК с разделителем двоеточия - ":". Айди чата виден в адресной строке в браузерной версии ВК
- TG_CHAT_IDS- айди чатов ТГ с разделителем двоеточия - ":". Можно воспользоваться сторонним ботом @UserinfoBot, чтобы узнать айди чата
- Создайте сервисный файл по следующему пути /etc/systemd/system/duplicate-message-bot.service. Пример сервисного файла можно найти в репозитории, в этом примере достаточно заменить (user) на имя пользователя на вашем сервере
- Зайдите в раздел Actions вашего fork репозитория
- Выберите workflow "Deploy DuplicateMessageBot"
- Нажмите кнопку Run workflow, чтобы начать развёртывание бота
- Если вы всё сделали правильно, то через +-20 секунд бот уже начнёт работать
- Бот хранит user_id отслеживаемых пользователей в файле vk_users.json
- Чтобы посмотреть список пользователей есть команда /list
- Чтобы добавить или удалить пользователя из списка, используйте команды:
- /add <user>, где <user> - это числовой user_id или короткое имя, также поддерживаются теги - @user_id или @username
- /del <user>
- Для остановки/запуска сервиса с ботом в папке репозитория есть скрипты stop.sh/start.sh
Warning
Боту в чате Telegram нужно обязательно выдать права администратора