Bot Bro[wser] - не требующий сервера, навыков, голосующий и следящий бот куратор в вашем браузере.
Если посмотреть на текущие посты по разработке ботов - все они упираются в наличие собственного сервера или в установку node js, python и другого ПО. Но если говорить о широкой аудитории - не все могут развернуть собственный сервер. Вернее, использовать сервер могут не только лишь все, мало кто может это делать.
UPD: Для чего нужны боты-кураторы? Для поддержки академии голоса:
Как поддержать авторов Академии Голоса: Следовать за голосоами @academy с помощью моего бота. Контакт по почте ontofractal на protonmail.com
Следовать за голосами аккаунта @academy с помощью ваших собственных ботов
Вручную голосовать за посты из отчетов Академии
Благодаря библиотеке golos.js и урокам @ontofractal мы сделаем* собственного бота - куратора, а его особенностью будет - работа в любом браузере (Десктоп или мобильный)
Бот доступен по ссылке https://golos.rubtc.info/bot.html - поскольку он полностью выполняется на стороне вашего браузера - вы можете просто скопировать исходный код страницы и использовать как вам вздумается.
Алгоритм
Вы указываете время в минутах и логин куратора за которым нужно повторить голоса.
Бот возвращается в прошлое на указанное количество минут, анализирует все голоса за этот период и начинает их повторять по одному раз в 3 секунды (ограничение блокчейн). Когда бот доходит до настоящего времени - он ждет новых голосов от выбранного куратора и в случае если замечает новый голос - повторяет его. Сила голоса бота в % соответствует силе куратора-цели.
Опции бота
- Выбор того, кто будет голосовать. Аккаунт + постинг ключ.
- Выбор цели - пользователя за кем нужно повторить голоса
- Выбор точки отсчета в минутах - позволяет указать время с которого повторить голоса
- Выбор условия силы голоса (повторять голос только если цель проголосовала с такой-то силой в %)
NB на заметку:
- Учитывая интервал генерации блоков блокчейна - бот голосует с соответствующим интервалом в 3 секунды.
- Более подробный отчет о работе бота вы увидите в консоли своего браузера.
- Если вы ранее уже голосовали за чей то пост, бот не повлияет на него. Но если куратор за которым вы следуете проголосовал с другой силой - бот изменит ваш голос на эту силу.
Можно использовать в тестовом режиме - для этого не указывайте постинг ключ, просто укажите куратора-цель и количество минут, которые нужно проанализировать.
Сделай сам :)
мы сделаем* собственного бота
Мои посты могут ошибочно восприниматься как презентация каких-то готовых решений, но я всего лишь делюсь с вами черновиками. Так как тот еще лентяй - для меня вверх авторского успеха - если мой черновик кому-то пригодится. А для чистовиков я слишком прокрастинатор :)
Кому не терпится - можете использовать скрипт ниже. А кто готов подождать - завтра в привычной манере очень подробно опишу как все работает
<script>
var votepower = 0;
function broBot() {
var account = document.getElementById("account").value,
k = document.getElementById("k").value,
username = document.getElementById("username").value,
minutes = document.getElementById("minutes").value,
votepower = document.getElementById("votepower").value,
time, starttime, t = 1000,
period = minutes * 60,
utime, start;
function followVote() {
var count = true;
steem.api.getDynamicGlobalProperties(function(err, result) {
starttime = Date.parse(result.time) / t;
});
steem.api.getAccountVotes(username, function(err, result) {
var a = [];
for (var i = 0; i < result.length; i++) {
var arr = result,
start = starttime - period,
ap = arr[i].authorperm,
author = ap.substring(0, ap.indexOf('/')),
permlink = ap.substring(ap.indexOf('/')).substring(1),
power = arr[i].percent,
time = arr[i].time;
utime = Date.parse(time) / t;
if (utime > start) {
a.push({
author: author,
permlink: permlink,
power: power,
utime: utime,
start: start
});
}
}
var summ = a.length;
var i = 0;
var goVote = setInterval(function() {
if (count && summ > 0 && a[i].power / 100 >= votepower) {
steem.broadcast.vote(k, account, a[i].author, a[i].permlink, a[i].power, function(err) {
console.log(err);
});
i++;
itemShow();
}
if (i == summ) {
count = false;
period = 4;
clearInterval(goVote);
followVote();
}
}, 3000);
});
}
followVote();
function itemShow() {
setTimeout(function() {
document.getElementById("item").classList.add('anim');
}, 200);
}
document.getElementById("nicedata").classList.add('bg');
document.getElementById("options").classList.add('nobg');
}
</script>
Прошлые посты по теме: