Post Promoter JavaScript Voting Bot - Update 7 - Fighting Spam and Abuse!

in utopian-io •  5 years ago  (edited)

image source:

As I mentioned in my last update, my next focus for the Post Promoter voting bot software was implementing a number of features to help curb spam and abuse on the Steem blockchain - or at least prevent it from buying upvotes.

The majority of the features that have been implemented were suggested by @themarkymark who, along with @patrice, does a lot of great work on the spam and abuse fighting front. I would like to make sure they get the recognition they deserve for that. I don't have the time to do what they do, but I try to contribute what I can through my development efforts to support them.

Anyway, let's get right down to it...

Local / Remote Blacklist File Support

There is now a configuration setting called "blacklist_location" in the config.json file which allows the bot owner to specify the location of the blacklist file that the bot should use. The location can be either a file location on the local server, or a URL of a remotely hosted blacklist file. This will allow bot owners to set up a global blacklist file that can be easily used by all bots running the Post Promoter software.

The blacklist file (whether local or remote) should simply be a text file with one Steem account name per line. You can see an example global blacklist file here: and set up in the Post Promoter software to use it like so:

"blacklist_location": ""

Refund Options for Blacklisted Bids

There is now an option for whether or not blacklisted users' bids should be refunded to them. In all cases that I'm aware of bot owners do not refund bids from blacklisted users, however I believe that users of the software should still have the option to do so if they wish.

"refund_blacklist": true/false,

Additionally, bot owners now also have the option to automatically donate bids from blacklisted users to an account of their choice. The idea being that such bids can be automatically donated to a spam/abuse fighting service such as @steemcleaners, @spaminator, @cheetah, etc.

"blacklist_donation_account": "steemcleaners"

Finally, the bot now replies to blacklisted users with a 0.001 STEEM or SBD transfer (whichever currency the bid was in) informing them that their account has been blacklisted from using the bot.

Spam/Abuse Flag Signal Accounts List

The third change that was added to help fight spam and abuse was to add a list of accounts that act as signals for spam/abuse posts. This means that when a bid comes in for a post, the software will check if any of the accounts on the list have flagged that post, and if so it will consider the post blacklisted and handle the bid amount based on the blacklist settings mentioned above.

"flag_signal_accounts": ["spaminator", "cheetah", "steemcleaners", "mack-bot", "blacklist-a"]

So for example if a bid comes in for a post that @steemcleaners has flagged, then based on the above list the software will consider that an invalid bid, send the sender a 0.001 STEEM/SBD transfer informing them their bid is invalid because the post has been flagged as spam or abuse, and donate the bid amount to the specified spam/abuse fighting service.

Fixed Issues with Auto-Failover

This is unrelated to fighting spam and abuse, but since the previous update where the auto RPC node failover feature was implemented a few issues have cropped up with it. Namely that sometimes a transaction actually fails for a legitimate reason not caused by an issue with the RPC node but that still triggered a failover. Then the transaction was re-tried, failed again, and triggered another failover. If for any reason there were a couple transactions that failed in a short period of time a whole bunch of failovers were triggered which caused "mayhem" as it was kindly put in the reported issue :-)

Luckily the fix was pretty simple - the code now checks if a failed transaction was due to an "assert_exception", meaning there was an error with the transaction itself, not with the RPC node, and if so it doesn't include that failure in the error count for triggering a failover.

Show Some Code!

It was suggested in my last post that I take some time to show the code behind some of these changes - which is a great idea since this is a development-focused site and all! Let me know what you think of this and if it's received well I'll continue to do this in all my posts going forward.

Here is the snippet of code that checks if an account on the "flag_signal_accounts" list has flagged/downvoted the post:

steem.api.getContent(author, permLink, function (err, result) {
        if (!err && result && > 0) {
            // Check if this post has been flagged by any flag signal accounts
              var flags = result.active_votes.filter(function(v) { return v.percent < 0 && config.flag_signal_accounts.indexOf(v.voter) >= 0; });
              if(flags.length > 0) {
                handleFlag(sender, amount, currency);

Got it? Don't worry - I'll break it down a bit! The first step is to load the post content which is also necessary to check that it's a valid post in the first place. That is done using the steem.api.getContent() call in the Steem JS library.

I check to make sure it doesn't return an error and that the "result", which is an object containing the post data, has an "id" that is greater than 0 - meaning it is a valid post. Then I check if there is a "flag_signal_accounts" property set in the config.json file using "config.flag_signal_accounts".

The next line is the actual meat of the code:

var flags = result.active_votes.filter(function(v) { return v.percent < 0 && config.flag_signal_accounts.indexOf(v.voter) >= 0; });

Let's take that one piece at a time. First, if you remember, "result" is an object containing all of the data about the post. "result.active_votes" is an array of all of the votes data (including upvotes and downvotes/flags) that have been submitted for the post so far.

I call the filter() function on the list of active votes for the post which filters out only the votes in the list which return "true" when passed through the function supplied as the first argument. The function is as follows:

function(v) { 
   return v.percent < 0 && 
        config.flag_signal_accounts.indexOf(v.voter) >= 0; 

The "v" parameter represents an individual vote object. Here we check if the "percent" property of the vote is less than 0. This means that the vote is a downvote or flag. The "percent" property indicates the weight of the vote, so if you give a 20% upvote on a post then the "percent" property for your vote will be 2000 (Steem multiplies all percents by 100). Similarly if you give a 20% downvote on a post then the "percent" property will be -2000.

So we check simply if the "percent" property is less than 0 to indicate a downvote of any weight, and then next we check to see if the list of "flag_signal_accounts" in the config.json settings contains the name of the "voter" property in the vote object. If it does then that means one of the accounts in the list downvoted the post and the function will return the value "true".

Finally we check the "length" of the result of the filter call to see if one or more of the votes in the active_votes list for the post returned "true" from our function. If so then that means the post has been flagged by an account on the list and should be treated as blacklisted.

If that happens then the handleFlag() function is called which handles notifying the sender that their post has been flagged and their bid is invalid, and optionally donating the bid amount to the specified spam/abuse service. Then a "return" statement is executed which exits the current function call so nothing else happens with that particular bid.

Thanks for your support!

Wow that was much longer than most of my contribution posts! If you've made it this far then thank you very much for reading...I hope this has helped you learn a bit about how these things are developed! As always I want to thank everyone who has helped and supported me in creating this software. Please stay tuned for more updates in the coming weeks!

Links to relevant commits:

Posted on - Rewarding Open Source Contributors

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Thank you for the contribution. It has been approved. Just wanted to make sure that the Image used in the post is made by you, if not, can you please state the Source.

You can contact us on Discord.

Updated to state image source, thanks for pointing that out!

Pixabay has no requirement for attribution. They are CC0

@yabapmatt this is a great service you have. Is there any way for the bot to "not" post the upvote message? Thanks so much. (Voted for you as a witness by the way) :-)

The decision over whether or not a bot comments on posts it votes is up to the bot owner. I've considered removing the comment from @postpromoter but it provides significant visibility to the service and to myself. Additionally some people like the messages as a sort of disclosure that the post has received a paid upvote.

So for the time being I intend to continue having the bot comment on posts it votes, but there are some other bots, like @buildawhale, that don't leave a comment as far as I am aware.

Thank you for your support!

We leave a comment, we just had to turn it off for a while for technical reasons. We turned it back on recently. There are also legal issues of disclosing paid promotion. Not sure where the line falls but it is certainly at least a gray area.

Thanks for the correction! I should probably add an indicator on the site for which bots leave a comment vs which don't (assuming there are any that don't right now) but need to make sure it's not confused with the icon for whether or not the bots allow upvoting comments vs top-level posts.

Also I'm pretty sure there's no legal requirements regarding disclosure of paid promotions, but if you have evidence to the contrary I would be interested to see it!

The spam and abuse protection are great to build value and help out good content creators. Thanks for providing well commented code and breaking it down.

  ·  5 years ago (edited)

Thanks for the awesome post. Should I be a Steem witness to have my own bot?

Being a witness is completely unrelated to running a voting bot.

@yabapmatt, please forgive me if this is off-topic, but I'd like you to consider removing @boomerang from the list of upvote bots as it is either broken or intentionally stealing people's money. Simply go to @boomerang and look at the list of complaints in the blog comments. I personally think it's intentional and have lost money because of it. Please show me that you are a responsible "bottracker" and will do the right thing. Thank you.

Thank you for reaching out. I will speak to the owner of the @boomerang bot and see what is being done about any issues it is having. I definitely remove bots that are not working properly or scamming users from the site, but @boomerang has been around for a long time and I do not want to make any decisions too hastily.

I understand and thanks for your reply! I am relatively new here, and this was my second or third time using boomerang and I've only had the one problem. My concern came when I saw how many others this is happening to. You have renewed my faith in Thanks for your service!

@yabapmatt was there a resolution or answer? Honestly there seems to be a lot going on with the bots lately as I'm seeing more and more complaints. I've stopped using them altogether because I cannot tell which ones to trust anymore. Your help on this matter would help many more than myself. Thank you.

@artopium yes I have spoken to the owner of @boomerang and it seems they have been having some technical issues lately. He has assured me that they are working on it and plan to refund anyone who had a missed bid including yourself.

As for being able to trust the voting bots my recommendation would be to use the ones with both the auto-refund icon and the purple check mark icon as those will be the most reliable.

I run the @postpromoter voting bot myself and personally guarantee that it will work correctly or your money back.

great guy @yabapmatt
you have been very resourceful and valuable to us especially with your website for bots. my question is,
how do one know the list of bots that upvotes instantly withing 1 min of paying for bot from those that are bid based and can last hours.
also how do one seperate those bots that leave a comment from those that dosnt leave a comment but srites in wallet informing you name of bot used in upvote. like the latter for privacy sake.

more so, how do one know the lowest and highest bid and value of the bid at a particular time?
how long does bot using last , will it be affected in next hardfok update or has it come to stay?
need proper guide to use the service better

The bid-based voting bots section lists all of the bid-based bots that only vote every 2.4 hours or so. You can try the Content Promotion services section for quicker upvotes, although I don't know if they will be within 1 minute or not.

I don't currently show which bots leave comments on posts and which don't, but if you just check some posts that the bot has voted on recently you can see which ones comment.

I don't know exactly what will be in the next hardfork, but based on what has been announced it should not have any effect on voting bots. In general there's nothing that can really stop people from selling their votes.

i think you are right since steemit is all about freedom and these bots do help a lot to keep us minnows abreast with top whales and a good business option to gain some extra steem and sbd. thanks and i hope in your updates or upgrades you seperate those who comment from those who dont cos some use it to gain double by advertising in folks comment section which many of us dont find funny. thanks once more for your time and good works

Thank you for the contribution

Hi Yapbamatt, love to see how the tool is improving. I would like to see some features in the future though;

  • Bots need to stop processing bids when the timer is off; i.e.; I have seen Boomerang bugged for like 10 minutes and users keep sending bids.
  • An improved calculation to show users that for X amount of SBD the return is not 100% liquid, a part would be in SP, which normally is much less than the SBD value. I believe many users lack education on how it works, even more how the STU is calculated.

Thanks for reading and look forward to a better bid market to be created in the near future. Highly appreciate your work.

Hey @yabapmatt! I actually just set up a bot using your postpromoter code and it works wonderfully! The only issue I have.. I would like to have it listed on the bot tracker website.. but I'm running the bot from my laptop through a personal hotspot. I can't get an SSL certificate as far as I know... Please get back to me when you can regarding the matter. I want my bot to only upvote posts less than 4 hours old, I think that it's the first of it's kind, that I've seen! (At least on the website! :P)

Thank you in advance!

I'm guessing you've been busy, just wanted to check up on this and see if you'd be willing to list it. If so, I will delegate power to it and set it to run. Let me know when you can. Thank you! :)

I've set it to accept posts up to 6 hours old and a max bid of 0.01 to ensure that it gets shared between more people and those with more money don't just come in and suck up all the vote's value. Get back to me when you can, hope all is well @yabapmatt! :)

  ·  5 years ago (edited)

And I have more money that I plan on buying power with, so it will actually be profitable for the bidders if I get the green light. lol

Sorry to be a bother.. I just noticed you had replied to other people recently..
I was still wondering if I could get listed on your site.
I am holding off on buying power for the bot until I have the final word from you about the SSL and hotspot situation.
Thanks again. :)

I travel for business, so I always have my laptop on me.
It runs basically 24/7 and if it were to shut off, it would be in my immediate vicinity, so I could restart it within minutes in the event of a failure of some sort. :)

Hello, I've asked this before to some one in a post before, but I never got an answer.... What exactly is considered abuse? using the bot too many times or something? Are you allowed to use it once a day?

There isn't a clear cut definition of what is considered abuse, but usually it's pretty clear cut. Abusers typically make many posts a day with no real content, often on multiple accounts, and use bots to constantly upvote all of them.

If you are writing actual content and using the bots to promote it you should not have any problem and you can use them more than once a day.

ok, great. Thank you. I wanted to make sure that as long as I was making a good post, that I could use any number of bots.

Hi pal. Good work on the vote bot tracker. I just dropped you a witness vote.
please upvote me

I like the writing of your article is very interesting people to comment on your article ,,,
I want tips and tricks from you ,, please help

I like your words that are highly motivated ,, I want to ask for tips and tricks
from you how to write interesting ,, please help.


good job thank you @bilqis07

Woo-hoo!! New user here and was already super bummed by all of the spammy garbage. Keep fighting the good fight chee-ya!

Congratulations @yabapmatt, this post is the tenth most rewarded post (based on pending payouts) in the last 12 hours written by a Hero account holder (accounts that hold between 10 and 100 Mega Vests). The total number of posts by Hero account holders during this period was 401 and the total pending payments to posts in this category was $14210.62. To see the full list of highest paid posts across all accounts categories, click here.

If you do not wish to receive these messages in future, please reply stop to this comment.

I need soo much of support from all off u plzz upvote my post
Nd promote it...
I am new in steemit plz help

This is a very important step towards progress. Good to see that people are actively working to make this a better and cleaner place. Thank you :)

I like good your sharing. So @wefayss will give you 0.01 SBD :)

Hey @yabapmatt I am @utopian-io. I have just upvoted you!


  • You are generating more rewards than average for this category. Super!;)
  • Seems like you contribute quite often. AMAZING!

Community-Driven Witness!

I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!


Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord

Why i was blacklisted by steemit? ?please refund my sbd @yabapmatt

You are not currently on the blacklist for the @postpromoter bot and your post will receive an upvote at the end of the next bidding round.

If your name is on the blacklist linked to in this post it is because some of the other bot owners have considered you to be spamming or abusing the system in some way.

Saya tidak tahu, saya belum mengerti bagaimana cara bermain di steemit atau utopian io
Saya harap bimbing saya .
Terimakasih .

"refund_blacklist": true/false,

Upvote done bro i need you's support ...visit to my blog bro tnx...

What a great contribution to our community.
Go ahead with this valuable contribution to all of us...
Thank you from #venezuela .

Nice post

Thank you for your time and support! For sure you have an important role in the steemit community! In a couple of days, there will be another postpromoter based bot running by my support, with this most recent update code.

Good pot

This is to request help from you please. my bidbased bot name is manitarkc

ohh thats pretty cool.... is there any other contest coming in ?

thats pretty cool to know.
thanks for sharing

