drdoogie.rb - Vote Trail Script

in radiator •  2 years ago 


  • YAML config.
    • scale_votes - scale votes in %
    • max_age - only vote if the post is under this number in minutes
    • allow_upvote - trail upvotes
    • allow_downvote - trail downvotes
    • enable_comments - vote for comments
    • skip_tags - do not vote if the post contains any of these tags
    • only_tags - only vote if the post includes at least one of these tags


Dr. Doogie (drdoogie.rb) is a voting bot that will trail the votes of other accounts in order to then mirror their voting pattern.


To use this Radiator script:

$ sudo apt-get install ruby-full git openssl libssl1.0.0 libssl-dev
$ gem install bundler
$ gem install bundler

I've tested it on various versions of ruby. The oldest one I got it to work was:

ruby 2.0.0p645 (2015-04-13 revision 50299) [x86_64-darwin14.4.0]

First, clone this gist and install the dependencies:

$ git clone https://gist.github.com/d57c9bc744f05ada01d173521c01df8a.git drdoogie
$ cd drdoogie
$ bundle install

Then run it:

$ ruby drdoogie.rb

Check here to see an updated version of this script:



Typically, you can upgrade to the latest version by this command, from the original directory you cloned into:

$ git pull

Usually, this works fine as long as you haven't modified anything. If you get an error, try this:

$ git stash --all
$ git pull --rebase
$ git stash pop

If you're still having problems, I suggest starting a new clone.


Problem: What does this error mean?
drdoogie.yml:1: syntax error, unexpected ':', expecting end-of-input
Solution: You ran ruby drdoogie.yml but you should run ruby drdoogie.rb.

Problem: Everything looks ok, but every time drdoogie tries to post, I get this error:
`from_base58': Invalid version (RuntimeError)
Solution: You're trying to vote with an invalid key.

Make sure the .yml file voters item have the correct account name and WIF posting key.

Problem: The node I'm using is down.

Is there a list of nodes?

Solution: Yes, special thanks to @ripplerm.


See my previous Ruby How To posts in: #radiator #ruby

Get in touch!

If you're using drdoogie, I'd love to hear from you. Drop me a line and tell me what you think! I'm @inertia on STEEM and SteemSpeak.


I don't believe in intellectual "property". If you do, consider drdoogie as licensed under a Creative Commons CC0 License.

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:  

noob here,
I gave the above a go with my novice skill, face with this error when i call ruby drdoogie.rb

Error: Failed to open TCP connection to steemd.steemit.com:443 (getaddrinfo: No address associated with hostname)

Appreciate any guidance here. Thank you

I haven't updated this gist in a while. You can fix it by either doing a bundle update or by modifying drdoogie.yml and changing steemd.steemit.com to api.steemit.com (or both).

Thank you @inertia! #follow & #upvoted(no value, sorry)

dear @inertia: I can successfully upvote but only for ONE trail account. Pls suggest how it can be done for many trail accounts


Wow. That solves a problem of how I was going to trail Banjo without signing up on Streemian. Thanks!

Awesome work @inertia! This looks like a powerful bot!

Awesome. You rock!

By the way, I added the ability to select between irreversible and head block modes. I think I'll keep the default irreversible because it tends to be more reliable. But head has its own delay of 6 seconds, which should be long enough to avoid a race condition.

To try out this change, you'll need to clone from the develop branch:

$ git clone https://gist.github.com/d57c9bc744f05ada01d173521c01df8a.git drdoogie
$ cd drdoogie
$ git checkout develop
$ bundle install

smarty pants, well done sir :)

@inertia .. is it possible to add a skiplist to doogie, so when we are trailing someone we can still avoid upvoting specific users?

I'll put it on my todo.

woo.. ty sir!

Fantastic! Simply Fantastic!!

Sounds like a good way to work your way up fast! I'm going to do more research. Thank you!

So this can't work on a Windows machine?

It is not easy to get it to work on Windows, but it is possible. If you want to try it, the instructions for running drphil.rb are similar:


But I think it's probably better to use VirtualBox and run Linux instead.

I'll try virtual box then. Thanks

Unfortunately I no techno geek but all the more power to those who have the skills.

namchau (44) · el año pasado
noob here,
I gave the above a go with my novice skill, face with this error when i call ruby drdoogie.rb

Error: Failed to open TCP connection to steemd.steemit.com:443 (getaddrinfo: No address associated with hostname

What about Windows? @inertia

Good features :D


Nice work!

Fantastic information

Hello @inertia - I am just curious to know if you have plans to implement following:

  1. Check for curation reward growth per minute and use that as criteria for upvote
  2. Similar to maximum time - what about putting one more critera of minimum time
  3. And physical location diversity index of upvoters to really pick quality content with global apeal

I'm not sure what minimum time would be useful for. Maximum time is used to only vote if the creation is less than n. This is useful for ignoring late votes that will yield very little benefit in curation.

Minimum time implies that you would like to ignore the early votes in favor of late ones. I guess it makes sense for flexibility, but I'm not sure if it's typical use.

The other ideas you mention would require an analytic component. Right now, drdoogie only uses the API to look at the blockchain and that is very limited in terms of evaluating analytics.

No issue. I was just curious about yr future plans. This is already gr8 stuf.

@inertia Awesome share. I look forward to playing around with this.

Amazing. I will have to figure out how these things work since my knowledge of all things coding is rudimentary at best.

Really very good work..

that's what she said.. ehm...I'm the one, who knocks!...nooo...

It's gonna be legendary!

Okay so where does this work for a semi-Rookie like me?
I guess i should stick to blogging and not meddling with higher powers.