-
Автор темы
- #1
Такс, простите если че, первая тема, не бейте пж (и за говнокод тож не баньте пжпж);
Кароч седня научу вас делать топ ботов 1337 на NodeJS;
1. Подготовка
Нам нужен буит сам NodeJS последенй версии, его качаем с офф сайта:
Так же не лишним буит сайт с модулями:
А еще скорее всего вам нужен буит сайт для проверки своих регулярок:
Ну и любой текстовый редактор (хоть блокнот), я лично юзаю Notepad++.
Качаем ноду, устанавливаем, там ничо сложного, дальше, чтоб проверить установлена ли нода, открываем консоль (терминал) и пишем
Нам должно выдать текущую версию NodeJS на пк
Дальше нам нужны модули для работы с API ВКонтакте, можете написать свой если вы иллюминат (там ниче особо сложного нет, но все же)
Я юзаю модуль VK-IO и считаю его лучшим для работы с ВКонтакте, но есть аналог ввиде VK-Promise, с которого стартуют новички.
Чтоб установить правильно установить модули, создаем папку в любом удобном месте и называем ее типа TopBotInTheWorld.
Переходим туды с помощью
.
Такс, теперь ставим модули.
Пишем в консоль следующее:
Дальше в этой папке создаем файлик типа index.js или bot.js или vk.js (без разницы, я думаю вы поняли, что важно только расширение .js);
На этом этап подготовки окончен и мы приступаем к коду!
2. Кодим скелет
Открываем наш файлик.js и пишем туды
Скелет готов, дальше буим пилить функционал.
3. Первая команда.
Можно как нубы сделать if(message.text == '/start') { return message.send("вы крутой!11"); }, но мы же не нубы и темболее не говнокодеры, сделаем все топово.
Пишем простейшую функцию:
дополняем наш листенер такими строками кода (после нашего if() пишем):
Собсна полноценный "слушатель команд" готов.
Пишем свою первую команду после листенера:
Логичный вопрос, а нахера мы пишем описание если мы его не юзаем? Ща заюзаем, сделаем команду /help :)
4. Запуск и тест бота:
Открываем опять консоль, переходим к папке (юзаем cd), прописываем node название_файла.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
Кароч седня научу вас делать топ ботов 1337 на NodeJS;
1. Подготовка
Нам нужен буит сам NodeJS последенй версии, его качаем с офф сайта:
Пожалуйста, авторизуйтесь для просмотра ссылки.
Так же не лишним буит сайт с модулями:
Пожалуйста, авторизуйтесь для просмотра ссылки.
А еще скорее всего вам нужен буит сайт для проверки своих регулярок:
Пожалуйста, авторизуйтесь для просмотра ссылки.
Ну и любой текстовый редактор (хоть блокнот), я лично юзаю Notepad++.
Качаем ноду, устанавливаем, там ничо сложного, дальше, чтоб проверить установлена ли нода, открываем консоль (терминал) и пишем
Код:
node -v
Я юзаю модуль VK-IO и считаю его лучшим для работы с ВКонтакте, но есть аналог ввиде VK-Promise, с которого стартуют новички.
- VK-IO | Пожалуйста, авторизуйтесь для просмотра ссылки.
- VK-Promise | Пожалуйста, авторизуйтесь для просмотра ссылки.
Чтоб установить правильно установить модули, создаем папку в любом удобном месте и называем ее типа TopBotInTheWorld.
Переходим туды с помощью
Код:
cd C:\TopBotInTheWorld
Такс, теперь ставим модули.
Пишем в консоль следующее:
Код:
npm install vk-io --save
npm install request
или
npm install vk-io --save;npm install request (типа в одну строку, мы молодцы)
На этом этап подготовки окончен и мы приступаем к коду!
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}); // Прост красиво оформляем пуш значений в массив.
}
Код:
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("Привет, я работаю!");
});
Код:
command(/^\/help/i, 'none', function (message, params) {
return message.send("Команды бота:\n" + commands.filter(e => e.d != 'none').map(x => x.d).join("\n"));
});
Открываем опять консоль, переходим к папке (юзаем cd), прописываем node название_файла.js.
Все бот буит работать, но в случае критической ошибки он не перезапустит сам себя, для этого устанавливаем еще один модуль:
Код:
npm install pm2 -g
Код:
pm2 start название_файла.js
Source:
Пожалуйста, авторизуйтесь для просмотра ссылки.
UPD. исправил 1 ссылку на сайт теста регулярок
UPD. 17.08.2018.
!!! ВНИМАНИЕ !!!
фикс ошибки TypeError: require(...) is not a constructor, так как мой любимый ВК-ИО обновился и перешел на 4-ю версию, мои гайды слегка устарели, чтобы не было больше вопросов ко мне в лс, напишу сразу фикс здесь.
Короче, чтоб пофиксить необходимо установить старый VK-IO, делается это следующим образом:
npm install vk-io@3.2.0
Последнее редактирование: