Реклама ООО Таймвэб
Реклама ООО Таймвэб
Реклама ООО Таймвэб

Как настроить автопостинг записей из группы ВК в Telegram-канал

6 комментариев
Как получить записи из группы ВК и отправить их в Telegram-канал

Будем использовать фреймворк, который представляет собой парсер записей в группе ВК с последующей их отправкой в Телеграм-канал. Фреймворк доступен по ссылке – https://github.com/AidSoul/vk-to-telegram.

Работоспособность протестирована на VDS от Timeweb.

Что нам нужно

Для того чтобы приступить к работе, нам понадобятся:

  1. сервер на базе Linux, я рекомендую «Debian 10»;
  2. PHP >=8;
  3. база данных MySQL, для лучшей стабильности рекомендую установить MySQL на отдельном сервере;
  4. локальный сервер, например XAMPP;
  5. Composer на вашем локальном компьютере.

В этой статье не будет описан процесс развертывания, настройки сервера Linux под язык программирования PHP, не будет изложен процесс установки системы управления базами данных MySQL. Вся информация по данным вопросам уже имеется на этом сайте. Мы же сразу перейдем к делу.

Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться

Создаем приложение для работы с VK API

Для того чтобы создать ключ пользователя, переходим по ссылке. Нажимаем на кнопку «Создать». Пишем название приложения.

Мое приложение с VK API

В списке «Платформа» необходимо нажать на «Standalone-приложение», далее «Подключить приложение».

Приложение с VK API

Переходим в настройки созданного вами приложения.

Парсер VK API

Копируем сервисный ключ доступа. Для вашего удобства можно сохранить ключ в блокноте или в другом текстовом редакторе.

VK API

«Состояние»: приложение включено и видно всем.

Настройка VK API

Создание нового бота в Telegram

Находим бота «BotFather». Обращаю внимание на то, что у бота должна быть галочка справа от имени, смотрите рисунок ниже.

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.

Теперь скрипт будет проверять каждую минуту, есть ли новые записи в группе ВК. Перезагружаем сервер.

На этом все! 

Hello World! Гайды и обзоры для девелоперов разных мастей.

Комментарии

Евгений Кондаков +459
20 дек в 2021
Спасибо за статью.
Модератор
Пришел кот и стер лапкой этот комментарий
Модератор
Пришел кот и стер лапкой этот комментарий
Константин Троянович 0
30 марта в 2022
Start script at "Openserver"
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 - такая вот ошибка.
Свернуть ответы
Комментарий автора
AidSoul +41
05 апр в 2022
Решение проблемы описано здесь: https://github.com/aidsoul/vk-to-telegram/issues/2
Максим Горьков 0
14 июня в 2023
Дико извиняюсь за глупый вопрос. А для парсинга с нескольких групп, как то можно использовать вашу схему?
Rodrigo Ogo 0
31 июля в 2023
Все сделал вроде, результат 0. А как выглядит финал в картинках??
Rodrigo Ogo 0
31 июля в 2023
Это автопостиг из своих групп в вк или же вообще из любой???
Модератор
Пришел кот и стер лапкой этот комментарий
С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
С помощью соцсетей
У меня уже есть аккаунт Войти
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email вашего аккаунта
Ваш баланс 10 ТК
1 ТК = 1 ₽
О том, как заработать и потратить Таймкарму, читайте в этой статье
Чтобы потратить Таймкарму, зарегистрируйтесь на нашем сайте