Bot Build #4 - Resteem Bot With Friend List

Words
482
Reading
3 min
9y
Listen to this post
~3 min


What Will I Learn?

  • Build A Resteem Bot With A Friend List

Requirements

  • Node.JS, Here
  • Steem Package (Install: npm install steem --save)

Difficulty

  • Intermediate

Tutorial Contents

In this tutorial, you will learn how to use steem-js to make a bot to resteem your friend's posts.

Curriculum

The Tutorial

Step 1 - setup the server

you can get a full explanation about setting up NodeJS server Here

Full Code

const http = require('http');
const steem = require('steem');
const hostIP = "localhost";
const port = 80;

const server = http.createServer((req, res) => {
  res.statusCode = 200;

  res.setHeader('Content-type', 'text-plain');

  res.end('Hello World! this is my first project at node.js!');

  });

  server.listen(port, hostIP, () => {

  console.log("Listen to port " + port);
});

this is really simple one, we get 2 variables for steem and http packages, steem for steem-js and http for the node.js server.

then 2 variables for IP and Port and we create the server with the IP and port and send status code, header (the type of page) and if you get into the IP (localhost:80) you will get this result

image.png

Step 2 - create the friend list

create new file friends.json

image.png

with this code

[
  "yairdd"
]

to add friends just change the file to this (example)

[
  "yairdd",
  "atukh09"
]

easy enough.

now get this list to the server script.

const friends = require("./friends.json");

to get the file from the main folder you need to use ./ and then the file name.

and check if it works

console.log(friends);

result

image.png

Step 3 - Create The Resteem Function

First, we need the function

function ResteemPost(username, wif){
  for(var i=0; i<friends.length; i++){
  steem.api.getDiscussionsByBlog({tag: friends[i], limit: 1}, function(err, result){
  const json = JSON.stringify(['reblog', {
  account: username,
  author: result[0].author,
  permlink: result[0].permlink
  }]);

  steem.broadcast.customJson(wif, [], [username], 'follow', json, (err, result) => {
  console.log(err, result);
  });
  });
  }
}

first, we need a function with the name ResteemPost(you can change it to whatever you want) and we need 4 variables.

user - your username (the user who make the resteem)

wif - the posting private key

author - the user who gets the resteem

permlink - the permalink of the post you resteem

now we make the json variable for the reblog (Resteem)

account - your username

author - the username of the author

permlink - the permalink of the post

then we broadcast customJson because there is no specific function for resteem/reblog.

wif - the private posting key.

user - the user who makes the resteem.

json - the json variable we made before.

Step 4 - Make The Resteem

(now we're going to use a guest user from the steem-js project)

you can use it if you want

const username = 'guest123';
const privPostingWif = '5JRaypasxMx1L97ZUX7YuC5Psb5EAbF821kkAGtBj7xCJFQcbLg';

now we need to use the function

ResteemPost(username, privPostingWif);

Now when you start the server it should resteem the posts

result

null { id: '889311544b429857577370316d28cbc00d29eb52',
  block_num: 21698585,
  trx_num: 27,
  expired: false,
  ref_block_num: 6151,
  ref_block_prefix: 767446380,
  expiration: '2018-04-19T08:24:06',
  operations: [ [ 'custom_json', [Object] ] ],
  extensions: [],
  signatures:
  [ '20573a97a13eafbb10adcbe1e013b98392275f84a1a1266aa81381ec3e408fc21e47d0b9d9c39b42b949088fcfcc2f60d5204602ea9bcf0b6501819eea66c666b4' ] }

image.png

steemit results

image.png

Step 5 - 60 Minutes Timer

to make it automatic you want to make a timer, for example for every hour.

at the end of the ResteemPost function use this code

  setTimeout(function(){ResteemPost(username, wif);}, 60*60*1000);

Full Function Code

function ResteemPost(username, wif){
  for(var i=0; i<friends.length; i++){
  steem.api.getDiscussionsByBlog({tag: friends[i], limit: 1}, function(err, result){
  const json = JSON.stringify(['reblog', {
  account: username,
  author: result[0].author,
  permlink: result[0].permlink
  }]);

  steem.broadcast.customJson(wif, [], [username], 'follow', json, (err, result) => {
  console.log(err, result);
  });
  });
  }
  setTimeout(function(){ResteemPost(username, wif);}, 30*60*1000);
}

setTimeout - timer function

inside we make function and send our ResteemPost function again so it's looping it every hour

60*60*1000 - 60 = minutes, 60 = seconds, 1000 = milliseconds.

120 = 2 hours
240 = 4 hours

you can change it for hours easily

2*60*60*1000 - the new 2 is the hours.

if you have done all correctly, you're done!

The Full Code

You can find the full server code in pastebin



Posted on Utopian.io - Rewarding Open Source Contributors

Bot Build #4 - Resteem Bot With Friend List | Ecency