Budowanie regułowego bota dla blockchainu Steem

in #pl-artykuly7 years ago

Wstęp

W tym artykule chciałbym opisać wstępne założenia API napisane w Javie, pozwalające na konstruowanie różnego typu botów i opisać boty jakie zostaną na podstawie API zaimplementowane. Boty będą posiadały zaprogramowane określone akcje, które będą sterowane poprzez reguły eliminujące.

Zasada działa bota stworzonego na podstawie API


Aby skonstruować dowolnego bota, musimy określić jakie akcje powinny być wykonane przez bota np. głosować, komentować czy wykonywać inną zaprogramowaną akcję. Taki bot na wejściu otrzyma listę użytkowników i ich ustawienia (globalne lub indywidualne). Bot, przechodząc przez każdego użytkownika, będzie próbował wykonywać określone akcje i jeżeli reguły nie wyeliminują danej akcji, to zostanie wykonana przez bota pewna czynność.

Losowo głosujący bot

Pierwszym zweryfikowaniem poprawności tworzonego API, będzie zaimplementowanie bota losowo głosującego na posty umieszczone w wybranych tagach np. pl-artykuły i inne zweryfikowane tagi. Konto bota będzie udostępnione przez @mmmmkkkk311. Bot ten będzie posiadał także "czarną listę", czyli listę ignorowanych użytkowników. Na taką listę można wstawić ludzi, którzy nie życzą sobie głosów, bądź takich, którzy nadużywają "system".

Bot głosujący na ludzi z listy

Drugim użyciem API będzie dla bota głosującego na ludzi z wybranej listy. Każdego użytkownika będzie można skonfigurować w indywidualnym pliku konfiguracyjnym, bądź domyślnie z globalnego pliku konfiguracyjnego. Do bota będzie dołączony moduł głosujący oraz moduł komentujący. Każdy z tych modułów będzie ograniczony przez pewne reguły. Gdy moduł nie posiada żadnych reguł, to domyślnie nie powinien nic uczynić. Żeby dodawanie modułów było wygodne, każdy moduł będzie zwracał potrzebne ustawienia generowane w pliku globalnym, bądź w plikach indywidualnych. Plik indywidualny tworzy się ręcznie i traktowany jest on jako "nadpisanie" globalnej konfiguracji. Częściowo to wszystko zostało zaimplementowane w dedykowanym bocie, ale tym razem chciałbym to bardziej zuniwersalizować. Jeżeli chodzi o reguły, to przykładową z nich może być reguła dotycząca mocy głosu konta. Jeżeli konto będzie zawierało niewystarczającą moc głosu, to zapisz gdzieś z jaką mocą zagłosować, bądź nie głosuj wcale. W tym bocie zostanie użyta baza danych typu SQLIte (w pliku), aby bot posiadał trwałą pamięć, z której będzie mógł sobie korzystać i aktualizować dane nt. użytkowników z listy.

Podsumowanie

API jest pisane w wolnym czasie i pewnie trochę to potrwa, ale mam nadzieję, że efekty będą zadawalające.
Moją motywacją na stworzenie tego typu API, jest takie, że obecnie każdy tworzony bot jest w pewien sposób dedykowany i każdy musi implementować wszystko od nowa. Z moim API, będzie można albo skorzystać z gotowych botów, albo złożyć go z gotowych "komponentów", albo stworzyć własne komponenty i wstawić je do logiki bota.
Jest to dosyć ambitne zamierzenie, ale sądzę, że po przygotowaniu takiego API, prędkość tworzenia botów zostanie znacznie podwyższona (Przynajmniej w Javie) . Od botów Steem się nie uwolnimy, a jak czegoś nie można opanować, to trzeba to wykorzystać na swoją korzyść.

Źródła do tworzonego API

Wszelkie zmiany w kodzie przesyłam tutaj repozytorium .

Sort:  

Utopian.io – koniecznie! :) Powodzenia i na pewno będę obserwował. Sam Javy nie znam, ale na pewno będę obserwował, bo ta wiedza (jak operować na blockchainie Steem) powinna mi się wkrótce przydać.

Najprościej operować na API steem w takich językach python albo js. Jeżeli chcesz mieć coś fajnie rozbudowanego, to właśnie Java. Jeżeli chcesz zobaczyć i spróbować napisać coś w jsie, to polecam mój poradnik. Jeżeli chcesz zobaczyć przykład kodu, z którego korzysta prosty bot @informator, to polecam zobaczyć tutaj. Jeżeli chodzi o pythona, to jeden z użytkowników polecał mi pythonowe API gdzieś w komentarzach.

Dzięki, na pewno zerknę na te źródła. Ja troszkę te różne biblioteki ogarniałem i stety–niestety na potrzeby pewnego projektu chyba będę musiał podziałać w PHP ze względu na największą popularność tego języka. Mógłbym oczywiście stworzyć wersje w PHP, w Pythonie itd., ale to dodaje zbyt dużo do kosztów utrzymania takiego projektu. Co do API Pythonowego to zapewne chodzi po prostu o steem-python albo sbds.

Tak, to chyba był ten steem-python.

Będę śledził twoje postępy.
Ciekawa inicjatywa.

Bardzo ciekawy artykuł i pomysł.
Powodzenia :)

Fajne, tylko czemu to nie mieści się w jednym pliku mającym z 50 linijek to ja nie wiem :D

Java lubi dużo linijek, a ja jej nie będę żałował.

Good post!
If you want to improve your payouts you can read this SteemIt Guide:

Ultimate guide to SteemIt / https://steewit.com/steemit/@teamsteem/the-ultimate-guide-to-steemit

Coin Marketplace

STEEM 0.19
TRX 0.15
JST 0.029
BTC 63466.72
ETH 2683.95
USDT 1.00
SBD 2.80