Взаимодействие с Node.js | #2


В предыдущем посте мы подготовили необходимые инструменты для запуска роботов под Node.js

В качестве тестового примера, я немного модифицировал код @gemini. Он настроен на работу с одним или двумя аккаунтами.

Если у вас есть два аккаунта, то один будет выступать в качестве апвотящего робота, а другой в качестве инициатора вызова робота для апвоута. Если нет двух, то в качестве и робота, и инициатора будет один аккаунт - ваш. Так как возможно использование одного аккаунта, то в код добавлена временная задержка постинга ответного комментария робота (22 секунды). Это связано с тем, что в ГОЛОСе существует спам-защита в 20 секунд между комментариями одного пользователя. Робот проголосует сразу, как услышит ключевое слово, а разместит ответный комментарий только через 22 секунды.

Код шаблона я разместил в репозитории на github. Чтобы его оттуда скопировать (клонировать) необходимо установить утилиту GIT. (В дальнейшем, с помощью этой утилиты будем клонировать и других роботов размещённых на github.com)

Установка GIT

Заходим на сайт https://git-scm.com и кликаем Download

Выбираем операционную систему (кликаем по ссылке мышей)

В открывшейся странице выбираем вариант установочного пакета для своей операционной системы и скачиваем (в пример выбран пакет для Windows 64 бит)

После скачивания запускаем установку (кликаем на скаченном файле)

Проходим по всем шагам мастера установки, кликая клавишу Next (все параметры оставляем по-умолчанию, ничего не меняем).

Когда утилита установится (мастер завершит установку) начинаем работу с Node.js.

Командная строка Node.js

Все взаимодействия с Node.js осуществляются в командной строке. Она расположена в каталоге, где установлена Node.js.

Для запуска в Windows зайдите в меню Пуск > Все программы > Node.js > Node.js command promt (для удобства, при частом обращении к Node.js, можно отправить ярлык на рабочий стол или добавить в Панель быстрого запуска) 

откроется окно для работы в командной строке Node.js

В окне информация о версии Node и родительский путь (рабочий каталог Node) установленный по-умолчанию. У вас имена могут отличаться.

Для копирования кода шаблона-примера, а также установки модулей требуемых конкретным кодом, нужно перейти в каталог созданный ранее (описывал в предыдущем посте).

Ручками на клавиатуре набираем в окне коммандной строки Node следующую команду:

cd C:\robots\test

Жмём клавишу ввод (Enter)

В окне должен отобразиться путь в каталог test

  • Теперь все установки будут производиться непосредственно в этот каталог.

Клонирование репозитория

Для клонирования файлов (репозитория) нашего кода примера из github в окне командной строки набираем ручками (или копируем мышей и вставляем в окно также мышей) текст:

git clone https://github.com/fxcomtrader/curator.git

Жмём ввод (Enter)

В окне отобразятся операции производимые Node и, по окончании, вернёмся в исходный каталог test

  • После этой операции в каталоге test появится новый каталог. Его мы и скопировали с github. (Можно открыть проводник Windows и посмотреть)

Внутри папки curator находятся два файла

curator.js - это файл с кодом шаблона. Именно этот файл мы предварительно отредактируем и будем запускать в работу (файл робота)

README.md - файл описания (информационный для пользователя). Его можно прочитать любым текстовым редактором.

Установка модулей

Для выполнения кода в файле робота (curator.js) требуются дополнительные модули:

  • steem
  • bluebird
  • lodash

Их надо установить в каталог с роботом (папка curator). Для этого нам надо перейти в окне командной строки в этот каталог. Набираем ручками (или копируем мышей):

cd C:\robots\test\curator

Жмём ввод (Enter)

В окне отобразится следующее:

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

Устанавливаем модуль steem. Набираем ручками:

npm install steem

Жмём ввод (Enter)

Node найдёт модуль и запустит его установку, по окончании вернётся в наш каталог (C:\robots\test\curator>)

В точности так же устанавливаем и другие. Модуль bluebird, набираем:

npm install bluebird

Жмём ввод (Enter)

Модуль lodash, набираем:

