Бот на NodeJS [ВКонтакте]

Участник
Статус
Оффлайн
Регистрация
18 Апр 2016
Сообщения
433
Реакции[?]
257
Поинты[?]
5K
Такс, простите если че, первая тема, не бейте пж (и за говнокод тож не баньте пжпж);
Кароч седня научу вас делать топ ботов 1337 на NodeJS;

1. Подготовка
Нам нужен буит сам NodeJS последенй версии, его качаем с офф сайта:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Так же не лишним буит сайт с модулями:
Пожалуйста, авторизуйтесь для просмотра ссылки.

А еще скорее всего вам нужен буит сайт для проверки своих регулярок:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Ну и любой текстовый редактор (хоть блокнот), я лично юзаю Notepad++.
Качаем ноду, устанавливаем, там ничо сложного, дальше, чтоб проверить установлена ли нода, открываем консоль (терминал) и пишем
Код:
node -v
Нам должно выдать текущую версию NodeJS на пк
Дальше нам нужны модули для работы с API ВКонтакте, можете написать свой если вы иллюминат (там ниче особо сложного нет, но все же)
Я юзаю модуль VK-IO и считаю его лучшим для работы с ВКонтакте, но есть аналог ввиде VK-Promise, с которого стартуют новички.
А так-же пару второстепенных ввиде request (для работы с другими сайтами), и например fs для работы с файловой системой;

Чтоб установить правильно установить модули, создаем папку в любом удобном месте и называем ее типа TopBotInTheWorld.
Переходим туды с помощью
Код:
cd C:\TopBotInTheWorld
.

Такс, теперь ставим модули.
Пишем в консоль следующее:
Код:
npm install vk-io --save
npm install request
или
npm install vk-io --save;npm install request (типа в одну строку, мы молодцы)
Дальше в этой папке создаем файлик типа index.js или bot.js или vk.js (без разницы, я думаю вы поняли, что важно только расширение .js);

На этом этап подготовки окончен и мы приступаем к коду!

2. Кодим скелет
Открываем наш файлик.js и пишем туды
Код:
const vk = new (require('vk-io')),
request = require('request'),
BOTID = 1246544; // Здесь айди страницы бота
// Дальше подключаем токен
vk.setToken('token');
// и врубаем лонгпулл
vk.longpoll.start();
// Массив для будущих команд:
var commands = [];
// дальше пишем листенер месседжов
vk.longpoll.on('message' (message) => {
// Пишем простоейший фильтр от недочета ио (он имеет свойство отвечать на собственный месседжи)
if(message.user == BOTID) return;
});
Скелет готов, дальше буим пилить функционал.

3. Первая команда.
Можно как нубы сделать if(message.text == '/start') { return message.send("вы крутой!11"); }, но мы же не нубы и темболее не говнокодеры, сделаем все топово.

Пишем простейшую функцию:
Код:
function command(_regex, _desc, _func) {
commands.push({r: _regex, f: _func, d: _desc}); // Прост красиво оформляем пуш значений в массив.
}
дополняем наш листенер такими строками кода (после нашего if() пишем):
Код:
commands.map(function (cmd) {
if(!cmd.r.test(message.text))return; // посылаем, если регулярка не совпадает с месседжом
var params = message.text.match(cmd.r) || []; // создаем группы
params[0] = message; // так надо!1
cmd.f(message, params); // Передаем в функцию message и params, для дальнейшей работы с ними
});

Собсна полноценный "слушатель команд" готов.

Пишем свою первую команду после листенера:
Код:
command(/^\/test/i, '/start -- проверка бота', function (message, params) {
return message.send("Привет, я работаю!");
});
Логичный вопрос, а нахера мы пишем описание если мы его не юзаем? Ща заюзаем, сделаем команду /help :)
Код:
command(/^\/help/i, 'none', function (message, params) {
return message.send("Команды бота:\n" + commands.filter(e => e.d != 'none').map(x => x.d).join("\n"));
});
4. Запуск и тест бота:
Открываем опять консоль, переходим к папке (юзаем cd), прописываем node название_файла.js.
Все бот буит работать, но в случае критической ошибки он не перезапустит сам себя, для этого устанавливаем еще один модуль:
Код:
npm install pm2 -g
И теперь запускаем нашего бота через
Код:
pm2 start название_файла.js
Собсна простой бот на NodeJS готов, если вам зайдет эта статья, сделаю чет поинтереснее (можем потрахаца с канвасом, сделать переводчика/прогноз погоды, а можем впихнуть игоры)


Source:
Пожалуйста, авторизуйтесь для просмотра ссылки.


UPD. исправил 1 ссылку на сайт теста регулярок

UPD. 17.08.2018.
!!! ВНИМАНИЕ !!!
фикс ошибки TypeError: require(...) is not a constructor, так как мой любимый ВК-ИО обновился и перешел на 4-ю версию, мои гайды слегка устарели, чтобы не было больше вопросов ко мне в лс, напишу сразу фикс здесь.
Короче, чтоб пофиксить необходимо установить старый VK-IO, делается это следующим образом:
npm install vk-io@3.2.0
 
Последнее редактирование:
Участник
Статус
Оффлайн
Регистрация
18 Апр 2016
Сообщения
433
Реакции[?]
257
Поинты[?]
5K
Здрасьте, простите за ап, но я добавил полезную инфу, а именно фикс ошибки "TypeError: require(...) is not a constructor", возможно кто то ранее писал бота по данному гайду и не знал как пофиксить, а у меня были невалидные ссылки на соц.сети :roflanPominki: Ну и шоб больше не было вопросов мне лс, написал фикс сюды, а в целом советую посмотреть доку нового вк-ио и переписать уже под него :roflanEbalo:
 
Начинающий
Статус
Оффлайн
Регистрация
16 Май 2017
Сообщения
196
Реакции[?]
27
Поинты[?]
0
C:\Windows\System32>pm2 start bot.js
[PM2][ERROR] script not found : C:\Windows\Sy
script not found : C:\Windows\System32\bot.js
 
Участник
Статус
Оффлайн
Регистрация
18 Апр 2016
Сообщения
433
Реакции[?]
257
Поинты[?]
5K
C:\Windows\System32>pm2 start bot.js
[PM2][ERROR] script not found : C:\Windows\Sy
script not found : C:\Windows\System32\bot.js
ты пм2 стартуешь из папки винды, через cd перейди в папку с ботом и там уже стартуй, либо создай батник рядом с ботом с таким содержимым:
Код:
pm2 start bot.js
pause
и запусти
 
Новичок
Статус
Оффлайн
Регистрация
2 Июл 2019
Сообщения
2
Реакции[?]
0
Поинты[?]
0
У вас тоже npm install pm2 -g долго устанавливался? уже 21 мин прошло и только 1 палка
 
Сверху Снизу