В предыдущем посте мы подготовили необходимые инструменты для запуска роботов под 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! Будем учиться дальше))) Спасибо!
Это отлично, что отлично ;)
Еще как!)
@investigator, у меня все получилось. Но только теперь возник вопрос. А как сделать чтобы робот работал круглосуточно. Ставить на сервер его? Где можно почитать об этом? Заранее спасибо.
Да, @maximus00.
Надо арендовать VDS (VPS), на него ставить Node.js и запускать робота (т.е. всё тоже самое как на своём локальном компьютере).
Можно запускать и с локалки, если он будет включен круглосуточно.
VDS Подключается как удалённый рабочий стол для администрирования. Сам процесс работы такой же как и на своём компьютере. Для пробы можно арендовать на месяц и глядеть, как всё работает. Мощности увеличивать по желанию.
Я арендую в 1gb.ru с предустановленным Windows server (виндовс мне ближе просто). Там можно почитать. Ничего сложного.
А какой у вас тариф на 1.gb? И обязательно VDS (VPS)? На тарифах хостинга не получится?
Я пока взял по минимуму: Hyper-V (1024 Мб RAM, 60 Гб диск (60 Гб SSD, без бэкап), ядер процессора: 1, IP: 1).
С обычного хостинга не получится.
Можно смотреть виртуальные серверы и под Lunix, они дешевле. Но по ним ничего не могу сказать, как запускается нода там. Не спец.
Добрый день. получаю вот такое { AssertionError [ERR_ASSERTION]: Expected version 128, instead got 23 что это может быть?
Ошибка вылазит после какого действия?
Когда написал команду и должно вызвать бота. При том что я все перестанавливал 2 раза и вообще не редактировал код, все то же самое.
"не редактировал код"
Код надо редактировать обязательно. Без этого работать не будет.
Обратите внимание, что постинг-ключ надо прописывать приватный, а не публичный.
Он находится: Кошелёк - Разрешения - показать приватный ключ (Постинг ключ. Он начинается с 5-и. Копируете его и вставляете в код)
Тю. я получается публичный вставлял. Сейчас попробую. Спасибо, отпишусь
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
gidlark, natalia, polyideic, ruslandis, investigator, forbon21, shkiper, boltyn, borisss, vpervye1, nerengot, upper, student61, vsebudethorosho, sansey
Поэтому я тоже проголосовал за него!
Если Вы проголосуете за этот комментарий, то поможете сделать "Доброго Кита" сильнее!
botovod!
Я изменил команду на gemini просто боты у вика часто падают, вот своего и настраиваю. А то мой бот за gemini не всегда ходит(
Так как протестить? Какая фраза?
Уже проверил. Работает и комментарии оставляет)
Та же что и gemini - @gemini up!
botovod!
Ок, @nerengot!
Я проголосовал за пост: Взаимодействие с Node.js | #2
Всё понятно кроме одного. А как сделать что бы все могли призывать? А то этот момент упущен совсем( Видимо это в if(data.author ='XXXXXXXX') его надо выкинуть? Тогда какие строки выпилить со скрипта надо?
Да, верно.
Лучше воспользуйся этим:
https://github.com/fxcomtrader/upbot.git
Здесь вариант по вызову любого пользователя. Ключевая фраза @+имя_аккаунта+ up!
В Readme прописано
Там один в один. Я пока решил настроить так if(data.author!='y') Вроде правильный вариант.
Вот такие нюансы и выморачивают.
Пишешь чего-нибудь, а не идёт зараза. Начинаешь ковыряться, а там вылазит какая-нибудь крякозябра, которой не должно быть в принципе.
В общем-то ничего сложного, к нюансам привыкаешь.
Это верно)
Да это понятно.
Просто в java тем самым нарушается логика.
Если я объявил переменную глобально, то присвоить ей значение могу где угодно и достать эту переменную с этим значением откуда угодно, а в java - хрен с маслом. Вот и возникает вопрос, зачем тогда огород с классами и иже с ними.
К стати, в java тип integer самостоятельно фиг выдаст значение без десятичных знаков. То есть integer в принципе не имеет десятичной части, а в java - имеет ! В учебниках-то не имеет, а по факту - имеет.
Короче, веселуха.
Жесть)))) Я больше привык к разделению на real ( типа 0.65) и integer ( типа 124 или 56)
Я через гугл не чураюсь. Примеров масса, кончено, один в один нет, но принцип всегда находится.
Чаще всего бесит когда простейшая операция требует написания десятка строк, тогда как в MQL - это всего одна строчка с пятью знаками.
С переменными тоже швах, не понимаю какого ляда ограничивать их видимость внутри условий (функций и т.д.). Объявил её внутри - ок, но если она за пределами, то нахрена огород городить... Такое ощущение, что недоросли решили поиграться.
Шутю, конечно, но тем нb менее )))
Везде свои сложности. Переменные самая важная часть скрипта. Как и константы.
кстати, знаешь, что java script и node.js несколько различаются? Не всё из java будет работать под node.
У меня школа только Basic и MQL. С Node.js знаком только пару месяцев.
Мдяааааа. Я тут счётчик для консоли то полчаса пытаюсь сделать....
Сделаешь и лог, и всё чего хочешь. ;)
Вариантов реализации масса.
Протестил тоже команду. Нормуль работает.
К стати, у тебя, я так понимаю с локалки работает нода?
Заметил давно. Робот под Ноду на локальной машине (например со своего компьютера) отрабатывает быстрее и лучше, чем c VPD. Пока не понимаю в чем подвох, может быть в том, что на VPD ресурсы разбросаны по разным машинам.
На моём компе работает. Статический ip, хороший тариф и прочие ништяки провайдера в этом способствуют. Жаль что 7 лет назад я не начал учить JS, а полез в HTML и CSS. Явочка полезнее. А тут ещё и с блокчейном связался....
Как бэ, более детально разобрать планировал далее, здесь-то задача была сугубо на взаимодействие с нодой и с кодом )
А я своими вопросами поломал всю структуру постов) Но всё равно почитаю всё что будет) Мне вот ещё хочется сделать лог файл с числом поддержанных постов и рестарт раз в сутки) Планов громадье)
Да.
Вот эти моменты надо было расписать в посте. Очень многим помогут они в будущем.
Конечно ;)
Если не собираешься ограничивать по нику пользователей, то лучше условие убрать совсем
47 строку полностью
if(data.author=='XXXXX"){
и т.д.и 110
}
Лишнее условие - лишнее время для проверки.
- - -
И ещё, в тест примере стоит задержка в 22 секунды.
Спасибо! Вот это и было надо. А 0.8 curator! отвечает за количество символов? И если я хочу команду в 12 символов, то надо ставить 0.12?
Тоже вариант ;)
Спасибо) Теперь хоть правильно будет всё. Не зря я когда-то к ЯП проявлял интерес. Нашёл таки вариант))) Можно попросить протестировать бота?