Excellent publication, this post is very good

  ·  5 years ago (edited)

Hey @yabapmatt, I'm still pretty new here, only been a steemian a week. But early on, I learned about your voting bots and went all in (even tho I don't know what any of your coding means lol)
Anyways, I've had a great time using the bots to get some recognition for my posts and make a little extra money. Hopefully I've been doing things right so far. I definitely don't want to get blacklisted or abuse the system.

Do you have any examples or an article you could point me to of people abusing the system? or reasons to get flagged? In my eagerness to get upvotes and recognition, I definitely don't want to do anything deemed inappropriate.

Thanks in advance

I saw the good post. I also followed and botting. Come visit my blog when you can.


Thank for you contributions. Keep spirit

@yabapmatt I’m not sure how postpromoter works, but a friend I trust uses it, so I gave it a go.

Hope it helps. Thanks, Yahia (Egyptian writer)

@yabapmatt, No matter approved or not, I upvote and support you.

Sounds like very good things.

There are literally many people who post a ton of content by copy pasting and then buy upvotes. I hope this system helps fight the abuse and send them a lesson.
I also think that there should be an option to appeal. If some one wants to repent their mistake then we should give them a chance.

Hello @yabapmatt i have message you in Github , sir i am making bit bot so i dont know somethings like what is api how i make my own bot api ? can you make a video for me to guide i think it i will cost 1 hour , but it would help me alot becoz i am student i know the basic so connect with servers and sites with node.js i dont know please help sir

I am vote,,and follow,,,follback

Geez I can't keep up with all this tech. Does this mean that I can become a trillionaire if I levergae all these bots slowly? This is very exciting work you got going on @yababpmatt..