npm install lodash

Жмём ввод (Enter)

  • Всё, все модули установлены. Осталось только отредактировать файл шаблона-примера и запустить робота.

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

Редактирование шаблона

Запускаем ранее установленную программу Notepad++. (Для удобства запуска программы можно её ярлык отправить на Рабочий стол или добавить в Панель быстрого запуска).

  • В программном окне Notepad++ сразу же откроется новый файл new 1 для написания кода. Так как мы будем использовать уже готовый шаблон, надо открыть файл этого шаблона (curator.js).

Заходим в меню Файл > Открыть

  • В открывшемся окне ищем скопированный нами файл curator.js (он находится в нашем каталоге C:\robots\test\curator) и жмём Открыть.

В окне редактора появится вкладка curator.js с кодом:

В секции "Данные робота (обязательно)" (с 9-й по 13 строки)

Меняем XХХХ на требуемые параметры:

В 10-й строке вписываем аккаунт который будет апвоутить

  • аккаунт пишется без собачки (@) и обязательно внутри одинарных кавычек (пример синтаксиса: 'vasyapupkin')

В 11-й строке меняем иксы на Приватный постинг ключ аккаунта, который вписали выше (в 10-й строке). Постинг ключ также должен быть прописан внутри кавычек.

  • В 12-й строке указана сила апвоута. 10000 соответствует 100%, 100 - это 1%. Можете изменить на требуемую вами.

Последняя правка в коде, в секции "Назначаем пользователя для отклика робота" (строки 46 - 48).

В 47-й строке иксы  меняем на аккаунт того пользователя, кто будет вызывать робота для апвоута. 

  • Если у вас один аккаунт в ГОЛОСе, то пишите свой ник (или приятеля, для теста). Аккаунт пишется без собачки и внутри одинарных кавычек (пример синтаксиса: 'vasyapupkin')

Все изменения сделаны и файл надо сохранить. Меню Файл > Сохранить.

Запуск робота

Если вы не закрывали окно командной строки Node.js и находитесь в каталоге curator (C:\robots\test\curator>) то ручками набираем:

node curator.js

Жмём ввод (Enter)

Робот запущен. Об этом вас уведомляет мигающий курсор в начале строки (под путём к каталогу).

Если вы ранее закрывали окно командной строки, то вновь его откройте. В окне будет установлен путь по умолчанию. (Та же самая картинка, какая была при первом запуске  окна командной строки Node.js)

Для запуска робота отсюда, надо набрать команду запуска (node) и указать полный путь к файлу робота

node C:\robots\test\curator\curator.js

Жмём ввод (Enter

Внимание! Если вы закроете окно командной строки, то робот прекратит работу, т.е. вы отключите Node.js.

Тест

Заходим в ГОЛОС. Под любым постом оставляем комментарий (под постом, а не под чьим-нибудь комментарием!)  с ключевой фразой:

curator!

(всё латиницей, восклицательный знак в конце - обязателен)

  • Робот услышит ключевую фразу, проголосует за пост и в окне командной строки отобразит отчет о голосовании

Спустя 22 секунды робот разместит ответный комментарий в ГОЛОСе о том, что он проголосовал, а в командной строке отобразит отчёт

  • Когда в окне командной строки отобразился отчёт, можно обновить страницу на ГОЛОСе и увидеть ответный комментарий

Если у вас это получилось, то всё ок. Задача выполнена!

* * *

@investigator



Comments 50


Всё понятно кроме одного. А как сделать что бы все могли призывать? А то этот момент упущен совсем( Видимо это в if(data.author ='XXXXXXXX') его надо выкинуть? Тогда какие строки выпилить со скрипта надо?

10.09.2017 13:21
0

Да, верно.
Лучше воспользуйся этим:
https://github.com/fxcomtrader/upbot.git
Здесь вариант по вызову любого пользователя. Ключевая фраза @+имя_аккаунта+ up!
В Readme прописано

10.09.2017 13:53
0

Там один в один. Я пока решил настроить так if(data.author!='y') Вроде правильный вариант.

10.09.2017 13:56
0

Тоже вариант ;)

10.09.2017 13:57
0

Спасибо) Теперь хоть правильно будет всё. Не зря я когда-то к ЯП проявлял интерес. Нашёл таки вариант))) Можно попросить протестировать бота?

