Repository
https://github.com/holgern/steemrewarding
steemrewarding
steemrewarding is a new feature rich auto voter for the steem blockchain. It can be found at: https://steemrewarding.com. The @rewarding account is used for voting.
As soon as posting authority is given to @rewarding by steemconnect, vote rules can be created and posts or comments will be automatically upvoted when fitting.
It is now possible to create two rules per author, one for posts and one for comments. Each rule has the fields:
voter
- account name of the voter, must has given posting authority to @rewarding. Cannot be set at the homepage, as only rules for accounts for which I have the keys can be added or edited.author
- steem account for which the rule applymain_post
- defines if the rule apply for posts or for commentsvote_delay_min
: - Whenvote_when_vp_reached
is False, the post/comment is voted when the post isvote_delay_min
minutes old and all other rule parameter are fitting.vote_weight
: - 0% - 100% defines the vote weight. (Can be modified by settingvp_scaler
)enabled
: Rule is enabled, when this is set to Truevote_sbd
: Not active yetmax_votes_per_day
: limites the number of votes (votes are counted in a sliding window), only votes given by the auto voter are counted.max_votes_per_week
: limites the number of votes (votes are counted in a sliding window), only votes given by the auto voter are counted.include_tags
: Comma separated list of tags that must be included. E.g. python,c means the post/comment must either have a python tag or a c tag. Tags can be combinded with &. E.g. python&c,js. In this case, posts/comments are voted, when they have a js tag or a python and a c tag.exclude_tags
: Same asinclude_tags
, posts/comments with tags that were added here, will not be upvoted. The tags, must be comma separated and the & sign can be used. E.g. python&c, js. In this case, posts/comments that have a js or a python and c tag will not be upvoted.vote_when_vp_reached
: When enabled, posts/comments will be upvoted when themin_vp
is reached.min_vp
: Minimum vote power applies for timed and vp based votes. Whenvote_when_vp_reached
is False and vp is belowmin_vp
, the comment/post will not be upvoted.vp_scaler
: When higher than 0, the vote weight is reduced by this scaler depending on the votepower. E.g.vp_scaler
is 0.5, then the vote weight is multiplied by 1 - ((100-vp) / 100 *vp_scaler). When vp is 100, the vote weight is not changed. When vp is 80, the new vote weight is multiplied by 0.9.leave_comment
: not implemented yetminimum_word_count
: When the post/comment word count is below, the post/comment is not upvoted.include_apps
: comma-separated list of apps that will be upvoted, when set.exclude_apps
: comma-separated list of apps that will not be upvoted, when set.exclude_declined_payout
: When True, posts/comments with declined payout will not be upvoted.vp_reached_order
: Whenvote_when_vp_reached
is True, this defines which posts is upvoted first. The pending post with the lowestvp_reached_order
is upvoted first.max_net_votes
: When set, the post/comment is only upvted when the number of given votes is below.max_pending_payout
: When set, the post/comment is only upvted when the pending payout is below.include_text
: When set, the post/comment is only upvoted when its the given text is included.exclude_text
: When set, the post/comment is not upvoted when its the given text is included.
Database structure
Posts/comments for which a rule exists, are stored in the posts database. New posts/comments are found by streaming all blocks. This is performed in the stream_blocks.py
script.
Then in the apply_vote_rules.py
script, not processed posts/comments that were stored in the database are checked if one rule applies. When this is the case, teh authorperm with some addional information is stored in the pending votes database.
Finally, the upvote_post_comments.py
script checks of one of the pending votes can be upvoted. Sucessfully upvoted posts or comments will be added to the vote log database.
Homepage
Each steem user can add rules and use steemrewarding through the https://steemrewarding.com homepage.
After logging in with steemconnect (I'm using the @beem.app steemconnect account for this)
The homepage can be used:
The steemconnect link is only be used to verify the steem account.
- Show rules: prints all stored rules. It is possible to edit and delete rules here.
- Add a new rule: Can be used to create a new voting rule.
- Show vote log: Shows sucessfully upvoted posts
- Show Pending votes: shows pending votes for the current logged in account.
- Logout can be used to remove the steemconnect token from the session.
Technology Stack
The postgres database is used to store rules, posts, pending votes, given votes and some more information. The scripts are programmed with python 3 using beem. Python3 + flask is used for the homepage.
Roadmap
The not used rules: vote_sbd
and leave_comment
will be added next. When leave_comment
is set, a comment from the voter with a defined text should be broadcasted.
I plan also a user settings page, where global parameter can be set.
Vote trails is also a missing feature which will be added.
The @rewarding account was used before for upvoting posts, when a command was written in a comment. This functionality will be added to the github in the next update. It will then be possible to upvote a post/comment without having a rule for but, but writing a command in a comment below this post.
How to contribute?
The issue tracker at https://github.com/holgern/steemrewarding can be used for feature wishes, ideas, and bug reports. Pull request can also be created after forking the repository for improving the code or the homepage.
I created also a new discord server for discussing everything about steemrewarding:
https://discord.gg/qpsR8hf