Будьте в курсе всех обсуждений на просторах Голос! Анонс бота с уведомлениями на уровне blockchain
Всем привет!
Ещё со времен первого знакомства со steemit, я испытывал проблему, когда пропускал все посты и комментарии, в которых меня упоминали как @phenom. Не было никаких уведомлений, и как итог, важные дискуссии, в которых я по идее должен был участвовать, проходили мимо. Узнавал я об этих комментариях либо случайно наткнувшись на них спустя несколько месяцев, либо от других людей в rocket chat, которые кидали ссылку со словами - "Чувак, посмотри, там вовсю обсуждают твою последнюю статью". И конечно же было поздно вступать в дискуссию, в которой уже пару дней как всё было обсуждено без тебя. Конечно было и есть много сервисов, которые уведомляли, если твою статью апнули, или же кто-то ее прокомментировал, но если тебя упоминули с тегом @ в какой-то сторонней статье, то это почти всегда оставалось вне зоны твоей видимости.
Почувствовал эту проблему я и со старта голоса и почти сразу решил, что пора сделать сервис, который будет уведомлять пользователей о комментариях прямо на уровне блокчейна. А в силу того, что я являюсь активным делегатом и уже давно хотел разобраться, как работать с python библиотеками нашего блокчейна, эта задача вышла на первый план.
Итак, представляю вашему внимаю своего бота. Теперь он не даст Вам остаться не у дел и будет каждый раз уведомлять, когда кто-то упомянул Ваш никнейм, посылая транзакцию в 0.001 голос прямо в Ваш кошелек вместе со ссылкой на пост. Так что вы теперь не только проинформированы, но и становитесь богаче получая голоса в свой кошелек)
Вот пример комментария/статьи, где используя тег @on0tole я дал ему понять, что это не было сказано "за его спиной":
Вот что видит @on0tole в своем кошельке:
Поэтому если Вы не хотите пропустить какое-то важное обсуждение, просто раз в день заглядывайте в свой кошелек.
Вот исходный код этого бота на языке python. Он подразумевает, что у вас уже установлены библиотки conservatorio, graphene-lib-for-golos, python-steemlib-for-golos. Как правильно их устанавливать для блокчейна Голос расскажу в одном из гайдов.
Также полезная информация - если Вы хотите, чтобы кошелек разблокировался библиотекой piston автоматически, то необходимо задать переменную среды UNLOCK="your_wallet_password"
Скрипт ниже может также использоваться в качестве примера того, как нужно взаимодействовать с нодой Голоса (это если вы решите начать делать свои собственные приложения)
from piston.steem import Steem
from pprint import pprint
import regex
#connect to public web API node
#(don't use your own if it's not adjusted being public)
steem = Steem("ws://" + "golos.steem.ws")
acc_id = 'phenom'
#Set regex version to have recursive Perl like regex and set flag to perform
#multiline search
regex.version='VERSION1'
regex.MULTILINE
#define total spent amount of golos to avoid wallets desolate
total_amount = 0
for c in steem.stream_comments():
pprint(c)
comment_text = c["body"]
#regular expression to fin all mentions
names = regex.findall(r'(?<=\s|^)@\K[^\s@]*\b',comment_text)
#convert to set to leave only unique names
names = set(names)
#skip this comment if there was no mentions
if len(names) == 0:
continue
transfered_amount = 0
#update total spent amount
total_amount += len(names) * 0.001
if (total_amount > 2):
print("There were more than 1k mentions. Probably someone abuse\n")
break
pprint(names)
for nickname in names:
#don't sent if author mentioned itself
if nickname == c["author"]:
continue
#generate memo for transaction
memo = "You have been mentioned by %s " % (c["author"]) + \
"in the post http://golos.io/%s/@%s/%s" % (c["category"], c["author"], c["permlink"])
#try to perform transaction
try:
aa = steem.transfer(nickname,0.001,"GOLOS", memo, acc_id)
except:
pass
transfered_amount += 0.001
#to avoid abuse we set limit to 100 mentions per comment
if (transfered_amount) > 0.1:
break
Ещё одно преимущество этого подхода в том, что всё происходит на уровне блокчейна и нет необходимости устанавливаться/пользоваться сторонние сервисы, которым Вы не доверяете.
В дальнейшем планируются некоторые улучшения:
- Отправка уведомлений на почту. Вы просто посылаете боту в ответ транзакцию , где в memo key добавляете команду "notify your_email@gmail.com"
- Если транзакции Вам как-то мешают и вы не хотите получать уведомления, то отправляете команду "stop". Чтобы снова возобновить отправляете "start"
- Уведомление когда кто-то ссылается на вашу статью или комментарий
Ну и конечно, если Вы считаете, что этот сервис будет полезным, то поддержите меня в роли делегата сети Голос по данной ссылке или же из вашего кошелька командной строки cli_wallet:
vote_for_witness your_id phenom true true
Ну и конечно же помните - каждый Голос важен и то, какой будет эта платформа зависит только от нас самих!
С наилучшими пожеланиями,
@phenom