10.09.2017 13:59
0

Конечно ;)

Если не собираешься ограничивать по нику пользователей, то лучше условие убрать совсем

47 строку полностью if(data.author=='XXXXX"){ и т.д.

и 110 } 

Лишнее условие - лишнее время для проверки.

- - -

И ещё, в тест примере стоит задержка в 22 секунды.

10.09.2017 14:02
0

Спасибо! Вот это и было надо. А 0.8 curator! отвечает за количество символов? И если я хочу команду в 12 символов, то надо ставить 0.12?

10.09.2017 14:05
0

Да.

10.09.2017 14:10
0

Вот эти моменты надо было расписать в посте. Очень многим помогут они в будущем.

10.09.2017 14:13
0

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

10.09.2017 14:18
0

А я своими вопросами поломал всю структуру постов) Но всё равно почитаю всё что будет) Мне вот ещё хочется сделать лог файл с числом поддержанных постов и рестарт раз в сутки) Планов громадье)

10.09.2017 14:21
0

Сделаешь и лог, и всё чего хочешь. ;)
Вариантов реализации масса.


Протестил тоже команду. Нормуль работает.
К стати, у тебя, я так понимаю с локалки работает нода?
Заметил давно. Робот под Ноду на локальной машине (например со своего компьютера) отрабатывает быстрее и лучше, чем c VPD. Пока не понимаю в чем подвох, может быть в том, что на VPD ресурсы разбросаны по разным машинам.

10.09.2017 14:26
0

На моём компе работает. Статический ip, хороший тариф и прочие ништяки провайдера в этом способствуют. Жаль что 7 лет назад я не начал учить JS, а полез в HTML и CSS. Явочка полезнее. А тут ещё и с блокчейном связался....

10.09.2017 14:29
0

кстати, знаешь, что java script и node.js несколько различаются? Не всё из java будет работать под node.


У меня школа только Basic и MQL. С Node.js знаком только пару месяцев.

10.09.2017 14:47
0

Мдяааааа. Я тут счётчик для консоли то полчаса пытаюсь сделать....

10.09.2017 14:58
0

Я через гугл не чураюсь. Примеров масса, кончено, один в один нет, но принцип всегда находится.
Чаще всего бесит когда простейшая операция требует написания десятка строк, тогда как в MQL - это всего одна строчка с пятью знаками.
С переменными тоже швах, не понимаю какого ляда ограничивать их видимость внутри условий (функций и т.д.). Объявил её внутри - ок, но если она за пределами, то нахрена огород городить... Такое ощущение, что недоросли решили поиграться.
Шутю, конечно, но тем нb менее )))

10.09.2017 15:09
0

Везде свои сложности. Переменные самая важная часть скрипта. Как и константы.

10.09.2017 15:11
0

Да это понятно.
Просто в java тем самым нарушается логика.
Если я объявил переменную глобально, то присвоить ей значение могу где угодно и достать эту переменную с этим значением откуда угодно, а в java - хрен с маслом. Вот и возникает вопрос, зачем тогда огород с классами и иже с ними.
К стати, в java тип integer самостоятельно фиг выдаст значение без десятичных знаков. То есть integer в принципе не имеет десятичной части, а в java - имеет ! В учебниках-то не имеет, а по факту - имеет.
Короче, веселуха.

10.09.2017 15:17
0

Жесть)))) Я больше привык к разделению на real ( типа 0.65) и integer ( типа 124 или 56)

10.09.2017 15:27
0

Вот такие нюансы и выморачивают.
Пишешь чего-нибудь, а не идёт зараза. Начинаешь ковыряться, а там вылазит какая-нибудь крякозябра, которой не должно быть в принципе.
В общем-то ничего сложного, к нюансам привыкаешь.

10.09.2017 15:32
0

Это верно)

10.09.2017 15:33
0

botovod!

10.09.2017 13:48
0

