Будем использовать фреймворк, который представляет собой парсер записей в группе ВК с последующей их отправкой в Телеграм-канал. Фреймворк доступен по ссылке – https://github.com/AidSoul/vk-to-telegram.
Работоспособность протестирована на VDS от Timeweb.
Что нам нужно
Для того чтобы приступить к работе, нам понадобятся:
- сервер на базе Linux, я рекомендую «Debian 10»;
- PHP >=8;
- база данных MySQL, для лучшей стабильности рекомендую установить MySQL на отдельном сервере;
- локальный сервер, например XAMPP;
- Composer на вашем локальном компьютере.
В этой статье не будет описан процесс развертывания, настройки сервера Linux под язык программирования PHP, не будет изложен процесс установки системы управления базами данных MySQL. Вся информация по данным вопросам уже имеется на этом сайте. Мы же сразу перейдем к делу.
Создаем приложение для работы с VK API
Для того чтобы создать ключ пользователя, переходим по ссылке. Нажимаем на кнопку «Создать». Пишем название приложения.
В списке «Платформа» необходимо нажать на «Standalone-приложение», далее «Подключить приложение».
Переходим в настройки созданного вами приложения.
Копируем сервисный ключ доступа. Для вашего удобства можно сохранить ключ в блокноте или в другом текстовом редакторе.
«Состояние»: приложение включено и видно всем.
Создание нового бота в Telegram
Находим бота «BotFather». Обращаю внимание на то, что у бота должна быть галочка справа от имени, смотрите рисунок ниже.
Пишем команду:
/newbot имя бота
Имя бота должно содержать слово bot, например vkbot.
После этого бот пришлет нам токен доступа, который необходимо сохранить.
Добавление бота в Телеграм-канал
Чтобы бот стал постить за нас сообщения, нам нужно его добавить в качестве администратора в нужный канал, наделив его определенными правами.
Переходим в наш канал, заходим в настройки канала, жмем на «Добавить пользователей». В строке поиска находим ранее созданного бота (по имени). После этого появится окно с информацией: «Бота можно добавить только как администратора». Нажимаем на «Назначить».
В категории «Возможности администратора» оставляем включенным только один ползунок – «Публикация сообщений». Нажимаем кнопку «Сохранить».
Получение идентификатора Телеграм-канала
Переходим в веб-версию Telegram. Входим в вашу учетную запись и находим канал, который нужно подключить к боту.
В адресной строке копируем последнюю часть адреса, а именно – https://web.telegram.org/z/#-1234567890. В начало строки добавляем 100. Вот, что должно получиться (пример): -1001234567890
Сохраняем. Это будет индикатор нашего канала.
Подключение файла базы данных
Создаем базу данных с произвольным названием.
Копируем SQL-скрипт создания таблиц отсюда: https://github.com/AidSoul/vk-to-telegram/blob/main/db.sql. Выполняем его.
Устанавливаем библиотеку для работы с ботом
Для удобства создаем папку «bot».
В терминале пишем команду:
composer require aidsoul/botpvt
После завершения скачивания в ранее созданной папке создадим файл index.php. Копируем и вставляем в созданный файл приведенный ниже код:
<?php require_once __DIR__.'/vendor/autoload.php'; $config = [ 'Vk' =>[ 'token' => '', 'idGroup' => '', 'count' => 0 ], 'Telegram' =>[ 'botApiKey' => '', 'botName' => '', 'chatId' => 0 ], 'Db' =>[ 'host' => '', 'dbName' => '', 'user' => '', 'pass' => '' ], ]; Botpvt\Start::vk($config);
Заполняем пустые поля необходимыми данными:
-
token – токен вашего приложения ВК.
-
idGroup – имя или индикатор группы, с которой парсим (забираем) данные.
-
сount – количество записей группы для парсинга, не больше 100 (ограничение VK API).
-
botApiKey – токен доступа бота Телеграм.
-
botName – имя бота.
-
chatId – индикатор Телеграм-канала.
-
host – сервер базы данных MySQL. Пример: mysql:host=localhost
-
dbName – название базы данных MySQL.
-
user – имя пользователя базы данных, его логин.
-
pass – пароль пользователя базы данных.
Проверяем, есть ли ошибки, выполнив PHP-скрипт.
В браузере переходим по пути localhost или по имени домена, если создан виртуальный хост. В случае успеха в вашем Телеграм-канале будут добавлены записи, которые есть в группе ВК.
С невероятным восторгом от того, что у нас все получилось, отправляем нашу папку с проектом на сервер.
Настройка crontab
Чтобы нам постоянно не обновлять страницу с php-скриптом, для автопостинга записей необходимо добавить задачу в crontab (Apache server).
Заходим на наш сервер под root. Пишем команду:
crontab-e
Добавляем задачу, написав * * * * * php /patch. Вместо patch пишем путь до вашего index-файла с PHP-скриптом, например: * * * * * php /var/www/index.php.
Теперь скрипт будет проверять каждую минуту, есть ли новые записи в группе ВК. Перезагружаем сервер.
На этом все!
Комментарии
error:
Fatal error: Uncaught Error: Class "Botpvt\Config\Config" not found in W:\domains\bot1.ru\vendor\aidsoul\botpvt\src\Start.php:19 Stack trace: #0 W:\domains\bot1.ru\index.php(22): Botpvt\Start::vk() #1 {main} thrown in W:\domains\bot1.ru\vendor\aidsoul\botpvt\src\Start.php on line 19
В общем все сделал по инструкции -запустил на open Server - PHP версии 8.1 - такая вот ошибка.