Dies ist ein Artikel von @felixxx
Hier ist das gesamte Programm, mit dem @deutschbot wählt.
Die Logik ist ziemlich einfach; Ich werde daran noch etwas mehr arbeiten.
So funktioniert @deutschbot
Code
from steem import Steem
from steem.blockchain import Blockchain
chain = Blockchain()
# Konten, die @deutschbot auf keinen Fall wählen soll; Schema ["konto1","konto2"]:
blacklist = [""]
# Konten, denen @deutschbot vertraut; (Aus Diskretionsgründen geheim):
trusted_voters = ["felixxx"]
# deutschbot's geheimer Schlüssel
pk = ["5AbS0luTg3h3im3R5cHlü553L"]
account = ["deutschbot"]
# Anzahl an 'vertrauenswürdigen' Votes, die @deutschbot genügen ( ist threshold = 1, genügen 2 Votes )
threshold = 1
# Spezieller Dank an @gtg für seine überlegene node
steem = Steem(keys=pk[0], node="wss://gtg.steem.house:8090")
########################################################################
# Schleife über alle Operationen in der Steem Klotzkette
for operation in chain.ops(
filter_by=["vote"]
):
op = operation["op"]
# Obwohl ich oben bereits nach 'votes' filtere, nochmal zur Sicherheit ...
if op[0] == "vote":
comment_voter = op[1]["voter"]
# Falls der 'voter' vertrauenswürdig ist ...
if comment_voter in trusted_voters:
# So schaut sich @deutschbot die Daten an ...
comment_link = op[1]["permlink"]
comment_author = op[1]["author"]
vote_weight = int(op[1]["weight"]/100)
timestamp = operation["timestamp"]
comment = steem.get_post("@" + comment_author + "/" + comment_link)
tags = (comment["json_metadata"].get("tags", []))
category = comment.category
# Prüfung, ob es ein Hauptartikel ist ( kein Kommentar )
if comment.is_main_post():
# Ob es in #deutsch geschrieben wurde ...
if "deutsch" in tags or "deutsch" in category:
# Sicherstellen, dass der Autor nicht auf meiner schwarzen Liste steht
if not comment_author in blacklist:
# Kurze Bildschirmausgabe ( damit ich auch nachsehen kann was @deutschbot eigentlich so macht )
print(timestamp + "vote by: " + comment_voter + " for " + comment_link + " weight:" + str(vote_weight))
counter = 0
# Hier zählt @deutschbot, wieviele vertrauenswürdige Konten den Artikel mochten ...
for avote in comment['active_votes']:
if avote['voter'] in trusted_voters and not avote['voter'] == comment_voter:
print(avote['voter'] + " also liked it")
counter = counter + 1
# Wenn genug vertrauenswürdige Leser den Artikel mochten ...
if counter > threshold:
# Eine Schleife über alle Konten, die wählen sollen ( derzeit nur @deutschbot )
for (k,v) in enumerate(account):
already_voted = False
# Noch eine Schleife über alle 'votes' ...
for avote in comment['active_votes']:
# damit ich nicht versehentlich eine vorherige Wahl überschreibe ...
if (avote['voter'] == v):
already_voted=True
if not already_voted == True:
# Jetzt wählt das jeweilige Konto ( endlich ) den Artikel
try:
steem = Steem(keys=pk[k], node="wss://gtg.steem.house:8090")
comment.vote(100, v)
print("... followed with " + v + " with 100%")
# Falls es Fehler oder Ausnahmen gab beim Wählen, sehe ich das so zu Hause
except Exception as e:
print("... NOT followed with " + v + " because:")
print(str(e))

Zur besseren Verständlichkeit, habe ich das Ganze auf deutsch kommentiert.
Mit diesem Algorithmus wählt @deutschbot jetzt schon seit einiger Zeit von ganz allein.
Dabei schaut er eigentlich nur einigen Nutzern beim Wählen zu und macht es ihnen nach.
Da es derzeit noch recht wenig auf #deutsch zu wählen gibt, ist @deutschbot selbst auch noch nicht sonderlich wählerisch.
Ein großer Vorteil ist, dass @deutschbot nicht schläft und 24 Stunden am Tag aufpasst.
Sinn und Zweck ist:
- Artikel auf #deutsch zu unterstützen
- Programmieren zu lernen und zu üben
- mehr Spaß und mehr Steem für alle
Spezieller Dank geht an @xeroc, der die Python Bibliothek für Steem geschrieben hat und wartet und an @gtg, dessen node ich benutze, um den anderen beim Wählen zuzusehen.
Wahrscheinlich ist das der wichtigste Artikel für den Einstieg, um selber mal einen Bot aufzusetzen! Vielen Dank für deine Pionier-Arbeit in diesem Feld @felixxx!
Kleine Tipp am Rande für alle, die es ausprobieren wollen:
Nicht entmutigen lassen. Irgendwann kriegt man es hin.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Es würde mich freuen, wenn noch mehr Leute beim Basteln mitmachen würden.
Vielleicht hilft der Text ja wirklich :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Du koenntest ein github Projekt draus machen?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Ja, das war eigentlich der Plan.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
gibt es mittlerweile eigentlich ein github repo?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Ja
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Link? :P
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
https://github.com/fxnormaluser/steem-deutschbot
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Vielen Dank für deine Mühen und weiterhin viel Erflog beim verfeinern dieses wunderbaren Scriptes.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Sehr schönes Ding! Habe @deutschbot im aktuellen Artikel erwähnt und verwendet. Mal sehen :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Und wie lässt man so was laufen, @felixx? Gibt es da eine Einführung?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Interessante Artikel, danke.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Gute Idee - obwohl ich die Programmsprache nicht verstehe. :-)
Dank für die Mühe.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Ich überlege schon seit Jahren, ob ich Python lernen sollte.
Habe es mal mit der Programmiersprache Lua versucht, lief ganz gut - jedoch wieder eingeschlafen, weil das als Einzelkämpfer keinen Spaß macht.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Klasse Idee und gut umgesetzt ! Python ist einfach eine großartige Programmiersprache
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hallo @deutschbot, ich habe gesehen, dass du heute ein post von mir gevoted hast.
Passierte das nun automatisch, so wie hier beschrieben? Ich muss so dumm nachfragen, weil ich die technischen Hintergründe noch wenig durchschaue.
In jedem Fall: meinen besten Dank!!!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Das passiert halbautomatisch :)
@deutschbot läuft mit einem Program von mir und wurde von mir und der deutschen Community aufgepowert :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hey @felixxx kurze Frage noch zum threshold:
ich habe den Bot jetzt mit 8 Kuratoren gefüttert, den threshold allerdings (noch) auf 100 weil ich da was mit % im Hinterkopf hatte. Ist der threshold denn abhängig von der Anzahl Curators?
Wieviele Kuratoren hast Du in Deutschbot laufen, damit man mal eine Vorstellung hat wieviele "Stimmen" er abgleicht.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Der post ist über 1 Jahr alt.
Inzwischen läuft der bot nach einem etwas anderen Muster.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit