Как создать чат-бота ВКонтакте с расписанием уроков

Для более быстрого просмотра расписания лекций я использую простого чат-бота ВК, которым, помимо меня, пользуется вся учебная группа. Зачем каждый раз заходить на сайт университета, когда можно проверить расписание в беседе группы, просто написав в сообщении нужный день?

Когда мы разобрались с тем, зачем нам нужен такой чат-бот, давайте приступим к его созданию.

Настройка сообщества ВКонтакте для чат-бота

Для начала нам нужно создать сообщество. Для этого на сайте ВК заходим во вкладку «Сообщества», далее нажимаем кнопку «Создать сообщество».

Выбираем любую тематику и вводим название.

Теперь нам нужно настроить сообщество. Заходим во вкладку «Управление» на странице группы.

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

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

После этого заходим во вкладку «Настройки», далее во вкладку «Работа с API».

Переходим во вкладку «Long Poll API», включаем Long Poll API, выбираем последнюю версию API и переходим в «Типы событий».

Тут мы выбираем все типы событий, которые связаны с сообщениями.

Во вкладке «Callback API» также выбираем последнюю версию API. В типах событий тоже выбираем все, что связано с сообщениями.

Теперь заходим во вкладку «Ключи доступа», нажимаем «Создать ключ», ставим все галочки и нажимаем «Создать». Копируем ключ и сохраняем его в текстовом файле, так как он понадобится нам в следующих шагах.

Настройка группы завершена!

Пишем скрипт чат-бота ВК

Для написания скрипта можно использовать множество языков программирования, но я покажу все на примере node.js. 

Создаем файл index.js на компьютере и открываем его редактором кода или IDE (я использую VS Code). 

Теперь нам нужно импортировать библиотеку, которую мы установим на сервер позже, и вставить токен (ключ доступа), который мы получили в прошлых шагах:

 const { VK, Keyboard } = require('vk-io');  const vk = new VK({      token: "сюда вставляем токен"  });  const {      api  } = vk; 

Чтобы чат-бот отправлял раcписание, ему нужно его знать. Давайте создадим объект с днями и занятиями:

 days = {  "понедельник": "1)Информатика/Англ.яз.n2)Родная литератураn3)Историяn4)Литератураn5)Русск.яз.n6)Информатика и ИКТn7)Англ.яз./Нет урока",  "вторник": "1)Информатика и ИКТn2)Литератураn3)Практ. по матем.n4)Алгебра и нач.ан.n5)Геометрияn6)Труд/Русск.яз.n7)Физкультура",  "среда": "1)Физкультураn2)Химияn3)Географияn4)Обществознаниеn5)Обществознаниеn6)Англ.яз.n7)Физика",  "четверг": "1)Англ.яз./Информатикаn2)Алгебра и нач.ан.n3)Историяn4)Литератураn5)Физкультураn6)Биологияn7)Нет урока/Англ.яз.",  "пятница": "1)Общество и чел.n2)Физикаn3)Экономикаn4)Астрономияn5)ОБЖn6)Геометрия"  }

Заполните этот объект вашими данными по вышеуказанному примеру.

