Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
phenom
7 лет назад

Будьте в курсе всех обсуждений на просторах Голос! Анонс бота с уведомлениями на уровне 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

p.s картинки взяты с просторов всемирный паутины
3
31.816 GOLOS
Комментарии (30)
Сортировать по:
Сначала старые