Javascript и 100500 ботов для голоса
Продолжаю разбираться с javascript-ом. Ужасно непонятный язык программирования, но очень интересно. Сколько на нем уже написано. А так как я себя считаю мало мальским программистом, то разобраться обязательно нужно. Хотя бы основные понятия.
Вроде бы я разобрался с require и как это работает. Могу создавать простенькие классы, но не совсем допонимаю с template.
Боты
В качестве практических занятий я мучаю golos API. Уже написал одного голосовального бота, которого слизал с бота @vik.
Я писал несколько статей про Node-RED, на котором я написал простенького бота для Telegram-а повторяющего бота от @on0tole, извещающего об движении в моем аккаунте на голосе. Поэтому для упражнения с javascript-ом я решил написать такого же бота на javascript.
Бота я уже зачал, начал его писать как NPM модуль для Node.js. Исходники лежат здесь. Цель написать персонального мультибота. Пока внутри все бессистемно, с едва заметными зачатками архитектуры.
Пока что бот перебирает цепочку блоков и историю аккаунта пользователя.
Сообщает в чат telegram
- об отданных голосах за пост.
- о кураторских и авторских вознаграждениях
- подписывается на топики, в которых я комментировал или за которые голосовал и сообщает о новых комментариях этим темам. Удобно, если хочется быть в курсе развития дискуссии.
В планах
- добавить побольше оповещений
- добавить группировку оповещений
- встроить голосовального бота, в разных ипостасях
- добавить расширяемого бота отслеживающего переводы и выполняющего определенные действия (за оплату). Для монетизации наверное было бы неплохо.
Уставовка
Node.js
Для бота требуется Node.js 7 и более. Про установку можно почитать здесь
Собственно сводится к исполнению этих команд
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs
Git
Потребуется git для клонирования бота.
sudo apt-get install git
Клонирование репозитория
Что бы скачать исходники выполните
git clone https://github.com/gropox/golosbot.git
Теперь можно зайти в новую папку golosbot.
Зависимости. Прямо в папке с ботом выполните следующие команды.
npm install nedb
npm install steem
npm install telegram-bot-api-c
Должна быть создана папка с модулями "node_modules"
Теперь можно попробовать запустить бота командой
node .
остановить можно Ctrl-C
После первого запуска бот создает конфигурационный файл .golosbot.js
в домашней папке пользователя которым бот запускался. Собственно это json. Надо поменять пользователя, ввести токен для telegram бота и id чата. И можно запускать бота.
Бот Telegramm
Как создавать своего telegram бота можно поискать в интернете. Если коротко, то
- находите BotFather в мессенджере
- командой /newbot запускаете создание нового бота
- задаете имя бота и пользователя. К примеру coolbot и coolbot.
В ответ BotFather вышлет вам token такого вида
311111111:AAFM111111111SU-9Xj6Ai-7fPxXxXxX110
Сохраните его в конфигурацонном файле golosbot-а
В telegram найдите вашего свежеиспеченного бота и начните чат с ним. После чего, в корневой папке запустите
node getChatId
И в течении 10 секунд напишите в чате несколько сообщений. В консоли скрипт должен будет выдать chat_id. Можно остановить скрипт Ctrl-C
Сохраните chat_id в конфигурационном файле. Бот должен быть рабочим.
Я запустил его на своем снятом самом дешевом сервачке на digitalocean. В пику потребляет до 11% CPU, это если его запустить со старого блока. А так его даже top не показывает.
Пока что запускаю так, в ручном режиме
nohup node . >/dev/null &
Спасибо @vadbars за отладку инструкции :)
Тут пара примеров извещений
За меня проголосовали
Получено кураторское вознаграждение
Прокомментировали мой пост
Прокомментировали пост, к которому я тоже оставлял комментарий
Получено авторское вознаграждение. Правда только сейчас заметил, что линк на пост не работает. Надо будет поправить.