You got a 100.00% upvote from @canalcrypto courtesy of @yabapmatt! pls follow and upvote me i also doing this.... pls

@yabapmatt this is a wonderful idea but how can we keep the list clean? Should we check the upvotes manually to update our blacklist or could we think of something like a curated list made by the community? Thanks again for the amazing job you are doing!

very nice information thank you sir for share

Nice post.

I need your help.

Great works for helping the existence of platform, keep it hard @yabapmatt

Whats going on with the bid bots extending their voting rounds now and days so they can collect more sbds and drive percentages down? I cant help but feel conned and taken advantage of. Any input anyone?

Hi @dynamicgreentk - is there a specific voting bot that you noticed has this behavior? As far as I am aware the majority of the voting bots end the round and start voting as soon as they reach 100% voting power.

I have been using minnowbooster the past couple of weeks, but the voting power has been lower than usual. The bot my buddy used had the same problem. i used appreciator last night. My buddy got a 270% instead of a 400% upvote so i saw that as fair but i went from 330% upvote to after the extended round to 200%. Maybe theres a weird lag? Before using minnowbooster i had no problems like this before using the big bots. But i am new and have only been on here for not even 2 months. Thank you for your reply.

Minnowbooster is not a bid-based voting bot so they provide a fixed rate of return and there are no "rounds". I don't know how appreciator works because I don't run that bot nor does it use my software.

In general for bid-based voting bots I recommend using ones which have both the purple check-mark icon and that refund invalid bids as those are the most reliable.

Thank you i appreciate your response! I really do! I am seeing a very real opportunity to be a full time stay at home dad with steemit. While i have your ear... Im getting good upvotes using i feel im borderline spamming . its original memes created by me however. Is there an amount of memes or posts i should consider capping myself off at as to not break any rules im unaware of?

Being able to work on Steem full time instead of just on the side is one of my dreams as well. I could in theory do it now but it's still to risky in my opinion so keeping my day job for the time being.

Regarding decentmemes, i took a look at your posts and I think that you can get much more than the few cents worth of upvotes you're getting on your memes if you spent more time and wrote some helpful/interesting blog posts.

You're not breaking any rules or anything, but it does seem a bit spammy and I don't think overall that will help you grow a following and start earning some real rewards on this platform.

Please return my 2.100 SBD

Hi @kanakislam, you received the upvote that you paid for from @postpromoter on your post. Why do you feel that your SBD should be returned?

Upvote Me

Pretty nice improvement. Thanks for the help 👌🏻

please refund or upvote me, i send 2 sbd and I have not received the vote @yabapmatt

Hi @josegregorio - I have just sent you a refund. I'm very sorry that your bid got missed! It looks like the Steem API nodes have been having some issues today and that has caused some missed bids. Please let me know if you experience any other issues and I will work to resolve them as quickly as possible.

hi @yabapmatt
i had send 4 SBD 7 hours ago but didnt get any upvote yet!
kindly upvote or refund


You have been refunded as well.

thanks for your kind-job

Thanks, i have my sbd.

I am very like your photo because is photo very funny

I transferred 8sbd but I got $14 upvote Screenshot_20180209-084208__01.jpg @yabapmatt

Hi @pogaku95, the @postpromoter bot (like all other bid-based bots) works on a bidding system, so the value of your upvote is determined by the amount of other bids that were sent in the same round.

  ·  5 years ago (edited)

This means I lost my sbd ? Actuall worth of 8 and is $32-$$35 upvote but now I got 4sbd upvote worth $13-$15.6 ; can I get 4sbd refund?

Your math is a little bit off, 8 SBD at current prices is worth about $28 and the $14.29 vote that you received is worth about $24. There is no guarantee on the value of the vote you will receive from a bid-based bot since as I mentioned it is based on the amount of bids that come in each round. There are many very clear warnings about making sure you understand how these bots work on the bot tracker website for this reason.

In any case, if your post is of high quality then you should end up with a positive overall return on your investment due to the increased visibility you have received from the bot's vote. This is the real purpose of these bots - to promote your content - not to make a quick buck buying a vote that's worth more than you paid.[email protected] i love 2sbd in upvote 3 loss i am kek gitu @ I am disappointed to do business with you terimaksih

thanks for the nice work and sharing.
I will continue to share quality and original content and I will wait for you to bloom.