Как создать чат-бота для вконтакте на node.js

бот для группы вконтакте на node.js
 
Как создать бота для группы вконтакте на node.js? Для этого за основу нужно взять одну из библиотек node-vk-bot-api или node-vk-bot установив с помощью пакетного менеджера npm install --save. Также, для доступа к апи вк берем модуль vk api - vk-io или node-vkapi.
 
Прежде чем что-то начинать нужно в настройках группы включить поддержку бот апи. Для этого разрешить сообщения к группе и включить бот апи. Вам придется подтверить смс-кодом создание токена. Токен необходимо сохранить в надежном месте, так чтобы можно было его скопировать в наш исходный код. Зайти повторно в настройки группы вк и скопировать токен не получится. Придется создавать новый.
 
К слову о токене. Для доступа к апи не нужно дополнительной авторизации по OAUTH со скоупом доступа для получения токена для запросов. Полученный токен в настройках группы - это уже готовый токен для запросов к апи. Важный момент - в апи только часть методов работают с токеном для бота для сообщений группы. Например, нельзя получить информацию о друзьях пользователя, но можно о самом пользователе вступившем в группу. Я столкнулся с проблемой при создании токена, когда выбрал только часть скоупа доступов и не работало. Долго крутил-вертел - в итоге выбрал все разрешения и заработало.
 
Библиотеки предлагают 2 метода коммуникаций с сервером вконтакте: лонг поллинг и веб хук. Лонг поллинг предполагает раз в заданный интервал запрос на сервер для получения актуальных сообщений группе или сервисных команд от сервера. Веб хук - регистрируется днс-адрес веб-сервиса в котором работает чат-бот и сервер сам по нужде отправляет на этот адрес запросы. Я выбрал лонг поллинг из-за отсутствия публичного DNS-имени для приложения на node.js. Один момент подскажу, что если у вас группа не мдк с миллионами подписчиков - то стоит многократно увеличить время интервалов лонг поллинга. Иначе у вас простой процесс чат-бота будет пригружать процессор значительно.
 
Для примера, я создал простого бота, который информирует администратора группы о вступлении нового человека или о выходе из группы, а также присылвает список людей у кого сегодня день рождение. Также, бот приветствует о вступлении в группу и прощается при выходе. Функцию поздравить пользователя с днем рождения специально не делал, чтобы не раздражать пользователей шаблонным поздравлением, да и не каждого пользователя нужно поздравлять, пусть это делает человек-администратор.
 
Стоит отметить, что бот не может инициировать сообщение пользователю. Для этого сначала пользователь должен начать чат с группой. Только после этого сообщения могут быть отправлены пользователю. Вот такое ограничение.
 
Не буду писать исходный код группы, так как это просто и в каждом случае по разному. Скажу лишь, что я использовал домолнительные вещи, такие как setTimeout и setInterval для отправки сообщений только в дневное время дня.
 
Чем хорош node.js для создания бота для вконтакте? Node.js позволяет на лету изменить исходный код, работает стабильно из консольного процесса и просто зупускается и останавливается.
 

чат бот, бот, вк апи, вк бот апи, бот на node.js, node.js, node.js vk bot api