Steemvote: Automated Steem Voting

in #steemit8 years ago (edited)

Steemvote is a program that automatically votes on posts.

The code is located here, along with the readme below.


Thanks @klye for the art!

Steemvote is more granular than a script that votes for posts by certain authors. Steemvote allows you to configure who to vote for and whether to vote for their replies to other posts.

It also allows you to specify the age a post must be before you vote for it, and the maximum age a post can be as well. For example, you can automatically vote for every post by a user as soon as the post is five minutes old.

Motivation

Historically, a more simple script could do what steemvote does. Now, the distribution of rewards for curation depends on when the vote was cast. Voting for a post immediately after it is created results in severely-reduced curation rewards. So to automate voting, a more complex program is required. This reduces the number of people capable of writing such a program.

With steemvote, everyone has the capability to automate voting for people they want to support.

I know that there is an ongoing debate about the use of bots in Steem. My opinion is that the worst part of voting bots is that not everyone has access to them. Steemvote addresses this problem.

Readme

This is a program that votes for posts on Steem. It uses piston and thus requires Python 3.

The included script, steemvoter, works by monitoring all comments on Steem.
If a comment is eligible for voting, it is stored in a database. The eligible comments
are periodically pulled from the database and voted on after they are a pre-set age.

Installation

$ sudo python3 setup.py install

The above command will install all required dependencies.
You can run steemvoter like so: steemvoter -c path/to/config.json.

Configuration

A configuration file specifies the authors to vote on, the key to sign votes with, etc.
Your configuration file can be supplied with a command-line argument (steemvoter -c path/to/config.json).
If not supplied, steemvoter will look for the file steemvote-config.json in the current directory.

An example config file, example-steemvote-config.json, is supplied.

The following config values are required:

  • authors: A list of authors, and optional values for each (see below).
  • voter_account_name: The name of your account.
  • vote_key: The private key used to sign votes with (This should be your "Posting" key).

Authors

The authors list in your config file contains a list of objects.
Each object needs a name value, which is the name of the author.

Optional values for each author:

  • vote_replies: Whether to vote on all replies the author makes, in addition to their regular posts (Default: false).
  • weight: The weight to vote with. 100.0 represents an upvote, and -100.0 represents a downvote (Default: 100.0).

Voting Rules

The following values are optional, and specify how to vote:

  • max_post_age: The maximum age of a post (Default: 2 days).
  • vote_delay: The age a post must be before it is voted on (Default: 1 minute).

These values can be specified as seconds or as human-readable strings (e.g. "max_post_age": "2 days").

Database

By default, the database of posts will be a folder called database in the current directory.
This behavior can be changed using the database_path config value.

RPC

If no RPC options are specified, a public node will be used.

Available RPC options:

  • rpc_node: The URL of the node to connect to.
  • rpc_user: RPC username to use.
  • rpc_pass: RPC password to use.

Example Configurations

Upvote every post by @klye, including his replies to other posts.
Wait until posts are 30 seconds old to upvote them.

{
    "authors": [
        {"name": "klye", "vote_replies": true}
    ],
    "vote_key": "5XX...",
    "voter_account_name": "myname",
    "vote_delay": 30
}

Upvote the posts by @klye, but not his replies to other posts.
Do not vote if his post is more than 2 hours old.

{
    "authors": [
        {"name": "klye"}
    ],
    "max_post_age": "2 hours",
    "vote_key": "5XX...",
    "voter_account_name": "myname"
}

Please open issues on Github for errors you encounter.

Possible Future Goals

  • Monitoring of voting power so you don't vote too much.
  • Per-author vote delays.

Credits

Thanks to @xeroc for the Python 3 library steemvote uses.

Sort:  

Thanks for posting this. Very useful!

Doing good things here Kef! keep up the great work.

I'm drawing you a #klyeart for a preview. This post needs one and is great.
I'll post it on this comment when I am done it. #randomactofklyeart

Edit: Eh I'll wait to get ahold of you and give it to you personally and decide if you want to use it. :)

Props to @klye, who is one of the authors I made steemvote to support. You're even in the example configurations section of the readme.

Thanks for the shoutouts! Glad to see a bot like this released for guys like me without the time at the moment to code one!

Fantastic work on this tool @kefkius. The readme is very clear and straightforward.

Awesome , great to see more steemit code turning up on github .
Will definitely investigate this properly tomorrow, you have a new follower :)

Very cool! I've been meaning to look into getting my own curator bot for a while now. Hopefully I'll check it out soon.

If you made a "how to" to use it you would do a greater favor. :D

I thought that the README was pretty detailed, along with example configurations :(

Do you mean something like a more detailed installation guide? Or a better configuration guide?

Post the readme in here... And then link to the download..?

That would make for more reading / ease of access to info. :)

Pretty awesome kef good stuff here