create account

TUTORIAL - Beginner friendly - Build your first steem bot in Javascript - 30minutes by sambillingham

View this thread on: hive.blogpeakd.comecency.com
· @sambillingham · (edited)
$25.54
TUTORIAL - Beginner friendly - Build your first steem bot in Javascript - 30minutes
![JS-BOT-PNG.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1515437560/iyzukkiieztcy93h1aap.png)

Hey everyone šŸ‘‹, you might have noticed I’ve been learning about the Steem-js library and building a couple of projects. I wanted to create my first tutorial to show you how to create a simple Steem bot in Javascript. There is a lot we could do with a bot but for the purpose of this tutorial and to keep it beginner friendly our bot will be fairly simple. 

> The completed bot code is [here](https://gist.github.com/code-with-sam/0864e91b85377a2f5b497007a2fcd5dd) - I know some people find it easier to see everything in one block and follow along that way. ā¬…ļø

# Outline
We will create an auto-voting bot, our bot will automatically upvote posts from our selected list of usernames. Imagine you have new friends joining the platform, and you want to encourage them with upvotes but you’re too busy to check Steemit regularly. 

## What you need 
- A plain text editor (I use [atom.io](http://atom.io) )
- Your private posting key - This is found in your wallet on the permissions tab on steemit.com, click ā€˜show private key’ (remember to keep this safe). This is what allows the bot to vote for you

## Goals 
- specify a list of usernames (our friends) 
- connect to the Steem-js API
- check when a new post is posted to the Steem network
- check if the post belongs to any of our friends
- send a vote to that post 

## Step 1 - setup šŸ’»
For this tutorial our bot will run in the web browser, a more effective way to use this bot would be on the command-line but we’ll save that for another post.

We’re going to set up a blank HTML file and link to the steem.js library. The library does most of the work, talking to the Steem network and means we have to write very little code ourselves.
```
<html>
	<head>
  	<script src="https://cdn.steemjs.com/lib/latest/steem.min.js"></script>
		<script></script>
	</head>
	<body></body>
</html>
```
Go ahead and save this file as bot-tutorial.html. You can open this up in your browser although you’ll just see a white screen for now. Looking at the code you can see we have added the basic structure of a html page. All pages are made up on the <html>,<head> and <body> tags. We’ve linked to the steemjs library file with a script tag. We also have our own <script> tags to work with. This is where our javascript code will go.

Let's try testing everything is good to go. Add a console message to your script tag like so.
```
	<script>
		console.log(ā€˜hello, is this working’)
	</script>
```
Now open up the developer tools in your browser and move to the console. 

- Chrome - View > Developer > Javascript Console
- FireFox - Tools > Web Developer > Browser Console
- Safari - Develop (turn on in advanced options - Safari prefrences) > Show Javascript Console
- IE/Edge/Windows  šŸ¤·ā€ā™‚ļø

![Screen Shot 2018-01-08 at 17.14.50.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1515436634/pcoq0ykrkqajhhgiwx2n.png)

If you’ve got the message above, let's keep moving.

## Step 2 - create friends list šŸ‘«
We’ll store a list of friends in our code to start, we can use these names later to decide if to vote or not.

In javascript lists of information are called an Array, they are specified with the square brackets. Text needs to be represented with single or double quotes around it and it’s a list so we separate the names with commas. 

Add this line below our console.log from above.
```
const FRIEND_LIST = ['sam', 'fred', 'sarah', 'lucy']
```

```const``` Is a store of information that is constant, so our list of friends can’t/won’t change once our bot is running.

## Step 3 - Connect to the Steem-js API šŸ™Œ
Here comes the fun part. We want to connect to the steem network and check all new transactions. Each block on the steem blockchain holds transactions, these can be anything transfers, votes, comments, profile updates to name just a few. Once we connect every couple of seconds we’ll be sent new data from the blockchain.

First, we need to set the URL where we receive information (currently the CDN hosted teemA-js tries to connect to an out of date URL *as of 6th Jan)

Whenever we interact with the Ateem-js library we’ll specify ```steem.api.``` and then the action we’re taking, most actions also need some extra information (these are called arguments), in this case, it’s the URL we want to connect to.
```
steem.api.setOptions({ url: 'wss://rpc.buildteam.io' });
```

The real magic is this next line.
```
steem.api.streamTransactions('head’,(error, result) => {});
```
This time we’re using the streamTransactions action to request the transactions from each block as they’re processed. we’re then taking the data (the error and the result and sending them into our own action. Between those curly baskets ```{}``` we can check for an error or see the result. Let's try that.
```
steem.api.streamTransactions('head’,(error, result) => {
	console.log(error, result)
});
```
as new transactions come In we’ll see each one in the browser console. It might look a bit funky, you also might get a lot, don’t worry we’ll narrow it down in just a second. 

```{ref_block_num: 60613, ref_block_prefix: 233123265, expiration: "2018-01-08T17:34:44", operations: Array(1), extensions: Array(0), …}```

Okay looking at above we have, Block Number, Operations, extensions etc. What we’re looking at is a Javascript Object, it’s a way to store a group of information together. We’re interested in the Operations part. To make life easier for ourselves lets store the relevant information with better names. Click the little down arrows to see inside to the information we want. 

![Screen Shot 2018-01-08 at 17.37.25.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1515436682/glwdsnym83irtdalknh7.png)

```
steem.api.streamTransactions('head’,(error, result) => {
  let txType = result.operations[0][0]
  let txData = result.operations[0][1]
	console.log(txType)
});
```
We creating two variables here to store our information. transaction type eg vote, comment etc and transaction data this is everything else relevant so for a comment it might be who commented and on what post etc. We first take the result then specify we want just the operations part then because operations is an Array we select the parts we want with square brackets. 

Now instead of seeing all of the information coming through, we’ll just see the type. Try it out. For our bot we’re interested in ā€˜comments’, this is because there is actually not a type of post or blog, all blogs are classified as comments on the Steem network, its just that blog posts aren’t replying to anyone.

## step 4 - checking friends names šŸ“
we need to create a way to check if the names we get from the blockchain match those in our list of friends. Let’s make a function. Functions allow us to create blocks of code we can reuse over and over.

```
function isFriend(name){
  return (FRIEND_LIST.indexOf(name) > -1);
}
```

Out function takes one piece of data ā€˜name’ and it’s going to return us a yes/no or really a true/false answer. What’s happening here is we are taking our ```FRIEND_LIST``` and looking for the index( the position ) of the name we entered. if our friend is is the list it will say 1 or 3 for example if not it says -1. checking if the answer is ```> -1``` gives us our true/false for friends. Try it out.

```
function isFriend(name){
  return (FRIEND_LIST.indexOf(name) > -1);
}
isFriend(ā€˜sam’)
// yes
isFriend(ā€˜lucy’)
// yes
isFriend(ā€˜bob’)
// no
```

next, we’ll create another function to check the transaction data. We’re looking to see if the ```author``` is our friend (with the function above), but we also need to check that the ```parent_author``` is empty, if it’s empty we know this is a blog post and not a comment on someone else post.

```
function checkAuthor(txData){
  if (txData.parent_author == '' &&  isFriend(txData.author)){
  		console.log(ā€˜our friend posted a blog post!!!’)
  }
}
```

This one is a little more involved. we are checking the transaction data which looks like this. 

```
author: ā€œnamehereā€
body: "That is a blast. It has an amazing potential!↵I will definitely participate in it!"
json_metadata : "{"tags":["crypto"],"app":"steemit/0.1"}"
parent_author: ""
parent_permlink: ""
permlink : ā€œlong—name-like-thisproject-20180108t173707137z"
title: ā€œawesome post titleā€
```

you access this information with dot notation so if we want the author it is ```txData.author``` it’s called txData because that’s what we specified in our function it could be called anything.

this time we’re checking that this is a blog post and not just a comment with ```txData.parent_author == '' ``` that’s checking the parent_author is empty and using our function to check if the ```txData.author``` is in our friend's list.

Going back to out Steem transaction function we can combine these together. We’ll check the transaction type is equal to comment and then we’ll check the author.

```
steem.api.streamTransactions('head', (err, result) => {
  console.log(result)
  let txType = result.operations[0][0]
  let txData = result.operations[0][1]
     if(txType == 'comment') {
        checkAuthor(txData)
     } });
```


Looking good. With all this together we’ll get a message in the browser console every time any of our friend's posts!

## Step 5 - Sending Votes šŸ‘
Okay, we’re super close! Final Steps!

First up let's make a couple more constants to store information. You can do this at the top of your script, right by your friend's list.

```
const ACCOUNT_NAME = ā€˜yourusernamehere’
const ACCOUNT_POSTING_KEY = ā€˜yourprivatepostingkeyhere’
```

Fill in this information with your username and private posting key.

```
function sendVote(author, permlink){}
```

Let's create another function, this time the data we need is the author and the permlink, this is going to be which author and what post we’re voting on.

```
function sendVote(author, permlink){
   steem.broadcast.vote(ACCOUNT_POSTING_KEY, ACCOUNT_NAME, author, permlink, 10000, function(err, result) {
   		console.log(result);
   });
}
```

Here you can see we’re doing a ā€˜steem.broadcast’ the data we need to send is the posting key, account name, the author, the link and a voting weight. Note the voting weight does not use percentages so 10000 is the same as 100%. 

All that’s left to do is using this function inside our check author function. let’s edit that now.

```
function checkAuthor(txData){
  if (txData.parent_author == '' &&  isFriend(txData.author)){
    sendVote(txData.author, txData.permlink)
  }
}
```

Update the function to add our sendVote function instead of just a message. We’re taking the data from the transaction and using it in our send vote function. 

**that’s it** - run this code in your browser and whenever your friend post’s it will automatically upvote their post. šŸ‘

[Here's the full code](https://gist.github.com/code-with-sam/0864e91b85377a2f5b497007a2fcd5dd)

There’s a lot more we can do with bots and the Steem API but I hope this has been an interesting look at a simple bot.

*post note - are bots a good idea? do bots devalue the Steemit platform? really interested to hear your thoughts on this. My take is that any ā€˜bad guys’ already know how to do this so showing you isn’t such a big deal. Remember to consider we’re hear to talk to humans, not robots. Use your new skills wisely*

<br /><hr/><em>Posted on <a href="https://utopian.io/utopian-io/@sambillingham/tutorial-beginner-friendly-build-your-first-steem-bot-in-javascript-30minutes">Utopian.io -  Rewarding Open Source Contributors</a></em><hr/>
šŸ‘  , , , , , , , , , , , , , , , , , , , , , , , ,
properties (23)
authorsambillingham
permlinktutorial-beginner-friendly-build-your-first-steem-bot-in-javascript-30minutes
categoryutopian-io
json_metadata{"community":"utopian","app":"utopian/1.0.0","format":"markdown","repository":{"id":63857882,"name":"steem-js","full_name":"steemit/steem-js","html_url":"https://github.com/steemit/steem-js","fork":false,"owner":{"login":"steemit"}},"pullRequests":[],"platform":"github","type":"tutorials","tags":["utopian-io","tutorial","steemdev","programming","learntocode"],"users":["sambillingham"],"links":["https://res.cloudinary.com/hpiynhbhq/image/upload/v1515437560/iyzukkiieztcy93h1aap.png","https://gist.github.com/code-with-sam/0864e91b85377a2f5b497007a2fcd5dd","http://atom.io","https://res.cloudinary.com/hpiynhbhq/image/upload/v1515436634/pcoq0ykrkqajhhgiwx2n.png","https://res.cloudinary.com/hpiynhbhq/image/upload/v1515436682/glwdsnym83irtdalknh7.png"],"image":["https://res.cloudinary.com/hpiynhbhq/image/upload/v1515437560/iyzukkiieztcy93h1aap.png","https://res.cloudinary.com/hpiynhbhq/image/upload/v1515436634/pcoq0ykrkqajhhgiwx2n.png","https://res.cloudinary.com/hpiynhbhq/image/upload/v1515436682/glwdsnym83irtdalknh7.png"],"moderator":{"account":"shreyasgune","reviewed":true,"pending":false,"flagged":false}}
created2018-01-08 18:39:06
last_update2018-01-09 08:22:09
depth0
children23
last_payout2018-01-15 18:39:06
cashout_time1969-12-31 23:59:59
total_payout_value17.906 HBD
curator_payout_value7.634 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length11,606
author_reputation34,876,406,478,004
root_title"TUTORIAL - Beginner friendly - Build your first steem bot in Javascript - 30minutes "
beneficiaries
0.
accountutopian.pay
weight2,500
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id28,062,599
net_rshares2,908,545,574,677
author_curate_reward""
vote details (25)
@anonimnotoriu ·
$0.13
Great stuff Sam! Useful especially now that @steemvoter [stopped working](https://steemit.com/steemvoter/@steemvoter/steemvoter-service-temporarily-down/) and won't work for at least 1 week. Thanks for this.
šŸ‘  ,
properties (23)
authoranonimnotoriu
permlinkre-sambillingham-tutorial-beginner-friendly-build-your-first-steem-bot-in-javascript-30minutes-20180108t200835518z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"users":["steemvoter"],"links":["https://steemit.com/steemvoter/@steemvoter/steemvoter-service-temporarily-down/"],"app":"steemit/0.1"}
created2018-01-08 20:08:36
last_update2018-01-08 20:08:36
depth1
children0
last_payout2018-01-15 20:08:36
cashout_time1969-12-31 23:59:59
total_payout_value0.098 HBD
curator_payout_value0.029 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length207
author_reputation3,101,674,089,461
root_title"TUTORIAL - Beginner friendly - Build your first steem bot in Javascript - 30minutes "
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id28,076,621
net_rshares12,214,967,299
author_curate_reward""
vote details (2)
@byiriss ·
$0.13
This is pretty cool! I think I'm following just enough people to vote for myself,but I will co sider this! So well explained!
šŸ‘  
properties (23)
authorbyiriss
permlinkre-sambillingham-tutorial-beginner-friendly-build-your-first-steem-bot-in-javascript-30minutes-20180108t185345856z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"app":"steemit/0.1"}
created2018-01-08 18:53:48
last_update2018-01-08 18:53:48
depth1
children1
last_payout2018-01-15 18:53:48
cashout_time1969-12-31 23:59:59
total_payout_value0.132 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length125
author_reputation499,669,317,967
root_title"TUTORIAL - Beginner friendly - Build your first steem bot in Javascript - 30minutes "
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id28,065,288
net_rshares12,736,030,930
author_curate_reward""
vote details (1)
@sambillingham ·
šŸ‘ Thanks for taking a look. It's not the best bot concept, to be honest, but it's the simplest one I could think up that might still have some real use case. Hopefully, it shows that you don't need a crazy amount of code or knowledge to make a šŸ¤–  do some work for you.
šŸ‘  
properties (23)
authorsambillingham
permlinkre-byiriss-re-sambillingham-tutorial-beginner-friendly-build-your-first-steem-bot-in-javascript-30minutes-20180108t185738089z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"app":"steemit/0.1"}
created2018-01-08 18:57:36
last_update2018-01-08 18:57:36
depth2
children0
last_payout2018-01-15 18:57:36
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length268
author_reputation34,876,406,478,004
root_title"TUTORIAL - Beginner friendly - Build your first steem bot in Javascript - 30minutes "
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id28,065,925
net_rshares520,219,958
author_curate_reward""
vote details (1)
@cutemachine ·
$0.13
Great tutorial. I will use it to write a bot which upvotes all sambillingham posts, so I do not have to do it manually. Will save me lots of time ;) Thanks.
šŸ‘  
properties (23)
authorcutemachine
permlinkre-sambillingham-tutorial-beginner-friendly-build-your-first-steem-bot-in-javascript-30minutes-20180108t190704907z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"app":"steemit/0.1"}
created2018-01-08 19:07:06
last_update2018-01-08 19:07:06
depth1
children1
last_payout2018-01-15 19:07:06
cashout_time1969-12-31 23:59:59
total_payout_value0.098 HBD
curator_payout_value0.029 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length156
author_reputation13,229,471,185,839
root_title"TUTORIAL - Beginner friendly - Build your first steem bot in Javascript - 30minutes "
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id28,067,607
net_rshares12,125,921,664
author_curate_reward""
vote details (1)
@sambillingham ·
Haha too kind, thanks for checking it out Jo!
properties (22)
authorsambillingham
permlinkre-cutemachine-re-sambillingham-tutorial-beginner-friendly-build-your-first-steem-bot-in-javascript-30minutes-20180108t195237941z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"app":"steemit/0.1"}
created2018-01-08 19:52:39
last_update2018-01-08 19:52:39
depth2
children0
last_payout2018-01-15 19:52:39
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length45
author_reputation34,876,406,478,004
root_title"TUTORIAL - Beginner friendly - Build your first steem bot in Javascript - 30minutes "
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id28,074,016
net_rshares0
@gokulnk ·
For this particular version of js file can you post the code for post comments?

<code>
  var parentAuthor = 'author1';
  var parentPermlink = 'permlink;
  var commentPermlink = steem.formatter.commentPermlink(parentAuthor, parentPermlink);
  var postTitle = WELCOME_COMMENT_TITLE;
  var postBody = WELCOME_COMMENT_BODY;


  steem.broadcast.comment(ACCOUNT_WIF, parentAuthor, parentPermlink, ACCOUNT_NAME,
        commentPermlink, postTitle, postBody,
         {"tags":["tag1"]},
         function(err, result) {
           console.log(result);
         });
</code>

The above code doesn't seem to work and the version specific changes are not documented well enough I think.
properties (22)
authorgokulnk
permlinkre-sambillingham-tutorial-beginner-friendly-build-your-first-steem-bot-in-javascript-30minutes-20180120t222616121z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"community":"utopian","app":"utopian/1.0.0"}
created2018-01-20 22:26:18
last_update2018-01-20 22:26:18
depth1
children6
last_payout2018-01-27 22:26:18
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length675
author_reputation17,871,219,215,380
root_title"TUTORIAL - Beginner friendly - Build your first steem bot in Javascript - 30minutes "
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id30,964,951
net_rshares0
@sambillingham ·
Hey @gokulnk, can you be a little more clear so I can help you out? 

- Where is this code from? (it's not this tutorial)
- What do you mean by 'code doesn't work' - what error messages are you getting, what is happening?
- What are you wanting to do?
- Can you post your full code somewhere?
properties (22)
authorsambillingham
permlinkre-gokulnk-re-sambillingham-tutorial-beginner-friendly-build-your-first-steem-bot-in-javascript-30minutes-20180121t220727720z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"users":["gokulnk"],"app":"steemit/0.1"}
created2018-01-21 22:07:24
last_update2018-01-21 22:07:24
depth2
children5
last_payout2018-01-28 22:07:24
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length292
author_reputation34,876,406,478,004
root_title"TUTORIAL - Beginner friendly - Build your first steem bot in Javascript - 30minutes "
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id31,210,096
net_rshares0
@gokulnk ·
The code you have given in your sample works perfectly. 

I was just trying to build on it to add comments to a post. 

I keep getting the following error. 

``` "Expected version 128, instead got 149" ```

Please let me know if you were able to post comments through the code.
properties (22)
authorgokulnk
permlinkre-sambillingham-re-gokulnk-re-sambillingham-tutorial-beginner-friendly-build-your-first-steem-bot-in-javascript-30minutes-20180122t145010549z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"app":"steemit/0.1"}
created2018-01-22 14:50:18
last_update2018-01-22 14:50:18
depth3
children4
last_payout2018-01-29 14:50:18
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length277
author_reputation17,871,219,215,380
root_title"TUTORIAL - Beginner friendly - Build your first steem bot in Javascript - 30minutes "
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id31,401,800
net_rshares0
@gokulnk ·
Great post @sambillingham. Its a good starting point for coding with steemjs. In ``steem.api.streamOperations``  and ``steem.api.streamTransactions`` is there a way to find out if the comment was created or updated? I was not able to find any parameter using which I could differentiate a create from update operation.
properties (22)
authorgokulnk
permlinkre-sambillingham-tutorial-beginner-friendly-build-your-first-steem-bot-in-javascript-30minutes-20180201t103710723z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"users":["sambillingham"],"app":"steemit/0.1"}
created2018-02-01 10:37:12
last_update2018-02-01 10:37:12
depth1
children0
last_payout2018-02-08 10:37:12
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length318
author_reputation17,871,219,215,380
root_title"TUTORIAL - Beginner friendly - Build your first steem bot in Javascript - 30minutes "
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id34,100,451
net_rshares0
@maheshmnj ·
thanks for this post I was actually looking for this
properties (22)
authormaheshmnj
permlinkre-sambillingham-tutorial-beginner-friendly-build-your-first-steem-bot-in-javascript-30minutes-20180109t025443338z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"app":"steemit/0.1"}
created2018-01-09 02:54:48
last_update2018-01-09 02:54:48
depth1
children0
last_payout2018-01-16 02:54:48
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length52
author_reputation40,762,185,723
root_title"TUTORIAL - Beginner friendly - Build your first steem bot in Javascript - 30minutes "
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id28,146,450
net_rshares0
@marstune ·
very nice, I see your posts add to the science and I'll try it that way, maybe I'm still a beginner, if you have time to spare can be guided me and sharing our knowledge and we can share knowledge news about steemit.
properties (22)
authormarstune
permlinkre-sambillingham-tutorial-beginner-friendly-build-your-first-steem-bot-in-javascript-30minutes-20180121t211333749z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"community":"busy","app":"busy/2.2.0"}
created2018-01-21 21:13:33
last_update2018-01-21 21:13:33
depth1
children0
last_payout2018-01-28 21:13:33
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length216
author_reputation220,189,166,018
root_title"TUTORIAL - Beginner friendly - Build your first steem bot in Javascript - 30minutes "
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id31,199,826
net_rshares0
@masrooranwer ·
Informative post
properties (22)
authormasrooranwer
permlinkre-sambillingham-tutorial-beginner-friendly-build-your-first-steem-bot-in-javascript-30minutes-20180109t065111015z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"app":"steemit/0.1"}
created2018-01-09 06:51:09
last_update2018-01-09 06:51:09
depth1
children0
last_payout2018-01-16 06:51:09
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length16
author_reputation609,541,069
root_title"TUTORIAL - Beginner friendly - Build your first steem bot in Javascript - 30minutes "
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id28,185,141
net_rshares0
@mbilalihsan ·
Thank you very much for informative post
properties (22)
authormbilalihsan
permlinkre-sambillingham-tutorial-beginner-friendly-build-your-first-steem-bot-in-javascript-30minutes-20180108t184040142z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"app":"steemit/0.1"}
created2018-01-08 18:40:39
last_update2018-01-08 18:40:39
depth1
children1
last_payout2018-01-15 18:40:39
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length40
author_reputation1,558,028,835
root_title"TUTORIAL - Beginner friendly - Build your first steem bot in Javascript - 30minutes "
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id28,062,908
net_rshares0
@sambillingham · (edited)
šŸ˜‚  You read super fast, 1700 words in 47 seconds ....
šŸ‘  ,
properties (23)
authorsambillingham
permlinkre-mbilalihsan-re-sambillingham-tutorial-beginner-friendly-build-your-first-steem-bot-in-javascript-30minutes-20180108t184236129z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"app":"steemit/0.1"}
created2018-01-08 18:42:36
last_update2018-01-08 18:42:45
depth2
children0
last_payout2018-01-15 18:42:36
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length53
author_reputation34,876,406,478,004
root_title"TUTORIAL - Beginner friendly - Build your first steem bot in Javascript - 30minutes "
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id28,063,303
net_rshares1,080,397,849
author_curate_reward""
vote details (2)
@mjo ·
I'm clearly late to this party, but I wanted to thank you for this great tutorial! I'll go find a more recent post from you to upvote :)
šŸ‘  
properties (23)
authormjo
permlinkre-sambillingham-tutorial-beginner-friendly-build-your-first-steem-bot-in-javascript-30minutes-20180405t160910423z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"app":"steemit/0.1"}
created2018-04-05 16:09:09
last_update2018-04-05 16:09:09
depth1
children0
last_payout2018-04-12 16:09:09
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length136
author_reputation277,505,434,581
root_title"TUTORIAL - Beginner friendly - Build your first steem bot in Javascript - 30minutes "
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id48,510,579
net_rshares4,089,476,049
author_curate_reward""
vote details (1)
@shreyasgune ·
$0.13
Thank you for the contribution. It has been approved.

