votebot
Я наверное не писал об этом, но у меня на гитхабе лежат исходники голосовального бота, которым я пользуюсь для... ну да, голосования.
Я его написал чисто в академических целях, потом мне показался он удобным и я пересел на него. У @vik-а есть семейка навороченных, голосовальных ботов для телеграма, но у них одно печальное ограничение. Один бот, один пользователь. Нудно настраивать. Да из-за соображений безопасности Вик наложил на ботов ограничение и их приходится поэтому периодически перезапускать, если Вик выкатил новое обновление.
Вообщем я написал своего собственного, персонального бота и постепенно развиваю дальше. Ну и делюсь им с вами.
Для работы требуется node.js версии 7 и выше, работает как под windows, так и под linux.
golos-addons
За одно про анонсирую свой первый npm модуль golos-addons. Я уже написал несколько скриптов для голоса и у меня постепенно выкристаллизовались свои паттерны построения приложений. Как они работают с блокчейном голоса, как выводятся отладочные сообщения, как происходит конфигурирование. Все это я решил вынести в отдельную библиотеку и использовать в своих скриптиках. Получается что-то вроде маленького фреймворка и обкатывать его начал я на этом боте. Пока никакого описания я не делал, я часто его меняю, так что использовать не рекомендую, но кому интересно, могут глянуть.
Исходники здесь. https://github.com/gropox/golos-addons
Там в папке examples есть пара примеров по работе с golos-addons
- count_upvotes.js - подсчет голосов сделанных пользователем за сутки
- get_curation_rewards.js - подсчет кураторских вознаграждений за определенный периуд
- follow.js - подписка/отписка скриптом
- votebot.js - бот голосующий по триггеру-комментарию на подобие gemini,
Но вернемся к голосовальному боту.
Принцип работы
- Бот просто повторяет голоса куратора-лидера.
- Можно указать сколько голосов за сутки будут повторены за лидером в общей сложности. К примеру 40.
- Вы можете задать несколько лидеров, указав каждому свою квоту.
- Можно просто задать одного лидера и квоту 100% или допустим marina - 80% vox-populi 10%. В этом случае бот за сутки повторит 32 апвота пользователя marina и 4 апвота vox-populi. Я лично боту настроил максимально повторять 30 голосов, а 10 я оставил для себя, для ручного кураторства. Меня все равно больше чем на 10 лайков не хватает.
- Если vote_weight параметр быстрее восстановился, то и срок созревания голосов сокращается. При vote_weight = 100% бот будет готов повторять голоса уже через 12 часов.
- Можно задать сколько угодно аккаунтов, которые будут повторять голоса.
Установка
Исходники можно взять от сюда https://github.com/gropox/voteprediction. Либо используя git, клонируете репозиторий
git clone https://github.com/gropox/voteprediction.git
Либо скачиваете исходники кликнув по кнопке "Download ZIP"
После распаковки архива с исходниками, или после клонирования, зайдите во вновь созданную папку. В ней выполните команду npm install
npm установит необходимые модули.
Настройка
В папке с исходниками лежит config.json.example. Скопируйте его или просто переименуйте в config.json. Там собственно все должно быть очевидно
{
"golos_host" : "https://golos.io",
"golos_websocket" : "wss://ws.golos.io",
"shared_votes" : 35,
"leaders" : {
"eee" : 80,
"ropox" : 20
},
"users" : {
"ropox" : "5PRIVKEY",
"twink" : "5PRIVKEY"
}
}
Как видно бот будет повторять максимально 35 голосов. Из них 80% за @eee и 20% за ropox. "users" собственно пользователи и их приватные постинг-ключи
Запуск
Что бы запустить надо выполнить следующую команду
node index
Можно добавить опциональные параметры debug или trace, что бы увидеть отладочные сообщения.