Ок, @nerengot!

Я проголосовал за пост: Взаимодействие с Node.js | #2

10.09.2017 13:48
0

Пока ждал ответа, нашёл решение сам.

10.09.2017 13:53
0

Ну и ок ;)

10.09.2017 13:55
0

botovod!

10.09.2017 14:03
0

Я изменил команду на gemini просто боты у вика часто падают, вот своего и настраиваю. А то мой бот за gemini не всегда ходит(

10.09.2017 14:07
0

Так как протестить? Какая фраза?

10.09.2017 14:11
0

Та же что и gemini - @gemini up!

10.09.2017 14:14
0

Уже проверил. Работает и комментарии оставляет)

10.09.2017 14:19
0

+1
ждем наплыва ботов ))

10.09.2017 17:00
0

голосующие боты - это хорошо ;)
Вот когда расскажу автопостинг роботом, то да. Хотя, думающий человек и так это увидит в коде ;)

10.09.2017 17:05
0

То, что бота открыли это здорово, а вот с автопостингом, думаю, лучше повременить иначе тут тааакааая свалка получится!))
@investigator, у меня есть вопросы по работе c nodejs, а обратиться не к кому. Если вы не против помочь, то как с Вами связаться?

15.09.2017 21:12
0

есть E-mail: investigator.golos@yandex.ru


Обращайтесь, @dimas102, чем смогу - помогу
Не люблю я всякие коммуникаторы, отвлекают. Но вот чувствую, что придётся всплыть в них ;)

17.09.2017 14:23
0

@investigator закинул на почту письмо.

19.09.2017 20:48
0

Отличная работа, @investigator! Будем учиться дальше))) Спасибо!

11.09.2017 10:18
0

Это отлично, что отлично ;)

11.09.2017 10:35
0

Еще как!)

11.09.2017 11:23
0

Добрый день. получаю вот такое { AssertionError [ERR_ASSERTION]: Expected version 128, instead got 23 что это может быть?

22.09.2017 21:26
0

Ошибка вылазит после какого действия?

24.09.2017 16:23
0

Когда написал команду и должно вызвать бота. При том что я все перестанавливал 2 раза и вообще не редактировал код, все то же самое.

24.09.2017 17:30
0

"не редактировал код"
Код надо редактировать обязательно. Без этого работать не будет.


Обратите внимание, что постинг-ключ надо прописывать приватный, а не публичный.
Он находится: Кошелёк - Разрешения - показать приватный ключ (Постинг ключ. Он начинается с 5-и. Копируете его и вставляете в код)

24.09.2017 17:32
0

Тю. я получается публичный вставлял. Сейчас попробую. Спасибо, отпишусь

24.09.2017 19:00
0

@investigator, у меня все получилось. Но только теперь возник вопрос. А как сделать чтобы робот работал круглосуточно. Ставить на сервер его? Где можно почитать об этом? Заранее спасибо.

02.10.2017 12:36
0

Да, @maximus00.
Надо арендовать VDS (VPS), на него ставить Node.js и запускать робота (т.е. всё тоже самое как на своём локальном компьютере).
Можно запускать и с локалки, если он будет включен круглосуточно.
VDS Подключается как удалённый рабочий стол для администрирования. Сам процесс работы такой же как и на своём компьютере. Для пробы можно арендовать на месяц и глядеть, как всё работает. Мощности увеличивать по желанию.


Я арендую в 1gb.ru с предустановленным Windows server (виндовс мне ближе просто). Там можно почитать. Ничего сложного.

02.10.2017 12:44
0

А какой у вас тариф на 1.gb? И обязательно VDS (VPS)? На тарифах хостинга не получится?

02.10.2017 12:47
0

Я пока взял по минимуму: Hyper-V (1024 Мб RAM, 60 Гб диск (60 Гб SSD, без бэкап), ядер процессора: 1, IP: 1).


С обычного хостинга не получится.

Можно смотреть виртуальные серверы и под Lunix, они дешевле. Но по ним ничего не могу сказать, как запускается нода там. Не спец.

02.10.2017 13:16
0