You can contact us on [Discord](https://discord.gg/UCvqCsx).
**[[utopian-moderator]](https://utopian.io/moderators)**
šŸ‘  
properties (23)
authorshreyasgune
permlinkre-sambillingham-tutorial-beginner-friendly-build-your-first-steem-bot-in-javascript-30minutes-20180109t082205011z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"community":"utopian","app":"utopian/1.0.0"}
created2018-01-09 08:22:15
last_update2018-01-09 08:22:15
depth1
children1
last_payout2018-01-16 08:22:15
cashout_time1969-12-31 23:59:59
total_payout_value0.104 HBD
curator_payout_value0.029 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length172
author_reputation4,924,803,411,962
root_title"TUTORIAL - Beginner friendly - Build your first steem bot in Javascript - 30minutes "
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id28,198,857
net_rshares12,443,997,936
author_curate_reward""
vote details (1)
@sambillingham ·
Awesome thanks for approving this tutorial it so quickly! āš”ļøšŸ‘Š
properties (22)
authorsambillingham
permlinkre-shreyasgune-re-sambillingham-tutorial-beginner-friendly-build-your-first-steem-bot-in-javascript-30minutes-20180109t094611094z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"app":"steemit/0.1"}
created2018-01-09 09:46:12
last_update2018-01-09 09:46:12
depth2
children0
last_payout2018-01-16 09:46:12
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length61
author_reputation34,876,406,478,004
root_title"TUTORIAL - Beginner friendly - Build your first steem bot in Javascript - 30minutes "
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id28,212,547
net_rshares0
@the4thmusketeer · (edited)
Thanks for this info. I think it's still helpful even now.
šŸ‘  
properties (23)
authorthe4thmusketeer
permlinkre-sambillingham-tutorial-beginner-friendly-build-your-first-steem-bot-in-javascript-30minutes-20180809t220943907z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"app":"steemit/0.1"}
created2018-08-09 22:09:42
last_update2018-08-09 22:10:00
depth1
children0
last_payout2018-08-16 22:09:42
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length58
author_reputation321,885,398,962,151
root_title"TUTORIAL - Beginner friendly - Build your first steem bot in Javascript - 30minutes "
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id67,686,861
net_rshares4,473,171,349
author_curate_reward""
vote details (1)
@utopian-io ·
### Hey @sambillingham I am @utopian-io. I have just upvoted you!
#### Achievements
- You have less than 500 followers. Just gave you a gift to help you succeed!
- Seems like you contribute quite often. AMAZING!
#### Suggestions
- Contribute more often to get higher and higher rewards. I wish to see you often!
- Work on your followers to increase the votes/rewards. I follow what humans do and my vote is mainly based on that. Good luck!
#### Get Noticed!
- Did you know project owners can manually vote with their own voting power or by voting power delegated to their projects? Ask the project owner to review your contributions!
#### Community-Driven Witness!
I am the first and only Steem Community-Driven Witness. <a href="https://discord.gg/zTrEMqB">Participate on Discord</a>. Lets GROW TOGETHER!
- <a href="https://v2.steemconnect.com/sign/account-witness-vote?witness=utopian-io&approve=1">Vote for my Witness With SteemConnect</a>
- <a href="https://v2.steemconnect.com/sign/account-witness-proxy?proxy=utopian-io&approve=1">Proxy vote to Utopian Witness with SteemConnect</a>
- Or vote/proxy on <a href="https://steemit.com/~witnesses">Steemit Witnesses</a>

[![mooncryption-utopian-witness-gif](https://steemitimages.com/DQmYPUuQRptAqNBCQRwQjKWAqWU3zJkL3RXVUtEKVury8up/mooncryption-s-utopian-io-witness-gif.gif)](https://steemit.com/~witnesses)

**Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x**
šŸ‘  
properties (23)
authorutopian-io
permlinkre-sambillingham-tutorial-beginner-friendly-build-your-first-steem-bot-in-javascript-30minutes-20180109t231551829z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"community":"utopian","app":"utopian/1.0.0"}
created2018-01-09 23:15:51
last_update2018-01-09 23:15:51
depth1
children0
last_payout2018-01-16 23:15:51
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length1,511
author_reputation152,955,367,999,756
root_title"TUTORIAL - Beginner friendly - Build your first steem bot in Javascript - 30minutes "
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id28,358,269
net_rshares0
author_curate_reward""
vote details (1)