GitXplorerGitXplorer
n

elizabeth2

public
4 stars
0 forks
0 issues

Commits

List of commits on branch master.
Unverified
ac094343fe6a8ef9f900ff716455d358ad8c93cb

Update README.md

nnuc134r committed 9 years ago
Unverified
06504106d5671c049ed8711e418feb5378c79777

Update README.md

nnuc134r committed 9 years ago
Unverified
4027666bef78436fea9af74e7b041a05a8b2fcbc

Update README.md

nnuc134r committed 9 years ago
Unverified
99ec53d9057a8ee8c7e8ad826a5f79b6607e24b8

Update README.md

nnuc134r committed 9 years ago
Unverified
8a9807581ac4081ee9792c6e36891dea974079e9

Moar logging improvements

nnuc134r committed 9 years ago
Unverified
85d0b5a65985bee1a57f67b4c4024f0eae91802b

Logging improvements

nnuc134r committed 9 years ago

README

The README file for this repository.

Вторая версия бота для VK. Первая тут.

Настройка

В пустой папке, в bash или git bash:

$ git clone https://github.com/nuc134r/elizabeth2.git .
$ npm install

Для работы требуется токен от VK API с доступом к сообщениям, подойдёт как обычный, так и групповой токен. Нужно создать файл config.json в корневой папке и скопировать в него следующее:

{
  "access_token" : "тут_токен"
}

В конфиге также можно указать следующие параметры(со значением "true" или "false"):

  • log_requests - логирование HTTP-запросов
  • online_status - нужно ли обеспечивать статус "онлайн" (только для пользователей)
  • diagnostics - диагностическая информация каждые 15 минут (выводится в консоль)

По умоланию все настройки отключены.

Запуск

Работает на Node.js версии >= 5.5.0

$ node app.js

После этого пользователю/группе можно писать сообщения, на них будет отвечать бот.

Как работает?

Модуль commands.js экспортирует объект любой степени вложенности list:

module.exports.list = {
  default: 'Unknown command',         // строка
  'weather': {
      default: getWeatherToday,       // функция
      'today': getWeatherToday,       // функция
      'tomorrow': getWeatherTomorrow, // функция
      'yesterday': 'Not avliable'     // строка
    }
}

Когда бот резолвит команду, полученную через личные сообщения, он идёт по строке и рекурсивно ищет ключевые слова в объекте. Например, при команде "weather tomorrow" он найдёт слово "weather" на первом уровне list и примется за второй, где найдёт "tomorrow". В результате он вернёт результат функции getWeatherTomorrow.

Команда "weather" вернёт значение default из объекта weather. Значение по умолчанию берётся также и при отсутствии знакомых ключевых слов, например "weather monday". Эту логику можно посмотреть в файле bot.js.

Незнакомая команда будет обработана корневым полем default, причём если онo будет null, то на незнакомые команды бот не будет отвечать.