Теперь нам нужно, чтобы скрипт получал все сообщения, которые отправляются боту:

 vk.updates.start();  vk.updates.on('message', (context, next) => {  //Далее весь код будем писать тут (внутри скобок)  } 

Проверяем, содержит ли сообщение текст и отправляется ли от имени пользователя:

 if (context.text == null || context.isGroup == true || context.text == 'undefined') return 

Теперь напишем условие на то, что сообщение содержит название дня недели. Также не забываем отправить сообщение с помощью «context.send» вместе с расписанием. Кроме того, добавляем инлайн-кнопку для просмотра расписания на всю неделю, условие которой мы напишем в следующем шаге:

 if (Object.keys(days).indexOf(context.text.toLowerCase()) >= 0) {        context.send({          message: days[context.text],          keyboard: Keyboard.builder()              .textButton({                  label: 'Вся неделя',                  payload: {                      command: 'Вся неделя'                  }              })              .inline()      })      } 

Теперь можно написать условие для просмотра расписания на всю неделю:

  if (context.text.toLowerCase().includes('вся неделя')){  context.send(`Расписание на всю неделю:n nПонедельник:n${days["понедельник"]}n nВторник:n${days["вторник"]}n nСреда:n${days["среда"]}n nЧетверг:n${days["четверг"]}n nПятница:n${days["пятница"]}`)  }

Сохраняем файл и приступаем к его установке на сервер.

Установка и запуск чат-бота

Если у вас еще нет VDS, но вы хотите его приобрести для размещения подобных чат-ботов, я могу порекомендовать вам тариф «Danny» от Timeweb. Для покупки переходим по ссылке и нажимаем на кнопку «Заказать» под нужной конфигурацией.

Заполняем контактные данные, затем выбираем, на какой период мы хотим арендовать сервер (чем больше срок, тем меньше цена). Также я рекомендую вам использовать Ubuntu 20.04, так как эта система лучше всего подходит для такого рода задач.

После оплаты мы получаем данные для подключения к серверу. Подключиться можно через разные программы, но я рекомендую использовать Termius. Покажу на ее примере, как подключиться к серверу и скопировать на него наш скрипт.

Скачиваем Termius, устанавливаем программу, далее нажимаем кнопку «+ NEW HOST».

В поле «Adress» вставляем IP сервера, который мы получили в письме после оплаты тарифа. Не забываем заполнить «Username» и «Password».

Сохраняем данные и нажимаем на созданное подключение.

Мы попали в консоль. Теперь нам нужно установить node.js и npm на наш сервер, для этого поочередно пишем в консоль:

 sudo apt update  sudo apt install nodejs

Создадим папку, в которую поместим наш скрипт и зайдем в нее:

 mkdir rasp_bot   cd rasp_bot

Теперь установим библиотеку для работы с VK API:

 npm i vk-io

Переходим во вкладку SFTP в Termius и нажимаем «SELECT HOST».

Выбираем наше подключение и попадаем в папку root на сервере, в которой мы уже создали папку для нашего скрипта. Заходим в нее и путем перетаскивания (Drag’n’Drop) файла перекидываем скрипт с нашего ПК на сервер.

 

Возвращаемся в консоль и пишем:

 node index.js

Проверяем нашего бота в ВК.

Теперь нам нужно, чтобы скрипт работал даже после закрытия консоли. Для этого я рекомендую использовать PM2 (моя статья об этом софте). 

Возвращаемся в консоль сервера и пишем:

 npm install pm2 -g

Далее запускаем скрипт:

 pm2 start index.js

Готово! Теперь наш скрипт будет работать в режиме 24/7. Мы можем смотреть расписание прямо из диалога ВК!

Межтекстовые Отзывы
Посмотреть все комментарии
guest

Что такое баг: поговорим об ошибках в программировании

Разработка #Программы #Обзор #Игры #Ошибки Ошибки в программах – дело обыденное. Приложения зависают, вылетают, перестают запускаться. В простейшем случае пользователь...

Руководство по работе с Kubernetes для начинающих

Разработка #Серверы #Настройка #Docker #Ubuntu #CentOS Kubernetes – это портативная расширяемая платформа для управления контейнерами на серверах. Она...

Максимальная производительность 1С-Битрикс: Настройка виртуальной машины

Системы управления контентом (CMS) стали неотъемлемой частью современных веб-проектов, предоставляя множество возможностей для разработки и управления сайтами. 1С-Битрикс —...

Что такое язык программирования

Разработка #C/C#/C++ #Программы #Обзор #Веб-дизайн #Java Программа на компьютере или смартфоне – это последовательность команд, которую создавали с...

11 лучших приложений для изучения программирования

Разработка #C/C#/C++ #Программы #Сервисы #Подборка #JavaScript Рассказываем о лучших приложениях для смартфонов, которые помогут обучиться программированию и веб-разработке. ...

Лучшие IDE и редакторы кода для Python

Разработка #Программы #IDE #Редакторы кода #Python Писать программный код можно хоть карандашом на листке бумаги. Рационально ли это?...

Криптопрограммирование: особенности и перспективы

Разработка #Криптовалюта #Фреймворки #Обзор #Технологии Разработка – перспективное и денежное направление. Эта сфера привлекает все больше людей, даже...

Как создать туристический сайт

Разработка #Веб-дизайн #Контент #Конструктор Туристический сайт – это важный интернет-источник для людей, планирующих путешествия. Его основная цель – познакомить...

Создаем свой шаблон для Joomla. Пошаговое руководство

Разработка #Шаблоны #HTML/CSS #Joomla! В этой статье пойдет речь о создании своего шаблона для Joomla 3.х с возможностью...

Чем занимается веб-разработчик и что нужно для того, чтобы им стать

Разработка #Карьера #JavaScript #HTML/CSS #PHP #Python Сегодня программирование востребовано как никогда. Информационные технологии развиваются с колоссальной скоростью, и...

7 самых популярных фреймворков JavaScript

Разработка #Фреймворки #Обзор #JavaScript Статья посвящена самым популярным фреймворкам, библиотекам и инструментам JavaScript. Каждый из них может значительно облегчить...

Как сделать лендинг своими руками за 30 минут

Разработка #Лендинги #Настройка #Веб-дизайн #Хостинг #Конструктор Разработка лендинга – это важный этап для тех, кто собирается продвигать услуги...

Как научиться читать код сайта и зачем это нужно, если вы не программист

Разработка #Браузеры #Веб-дизайн #HTML/CSS Часто возникают ситуации, когда необходимо проанализировать содержимое веб-страницы: посмотреть description, узнать размер какого-то элемента...

Платформы для интернет-магазина: какую выбрать?

Разработка #Обзор #Интернет-магазин #Bitrix #OpenCart Введение По статистике за 2016 год 30,5 млн жителей России совершают покупки в...

Что такое дополненная реальность

Разработка #Google #Продажи #Технологии #Сервисы Выбирали когда-нибудь кроссовки или диван в интернете? Не очень удобно, верно? Было бы...

Микроразметка Open Graph: базовые принципы и настройка

Разработка #Социальные сети #Контент #HTML/CSS #SEO Микроразметка помогает роботам ориентироваться на страницах сайта и забирать для формирования поисковой...

Язык программирования Python: применение, особенности и перспективы

Разработка #Программы #Обзор #Технологии #Карьера #Python Сегодня поговорим о том, что такое Python, чем же он хорош и...

5 главных способов привлечения клиентов из карт и отзывиков

Бизнес #Продажи #Предпринимательство #SEO Реклама. ООО «ТаймВэб». erid: LjN8KQs4Z Мы в MyReviews делаем инструменты для мониторинга и улучшения рейтинга...

Верстка сайта: инструкция для новичков

«Верстка сайта — это сложно? А если я совсем новичок, у меня получится?» В этой статье мы рассказываем,...

Обзор Vue.js

Разработка #Фреймворки #Обзор #JavaScript Vue.js или просто Vue – это прогрессивный JavaScript-фреймворк, который используется для создания пользовательских интерфейсов....