/vk-chatbot

Чат-боты для ВКонтакте.

Primary LanguageJavaScriptzlib LicenseZlib

Данный проект прекратил своё развитие. Облегчённая версия чат-ботов.

Содержание

  1. Требования
  2. Установка
  3. Настройка
  4. Запуск
  5. Добавление команд (Список доступных команд)

Требования

Бот работает на виртуальном выделенном сервере с установленной операционной системой Ubuntu 16.04, поэтому дальнейшие инструкции будут применимы именно к ней.

Конфигурация сервера
  • OS: Ubuntu 16.04
  • CPU: 1x2.2 GHz
  • RAM: 512 Mb

Установка

Настройка сервера
Установка Node.js & npm
Установка менеджера процессов PM2
sudo npm i -g pm2

А также его настройка

Установка и настройка Redis

Для сервера Redis использую также следующие параметры:

maxmemory 10mb
maxmemory-policy allkeys-lru
Установка и настройка Nginx

В текущей конфигурации, все sitename.com/api запросы проксируются на локальный Node.js сервер (backend/server/).
Для остальных запросов раздаётся статика из директории фронтенд-билда.

Клонирование прокета и установка зависимостей
git clone https://github.com/woodymikki/vk-chatbot.git
cd vk-chatbot
npm i

Настройка

Создание приложения сообщества

Для того, чтобы работало распознавание капчи пользователями через приложение сообщества, нужно его создать здесь (Embedded application → Community app) и настроить. ID приложения и Secure key нужно прописать в backend/config/config.js (см. ниже).

Редактирование файлов

  • backend/config/accounts.default.js
    Здесь находится информация об аккаунтах ботов. Ботов может быть несколько.

  • backend/config/config.default.js
    Основной конфиг приложения.

Необходимо заполнить все поля, заменив строки вида "<string>" на свои данные.
После завершения редактирования данных файлов, необходимо убрать у них постфиксы ".default".

Запуск

Все команды выполняются в корневой директории проекта.

Билдинг фронтенда
npm run build
Запуск приложения (Bot + Server), используя PM2
npm start
Запуск локального live-reload сервера для разработки
npm run dev

Добавление команд

Все команды, которые выполняет бот, находятся в папке backend/bot/commands. Имя файла является основным названием команды.

Модуль каждой команды должен экспортировать объект следующего вида:

{
  /**
   * Алиасы команды.
   * @type {Array of String}
   * @optional
   */
  aliases, 

  /**
   * Описание команды (доступно по команде: /команда /?).
   * @type {String}
   * @optional
   */
  help_text, 

  /**
   * Функция, которая выполняется при вызове команды.
   * На вход первым аргументом принимает объект:
   *   {
   *     bot:     Bot,              // Экземпляр "Bot" (backend/bot/base/Bot/index.js)
   *     args:    CommandArguments, // Экземпляр "CommandArguments" (backend/bot/events/helpers/command-arguments.js)
   *     options: Object            // Настройки команды (backend/config/config.js#commands.<command_name>)
   *   }
   * @type {Function}
   * @required
   * @async
   */
  run, 

  /**
   * Уникальность команды:
   *   'mchat': доступна только в беседах;
   *   'pm':    доступна только в личных сообщениях;
   *   '':      доступна везде.
   * @type {String}
   * @optional
   */
  uniqueness
}