
This is the underlying functionality that is used. It now has an additional new flag-authority @fubar-bdhr along with no votes for negative reputation accounts. It will also not upvote anything that @steemcleaners or @cheetah upvotes because an upvote from @cheetah now a days is really just another way of flagging accounts without the person caught plagiarizing knowing about it. Also, @blacklist is being updated and is not active right now as it undergoes rules-changes. There is also no longer any 40 STEEM removal fee if you should be flagged by that account.
And last but not least - we have upgraded our Guild-Server with 16GB of RAM to be able to handle all the accounts that participate in the guild at the moment. Keep Joining, it is a good guild!
#############################################################################
# THE WINFREY BOT #
# Created by: @furion, @contentjunkie, @anyx, @inertia, @fyrstikken, @pfunk #
# #
# Want to run the bot but no way to do it? Join http://guild.steemspeak.com #
#############################################################################
from piston.steem import Steem
from piston.steem import BroadcastingError
import threading
import time
import random
import csv
# my favorite blogs on steemit
top_writers = []
# add my favorites
my_favorites = []
# Skiplist functionality has not been added yet, this will be your personal blacklist
with open('skiplist.txt', mode='r') as infile:
reader = csv.reader(infile)
for rows in reader:
v = rows[0]
top_writers.append(v)
# Add your Account, Posting key for voting and/or Active Key for tipping
my_subscriptions = top_writers + my_favorites
account = ["YOURACCOUNTNAME"]
posting_key = ["YOUR PRIVATE POSTING KEY HERE"]
active_key = []
vote_delay = random.randrange(1800,3600)
upvote_history = []
def feed():
###############################################################################
# Starting The Bot #
###############################################################################
print("Upvote Bot Started - Waiting for New Posts to Upvote!")
steem = Steem(node='wss://node.steem.ws', wif=posting_key[0])
for comment in steem.stream_comments():
if True:
###############################################################################
# Just making sure we vote for the post and not a comment. #
###############################################################################
if comment.depth == 0:
###############################################################################
# check if we already upvoted this. Sometimes the feed will give duplicates. #
###############################################################################
if comment.identifier in upvote_history:
continue
print("New post by @%s %s" % (comment.author, url_builder(comment)))
workerThread = threading.Thread(name=comment.identifier, target=worker, args=(comment,))
workerThread.start()
###############################################################################
# Tipping Function send $0.001 in STEEM #
###############################################################################
def send_a_tip(author):
steem = Steem(node='wss://node.steem.ws', wif=active_key)
steem.transfer(author, 0.001, "STEEM", memo="Keep Blogging", account=account)
def url_builder(comment):
return "https://steemit.com/%s/%s" % (comment.category, comment.identifier)
def worker(worker_comment):
time.sleep(vote_delay)
try:
for (k,v) in enumerate(account):
worker_steem = Steem(node='wss://node.steem.ws', wif=posting_key[k])
upvote_comment = worker_steem.get_content(worker_comment.identifier)
###############################################################################
# Checking if Post is flagged for Plagarism & Spam #
###############################################################################
names = ['blacklist', 'fubar-bdhr']
if ( '-' in str(upvote_comment['author_reputation']) ):
print("@%s %s ====> Upvote Skipped - Author rep too low")
return False
for avote in upvote_comment['active_votes']:
if (avote['voter'] in names and avote['percent'] < 0):
print("@%s %s ====> Upvote Skipped - Flagged by blacklist or Fubar-bdhr")
return False
# Checking if we already voted for this post:
names = ['YOURACCOUNTNAME']
for avote in upvote_comment['active_votes']:
if (avote['voter'] in names):
print("@%s %s ====> Post Upvoted already")
return False
# Checking if there is markings from Cheetah or Steemcleaners:
names = ['cheetah', 'steemcleaners']
for avote in upvote_comment['active_votes']:
if (avote['voter'] in names):
print("@%s %s ====> Post Marked by SteemCleaners or Cheetah")
return False
# If Everything is OK - We now go ahead and upvote this post with an upvote #
################################################################################
# UPVOTING ZE POST #
################################################################################
upvote_comment.vote(1, v)
# #
################################################################################
# Upvote has now been done and it will now print a message to your screen: #
################################################################################
print("@%s %s ====> UPVOTED")
upvote_history.append(upvote_comment.identifier)
except BroadcastingError as e:
print("@%s %s =====> ERROR - Upvoting failed...")
print("We have probably already upvoted this post before the author edited it.")
print(str(e))
################################################################################
# TIPPING AUTHORS YOU REALLY LIKE REQUIRES ACTIVE KEY #
################################################################################
if upvote_comment.author in my_favorites:
send_a_tip(upvote_comment.author)
print("====> Sent 0.001 STEEM to @%s" % upvote_comment.author)
# #
################################################################################
if __name__ == "__main__":
while True:
try:
feed()
except (KeyboardInterrupt, SystemExit):
print("Quitting...")
break
except Exception as e:
traceback.print_exc()
print("### Exception Occurred: Restarting...")
# If you want to add more complexity to the Bot, feel free to do so and share it with
# The Steemit community on your own Blog.
Want to optimize or make this bot even better and smarter? Take the code and do with it what you want and post your update on your own steemit-account. This bot has been made by: @furion, @contentjunkie, @anyx, @inertia, @fyrstikken, @thebatchman & @pfunk. It is designed to upvote most people and cause as little damage as possible.
One day I hope @ned and @dan / @dantheman find some time to put this kind of functionality directly on @steemit so that it is possible to do tasks like these without having to use a third party server or application.
