#### What Will I Learn? - You will learn how to build an upvote bot (with preference) using steem sc2-sdk-php #### Requirements - You will need to have PHP powered server with openSSL - You will need to Install https://github.com/hernandev/sc2-sdk-php/ You can do that via composer using these commands `composer require hernandev/sc2-sdk-php` - You will need to have a steemconnect registered app #### Difficulty - Intermediate #### Tutorial Contents Make sure you have followed all necessary requirements above before reading these tutorial. There is a big possibility that this tutorial might not work at all on your localhost even if you use a SELF-SIGNED SSL certificates as only self-signed certificates can work on localhosts. There is a class called "GUZZLE" that sc2-sdk-php works with. This class only works with verified certificates except when otherwise manually edited. So before I start this tutorial, I will offer a little fix on that, so you can easily work from your localhost, this fix is important,as there does not seem to be a straight forward way of working with sc2-sdk-php unless this fix is done. ## THE FIX Provided you have installed sc2-sdk-php via composer , follow the procedures below: - ENTER this address in the file explorer `C:\wamp\www\bb\vendor\guzzlehttp\guzzle\src\Handler` Edit the above address according to the location of your PUBLICHTML and location of PHP SERVER. You should see a list of different folders - Edit `CurlFactory.php` - Go to line 332 & 333 and edit the lines as stated below ```php $conf[CURLOPT_SSL_VERIFYHOST] = 0; //previously 2 $conf[CURLOPT_SSL_VERIFYPEER] = false; // previously true ``` <hr> Once this is done, the authentication will no longer be verified. Now, we can start the tutorial. ## THE TUTORIAL - Go to the root of the folder where sc2-sdk-php was installed (where the vendor folder is located) - Create a new file there and name it `index.php`. Our upvote bot is going to be located here. ### STEP 1 - Open the PHP TAG and add the following codes as stated below ```php <?php ini_set('max_execution_time', 6000); include('vendor/autoload.php'); use SteemConnect\Config\Config; use SteemConnect\Client\Client; use SteemConnect\Operations\Comment; use SteemConnect\Operations\CommentOptions; use SteemConnect\Operations\Vote; // oauth client id. $clientId = 'your-app-name'; // oauth client secret. $clientSecret = 'app-secret-key'; // return url. $returnUrl = 'https://localhost/vote'; // list of required scopes. $scopes = [ 'login', 'offline', 'vote', 'comment', 'comment_delete', 'comment_options', 'custom_json', 'claim_reward_balance', ]; // starts the configuration object, passing the client id and secret. $config = new Config($clientId, $clientSecret); // configure the return / callback URL. $config->setReturnUrl($returnUrl); // set the reqired scopes. $config->setScopes($scopes); // set the return/callback URL, so SteemConnect will redirect // users back to your application. $config->setReturnUrl('https://localhost/bb'); $sdk = new Client($config); // get the URL to send the users that will authorize your app. $redirectUrl = $sdk->auth()->getAuthorizationUrl(); if (empty($_GET['code'])){ // now redirect the user: header('Location: '.$redirectUrl); } // exchanging the authorization code by a access token. $token = $sdk->auth()->parseReturn(); // set the Token instance on the SDK instance. $sdk->setToken($token); ``` > All the above contains configuration processes for sc2-sdk-php <hr> `ini_set('max_execution_time', 6000);` : This will increase the execution time of the script beyond the PHP.INI defaults ,an upvote bot takes time to process as this script is gonna take into account the STEEM BLOCKCHAIN time interval of 20 secs between simultaneous upvotes. <hr> `include('vendor/autoload.php');` : This will help include all the sc2-sdk-php classes and helper classes** <hr> `use SteemConnect\Config\Config;` : This helps with configuring the Connection<hr> use SteemConnect\Client\Client; : This helps with CLient Class<hr> `use SteemConnect\Operations\Comment;`,`use SteemConnect\Operations\Vote;`: All these are used comment and voting operations<hr> <hr> The rest of the configuration codes can be understood from the comment and you can also sc2-sdk-php to see how it works. #### NOTE `if (empty($_GET['code'])){' : This IF statement is an antidote for redirection issues that can occur, also make sure that the $returnurl is the same as the address of the script. There might be an error if it is not, also the return url must be included in the list of REDIRECT URIs on your SteemConnect APP page (you should know that). ### BOT PROCESS #### Step 1: ```php $chosen = array("user1","user2","user3"); ``` This represents the set of votee that needs to be upvoted by the bot, this is good for accounts that are jointly owned for the single purpose of upvoting a certain set of people. There are a lot of accounts like that on steem. Populate the array with as much name as you want. #### Step 2: ```php $voter = 'upvoter'; $loyal = 'upvoter'; $query = urlencode('{"tag":".$loyal.", "limit": "100"}'); $url = 'https://api.steemjs.com/get_discussions_by_blog?query='.$query; $json= file_get_contents($url); $postData = json_decode($json,true); ``` `$voter` represents the account that will be responsible for voting. This bot only upvotes users that upvote the last post of a particular account. That account is represented with `$loyal` The last lines queries the steem blockchain and returns the json equivalents of $loyal's last post and then decodes it into a total array. Without the `true` argument on the last line, the $postData will still contain sub-jsons in each multi-level array. ### STEP 3 ```php $n = 0; foreach ($postData as $item){ if ($voter == $item["author"] && $n < 1){ $votee = array(); $a = 0; foreach ($item["active_votes"] as $itemVoter){ if (in_array($itemVoter['voter'],$chosen)){$votee[$a] = $itemVoter['voter']; $a++;} $n++; } } } ``` This gets the list of voters from the $postData and checks it against the $chosen votee so as not vote `outsiders`. ### STEP 4: ```php foreach ($votee as $v){ $query = urlencode('{"tag":"'.$v.'", "limit": "100"}'); $url = 'https://api.steemjs.com/get_discussions_by_blog?query='.$query; $json= file_get_contents($url); $postData2 = json_decode($json,true); $n2 =0; foreach ($postData2 as $item2){ if ($v == $item2["author"] && $n2 < 1){ $link= $item2['permlink']; $d =0; $zlist = array(); foreach ($item2["active_votes"] as $z){ $zlist[$d] = $z['voter']; $d++; } $n2++; } } if (!in_array($voter,$zlist)){ $body = 'Congratulations!,@'.$v.' You have been upvoted'; // upvoting / downvoting a post: $vote = new Vote(); $p = 45*100; $vote ->account($voter) ->on($v,$link) ->upVote($p); $comment = new Comment(); $comment ->reply($v,$link) ->permlink($link) ->author($voter) ->body($body); echo $v.'<br/>'; // the broadcast method magically accept any number of arguments, so broadcasting multiple operations is easily accomplished. if ($sdk->broadcast($vote)){echo 'Vote Made Successfully<br/><br/>';} // the broadcast method magically accept any number of arguments, so broadcasting multiple operations is easily accomplished. if ($sdk->broadcast($comment)){echo 'Comment Made Successfully<br/>';} sleep(25); } } ``` This last foreach performs the whole operation of Upvoting and commenting <hr> The first six lines gets the first post of the verified votee , gotten from the previous foreach. <hr> The nex foreach (`foreach ($item2["active_votes"] as $z){......if (!in_array($voter,$zlist)){`) gets all the voters on the votee post and then checks if the post has not been upvoted before to avoid error which will be generated if the script votes an already voted post.<hr> Then the $body of the comment and the percentage ($p) is set which is then prepared with $vote and $comment class initializations. <hr> After this, $sdk->broadcast($comment) & $sdk->broadcast($vote) broadcast the operation ,meaning the operation is sent into the blockchain via sc2-sdk-php The SLEEP(25) is there to make sure there is a gap between each upvote, an error will be generated if there is less than 20 seconds time frame between each upvote. Because of these timeframe, these script can take time to finish. ### Now, let's get the whole script. ```php <?php ini_set('max_execution_time', 1000); include('vendor/autoload.php'); // alias the Config class. use SteemConnect\Config\Config; use SteemConnect\Client\Client; use SteemConnect\Operations\Comment; use SteemConnect\Operations\CommentOptions; use SteemConnect\Operations\Vote; // oauth client id. $clientId = 'your-app-name'; // oauth client secret. $clientSecret = 'app-secret-key'; // return url. $returnUrl = 'https://localhost/bb'; // list of required scopes. $scopes = [ 'login', 'offline', 'vote', 'comment', 'comment_delete', 'comment_options', 'custom_json', 'claim_reward_balance', ]; // starts the configuration object, passing the client id and secret. $config = new Config($clientId, $clientSecret); // configure the return / callback URL. $config->setReturnUrl($returnUrl); // set the reqired scopes. $config->setScopes($scopes); // set the return/callback URL, so SteemConnect will redirect // users back to your application. $config->setReturnUrl('https://localhost/bb'); $sdk = new Client($config); // get the URL to send the users that will authorize your app. $redirectUrl = $sdk->auth()->getAuthorizationUrl(); if (empty($_GET['code'])){ // now redirect the user: header('Location: '.$redirectUrl); } // exchanging the authorization code by a access token. $token = $sdk->auth()->parseReturn(); // set the Token instance on the SDK instance. $sdk->setToken($token); $chosen = array("user1","user2","user3"); $voter = "upvoter'; $loyal= 'upvoter'; $query = urlencode('{"tag":"'.$loyal.'", "limit": "100"}'); $url = 'https://api.steemjs.com/get_discussions_by_blog?query='.$query; $json= file_get_contents($url); $postData = json_decode($json,true); $n = 0; foreach ($postData as $item){ if ($voter == $item["author"] && $n < 1){ $votee = array(); $a = 0; foreach ($item["active_votes"] as $itemVoter){ if (in_array($itemVoter['voter'],$chosen)){$votee[$a] = $itemVoter['voter']; $a++;} $n++; } } } foreach ($votee as $v){ $query = urlencode('{"tag":"'.$v.'", "limit": "100"}'); $url = 'https://api.steemjs.com/get_discussions_by_blog?query='.$query; $json= file_get_contents($url); $postData2 = json_decode($json,true); $n2 =0; foreach ($postData2 as $item2){ if ($v == $item2["author"] && $n2 < 1){ $link= $item2['permlink']; $d =0; $zlist = array(); foreach ($item2["active_votes"] as $z){ $zlist[$d] = $z['voter']; $d++; } $n2++; } } if (!in_array($voter,$zlist)){ $body = 'Congratulations!,@'.$v; // upvoting / downvoting a post: $vote = new Vote(); $p = 45*100; $vote ->account($voter) ->on($v,$link) ->upVote($p); $comment = new Comment(); $comment ->reply($v,$link) ->permlink($link) ->author($voter) ->body($body); echo $v.'<br/>'; // the broadcast method magically accept any number of arguments, so broadcasting multiple operations is easily accomplished. if ($sdk->broadcast($vote)){echo 'Vote Made Successfully<br/><br/>';} // the broadcast method magically accept any number of arguments, so broadcasting multiple operations is easily accomplished. if ($sdk->broadcast($comment)){echo 'Comment Made Successfully<br/>';} sleep(25); } } ``` <br/> With this, you can now run the script from your browser. This bot still needs to be run the first time before it can now run on its own , this is to authenticate the $voter . You can find the codes of this tutorial via this [github link](https://github.com/Akintunde102/PHP-STEEM-BOT) <br /><hr/><em>Posted on <a href="https://utopian.io/utopian-io/@akintunde/how-to-build-a-preferential-steem-upvote-bot-using-php">Utopian.io - Rewarding Open Source Contributors</a></em><hr/>
author | akintunde | ||||||
---|---|---|---|---|---|---|---|
permlink | how-to-build-a-preferential-steem-upvote-bot-using-php | ||||||
category | utopian-io | ||||||
json_metadata | "{"community":"utopian","app":"utopian/1.0.0","format":"markdown","repository":{"id":1903522,"name":"php-src","full_name":"php/php-src","html_url":"https://github.com/php/php-src","fork":false,"owner":{"login":"php"}},"pullRequests":[],"platform":"github","type":"tutorials","tags":["utopian-io","php","open-source","steemdev","wafrica"],"links":["https://github.com/hernandev/sc2-sdk-php/","https://github.com/Akintunde102/PHP-STEEM-BOT","https://utopian.io/utopian-io/@akintunde/how-to-build-a-preferential-steem-upvote-bot-using-php"],"moderator":{"account":"deathwing","time":"2018-04-11T10:49:14.524Z","pending":false,"reviewed":true,"flagged":false},"questions":null,"score":null,"total_influence":null,"staff_pick":null,"config":{"questions":[{"question":"Does the tutorial address a minimum of 3 substantial concepts and no more than 5?","question_id":"tut-1","answers":[{"answer":"3-5 substantial concepts covered in the tutorial.","answer_id":1,"value":10},{"answer":"Less than 3 or more than 5 substantial concepts covered in the tutorial.","answer_id":2,"value":5},{"answer":"No substantial or recognisable concepts.","answer_id":3,"value":0}]},{"question":"Concepts covered in the tutorial are indicated in the post text with a short description of each concept and when appropriate, images?","question_id":"tut-2","answers":[{"answer":"Thorough text and images for concepts covered.","answer_id":1,"value":10},{"answer":"Minimal text and images.","answer_id":2,"value":5},{"answer":"No or very little text and images.","answer_id":3,"value":0}]},{"question":"Does the contributor provide supplementary resources, such as code and sample files in the contribution post or a GitHub repository?","question_id":"tut-3","answers":[{"answer":"Yes","answer_id":1,"value":10},{"answer":"No","answer_id":2,"value":0}]},{"question":"Is the tutorial part of a series?","question_id":"tut-4","answers":[{"answer":"Yes.","answer_id":1,"value":10},{"answer":"Yes, but first entry in the series.","answer_id":2,"value":5},{"answer":"No.","answer_id":3,"value":0}]},{"question":"Is there an outline for the tutorial content at the beginning of the post?","question_id":"tut-5","answers":[{"answer":"Yes.","answer_id":1,"value":10},{"answer":"Yes, but not detailed enough or does not cover all sections.","answer_id":2,"value":5},{"answer":"No.","answer_id":3,"value":0}]},{"question":"Does the writing style meet the Utopian standard considering formalness, informativeness and clarity of the content?","question_id":"c-1","answers":[{"answer":"It is formal, informative and well written with clear content.","answer_id":1,"value":10},{"answer":"It is informative with clear content but not formal enough.","answer_id":2,"value":5},{"answer":"The contribution could be more informative or contains unrelated information, formality and clarity of the content are good enough.","answer_id":3,"value":4},{"answer":"Not all sections were clear enough but overall holds value for the project.","answer_id":4,"value":2},{"answer":"Not at all.","answer_id":5,"value":0}]},{"question":"Was the provided category template for the editor followed?","question_id":"c-2","answers":[{"answer":"All points of the template were included with additional points as well.","answer_id":1,"value":5},{"answer":"The template was followed without additions.","answer_id":2,"value":4},{"answer":"The template was edited but the points were covered in different way.","answer_id":3,"value":3},{"answer":"Not all points of the template were covered in the contribution but the structure is clear enough.","answer_id":4,"value":3},{"answer":"The template was not followed but the structure is clear enough.","answer_id":5,"value":2},{"answer":"The contents are not clearly structured at all.","answer_id":6,"value":0}]},{"question":"Did the contributor tag other users?","question_id":"c-3","answers":[{"answer":"No other users were tagged by the contributor.","answer_id":1,"value":5},{"answer":"Used tags are reasonable and all tagged people are connected to the project and/or the contribution.","answer_id":2,"value":5},{"answer":"The contribution contains mentions of other users that are not directly related to the contribution but related in other ways.","answer_id":3,"value":2},{"answer":"The contributor misuses tagging of other users.","answer_id":4,"value":0}]},{"question":"Did the contributor ask for upvotes, resteems, follows or witness vote?","question_id":"c-4","answers":[{"answer":"No","answer_id":1,"value":5},{"answer":"Yes, but not in a way that disturbs readability. ","answer_id":2,"value":5},{"answer":"Yes.","answer_id":3,"value":0}]},{"question":"Was a graphical content like images, charts, videos or screenshots included?","question_id":"c-5","answers":[{"answer":"Yes, the graphical content is included and adds more value to the contribution.","answer_id":1,"value":5},{"answer":"No but the contribution works well without graphical content well.","answer_id":2,"value":4},{"answer":"Yes, but most of the graphical content’s purpose is just for presentational matters.","answer_id":3,"value":3},{"answer":"No relevant or useful graphical content is included in the contribution.","answer_id":4,"value":0}]},{"question":"How would you rate the overall added value?","question_id":"c-6","answers":[{"answer":"Extraordinary value to both the project and the open source community overall.","answer_id":1,"value":20},{"answer":"Significant value to the project or open source community.","answer_id":2,"value":15},{"answer":"Some value to the project or open source community.","answer_id":3,"value":10},{"answer":"Little value to the project or open source community.","answer_id":4,"value":5},{"answer":"No obvious value to project or open source community.","answer_id":5,"value":0}]}]}}" | ||||||
created | 2018-04-08 13:49:39 | ||||||
last_update | 2018-04-11 10:49:15 | ||||||
depth | 0 | ||||||
children | 8 | ||||||
last_payout | 2018-04-15 13:49:39 | ||||||
cashout_time | 1969-12-31 23:59:59 | ||||||
total_payout_value | 45.035 HBD | ||||||
curator_payout_value | 19.501 HBD | ||||||
pending_payout_value | 0.000 HBD | ||||||
promoted | 0.000 HBD | ||||||
body_length | 12,055 | ||||||
author_reputation | 16,541,536,778,040 | ||||||
root_title | "How to build a preferential steem upvote bot using php" | ||||||
beneficiaries |
| ||||||
max_accepted_payout | 1,000,000.000 HBD | ||||||
percent_hbd | 10,000 | ||||||
post_id | 48,973,833 | ||||||
net_rshares | 17,627,816,187,382 | ||||||
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
kushed | 0 | 18,037,000,974 | 0.07% | ||
eric-boucher | 0 | 1,955,806,395 | 0.03% | ||
anwenbaumeister | 0 | 12,933,044,974 | 0.07% | ||
arcange | 0 | 16,238,102,637 | 3% | ||
liberosist | 0 | 3,838,262,275 | 0.07% | ||
raphaelle | 0 | 1,911,991,747 | 3% | ||
frontpage | 0 | 1,359,456,529 | 6% | ||
meerkat | 0 | 32,455,642,605 | 0.07% | ||
surpassinggoogle | 0 | 1,530,904,177,781 | 8% | ||
curie | 0 | 23,097,647,344 | 0.07% | ||
vannour | 0 | 3,484,481,610 | 5% | ||
hendrikdegrote | 0 | 258,013,550,750 | 0.07% | ||
steemcultures | 0 | 157,618,325 | 5% | ||
jgpro | 0 | 68,976,602 | 4% | ||
southparkqueen | 0 | 524,447,937 | 8% | ||
steemgigs | 0 | 762,220,623 | 0.04% | ||
ninyea | 0 | 222,363,993 | 8% | ||
eurogee | 0 | 241,445,298 | 0.16% | ||
mrstaf | 0 | 148,332,225 | 4% | ||
locikll | 0 | 211,247,686 | 0.14% | ||
mahdiyari | 0 | 335,324,648 | 0.03% | ||
aboutyourbiz | 0 | 105,465,060 | 0.07% | ||
bobiecayao | 0 | 294,975,944 | 4% | ||
cryptokrieg | 0 | 121,161,859 | 0.07% | ||
thinknzombie | 0 | 1,564,548,520 | 0.03% | ||
emekacollins | 0 | 862,919,449 | 100% | ||
mhel | 0 | 83,613,313 | 1.6% | ||
justdentist | 0 | 594,489,243 | 1% | ||
karyah1001 | 0 | 84,909,006 | 8% | ||
enm | 0 | 229,230,791 | 6% | ||
nessyquel | 0 | 193,102,763 | 8% | ||
snowpea | 0 | 161,422,307 | 5% | ||
elixbaba | 0 | 267,582,707 | 30% | ||
ranielbrianulan | 0 | 434,602,344 | 8% | ||
jordanx2 | 0 | 59,409,806 | 0.03% | ||
tolarnee | 0 | 216,853,137 | 4% | ||
stbrians | 0 | 242,049,068 | 4% | ||
pelvis | 0 | 208,480,805 | 30% | ||
peaceandwar | 0 | 161,971,884 | 0.03% | ||
jacoblayan | 0 | 417,530,927 | 4% | ||
utopian-io | 0 | 15,590,657,654,605 | 11% | ||
thelovejunkie | 0 | 122,723,053 | 2% | ||
meetmysuperego | 0 | 181,058,031 | 2% | ||
aehiguese | 0 | 69,929,939 | 8% | ||
iamthegray | 0 | 3,757,573,243 | 30% | ||
skycae | 0 | 96,567,023 | 0.07% | ||
damdap | 0 | 403,888,438 | 100% | ||
starbele | 0 | 92,780,821 | 30% | ||
spark92 | 0 | 158,774,708 | 30% | ||
funshel | 0 | 222,641,162 | 30% | ||
zalandir | 0 | 147,623,964 | 0.03% | ||
akintunde | 0 | 1,789,328,108 | 100% | ||
musicayfarandula | 0 | 51,164,116 | 10% | ||
steemotion | 0 | 82,789,287 | 0.03% | ||
scarletmedia | 0 | 136,981,232 | 30% | ||
iwanderela | 0 | 1,198,358,697 | 1% | ||
rasamuel | 0 | 82,378,124 | 4% | ||
jegede | 0 | 280,869,147 | 60% | ||
ategun | 0 | 101,229,394 | 10% | ||
levinvillas | 0 | 101,735,057 | 2% | ||
emjoe | 0 | 108,486,334 | 0.02% | ||
henrychidiebere | 0 | 94,403,115 | 1.6% | ||
kekegist | 0 | 2,093,489,092 | 100% | ||
solomon507 | 0 | 228,607,645 | 30% | ||
zoelfahmi | 0 | 548,845,774 | 100% | ||
dynamicrypto | 0 | 151,365,031 | 1% | ||
wisewoof | 0 | 109,841,084 | 0.03% | ||
neneandy | 0 | 197,664,027 | 4% | ||
strings | 0 | 87,122,095 | 4% | ||
shemzy | 0 | 107,039,494 | 30% | ||
wagun001 | 0 | 109,061,245 | 0.35% | ||
mashiliyanage | 0 | 152,804,451 | 0.4% | ||
ligarayk | 0 | 151,398,780 | 8% | ||
mistakili | 0 | 6,781,203,036 | 100% | ||
imkareencajes | 0 | 54,088,689 | 4% | ||
josephace135 | 0 | 7,499,124,020 | 50% | ||
kaylog | 0 | 97,866,063 | 30% | ||
juichi | 0 | 68,092,763 | 4% | ||
camilus | 0 | 93,307,337 | 8% | ||
ilukzymoore | 0 | 144,582,530 | 30% | ||
charleswealth | 0 | 605,252,278 | 100% | ||
mosunomotunde | 0 | 14,010,783,803 | 100% | ||
mrposyble | 0 | 150,142,072 | 30% | ||
marketstack | 0 | 4,996,991,072 | 0.85% | ||
badmusazeez | 0 | 64,237,720 | 30% | ||
joeysison | 0 | 61,520,949 | 5.6% | ||
aotearoa | 0 | 57,467,750 | 4% | ||
ehisoria | 0 | 168,209,687 | 30% | ||
reachout | 0 | 21,443,989,323 | 60% | ||
positiveninja | 0 | 112,002,395 | 0.03% | ||
alfred1 | 0 | 183,550,507 | 30% | ||
jo5h | 0 | 8,500,905,946 | 100% | ||
ibez | 0 | 52,113,902 | 12% | ||
qberry | 0 | 422,671,460 | 0.03% | ||
zcool | 0 | 124,497,134 | 10% | ||
baa.steemit | 0 | 2,043,120,858 | 10% | ||
ayay | 0 | 52,699,994 | 11% | ||
victorcovrig | 0 | 65,368,126 | 1% | ||
rextylerblunt | 0 | 156,668,712 | 30% | ||
fibrefox | 0 | 78,636,068 | 4% | ||
yoryfranco | 0 | 447,280,272 | 100% | ||
bafspotlight | 0 | 171,559,150 | 30% | ||
we-are | 0 | 1,683,004,615 | 21.56% | ||
we-are-one | 0 | 1,556,459,788 | 20% | ||
we-are-nigeria | 0 | 16,077,804,680 | 20.49% | ||
mcluz | 0 | 181,054,026 | 30% | ||
enm1 | 0 | 180,438,853 | 30% | ||
we-are-africa | 0 | 1,608,943,163 | 20.81% | ||
omotundegirls | 0 | 598,630,511 | 100% | ||
etaletai | 0 | 51,806,839 | 4% | ||
obaseki | 0 | 186,209,861 | 30% | ||
steemjoy | 0 | 183,517,114 | 30% | ||
we-are-lucky | 0 | 19,316,649,821 | 100% | ||
chiknows | 0 | 171,322,289 | 30% | ||
keyaghosh | 0 | 91,751,603 | 15% | ||
perfect-art | 0 | 139,022,396 | 25% |
Thanks for sharing this @akintunde, I have not messed around with any PHP since a very very long time ago... So I don't understand much but maybe I should try to get into it again...
author | friendly-fenix |
---|---|
permlink | re-akintunde-how-to-build-a-preferential-steem-upvote-bot-using-php-20180408t140342395z |
category | utopian-io |
json_metadata | {"tags":["utopian-io"],"users":["akintunde"],"app":"steemit/0.1"} |
created | 2018-04-08 14:03:42 |
last_update | 2018-04-08 14:03:42 |
depth | 1 |
children | 1 |
last_payout | 2018-04-15 14:03:42 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 182 |
author_reputation | 6,283,336,485,983 |
root_title | "How to build a preferential steem upvote bot using php" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 48,975,671 |
net_rshares | 0 |
That would be nice. Looking forward to that.
author | akintunde |
---|---|
permlink | re-friendly-fenix-re-akintunde-how-to-build-a-preferential-steem-upvote-bot-using-php-20180408t142237391z |
category | utopian-io |
json_metadata | {"tags":["utopian-io"],"app":"steemit/0.1"} |
created | 2018-04-08 14:22:42 |
last_update | 2018-04-08 14:22:42 |
depth | 2 |
children | 0 |
last_payout | 2018-04-15 14:22:42 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 44 |
author_reputation | 16,541,536,778,040 |
root_title | "How to build a preferential steem upvote bot using php" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 48,978,220 |
net_rshares | 0 |
Brilliant!
author | mosunomotunde |
---|---|
permlink | re-akintunde-how-to-build-a-preferential-steem-upvote-bot-using-php-20180408t212903627z |
category | utopian-io |
json_metadata | {"tags":["utopian-io"],"community":"busy","app":"busy/2.4.0"} |
created | 2018-04-08 21:29:21 |
last_update | 2018-04-08 21:29:21 |
depth | 1 |
children | 1 |
last_payout | 2018-04-15 21:29:21 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 10 |
author_reputation | 19,586,987,821,353 |
root_title | "How to build a preferential steem upvote bot using php" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 49,031,480 |
net_rshares | 0 |
Thank you ma
author | akintunde |
---|---|
permlink | re-mosunomotunde-re-akintunde-how-to-build-a-preferential-steem-upvote-bot-using-php-20180409t160700030z |
category | utopian-io |
json_metadata | {"tags":["utopian-io"],"app":"steemit/0.1"} |
created | 2018-04-09 16:07:03 |
last_update | 2018-04-09 16:07:03 |
depth | 2 |
children | 0 |
last_payout | 2018-04-16 16:07:03 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 12 |
author_reputation | 16,541,536,778,040 |
root_title | "How to build a preferential steem upvote bot using php" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 49,160,649 |
net_rshares | 0 |
Congratulations!,@akintunde Your post has been upvoted by Reach Out, which is proudly sponsored by @eturnerx. Our goal is to support Nigerian minnows on Steemit. Join our discord group https://discord.gg/NWAkKfn<br/> Benefactor : @bleepcoin <br/> Curator On Duty: Richie, the Manual Bot <br/> We invite you to the @eoscafe community [https://discord.gg/wdUnCdE]
author | reachout |
---|---|
permlink | how-to-build-a-preferential-steem-upvote-bot-using-php |
category | utopian-io |
json_metadata | [] |
created | 2018-04-09 00:30:06 |
last_update | 2018-04-09 00:30:06 |
depth | 1 |
children | 0 |
last_payout | 2018-04-16 00:30:06 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 361 |
author_reputation | 551,058,650,780 |
root_title | "How to build a preferential steem upvote bot using php" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 49,047,834 |
net_rshares | 0 |
### Hey @akintunde I am @utopian-io. I have just upvoted you! #### Achievements - Seems like you contribute quite often. AMAZING! #### Utopian 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</a> - <a href="https://v2.steemconnect.com/sign/account-witness-proxy?proxy=utopian-io&approve=1">Proxy vote to Utopian Witness</a> **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**
author | utopian-io |
---|---|
permlink | re-akintunde-how-to-build-a-preferential-steem-upvote-bot-using-php-20180411t122254527z |
category | utopian-io |
json_metadata | {"tags":["utopian-io"],"community":"utopian","app":"utopian/1.0.0"} |
created | 2018-04-11 12:22:54 |
last_update | 2018-04-11 12:22:54 |
depth | 1 |
children | 0 |
last_payout | 2018-04-18 12:22:54 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 636 |
author_reputation | 152,955,367,999,756 |
root_title | "How to build a preferential steem upvote bot using php" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 49,484,469 |
net_rshares | 0 |
Hello @akintunde ... I'm a PHP developer in Uyo, Nigeria. I have always wanted to build some cool tools on the steem blockchain using PHP preferably with the Laravel Framework. I believe this tutorial will help me alot on getting thee basic concepts. Thank YOU for this
author | wizzydayo | ||||||
---|---|---|---|---|---|---|---|
permlink | re-akintunde-how-to-build-a-preferential-steem-upvote-bot-using-php-20180416t233009317z | ||||||
category | utopian-io | ||||||
json_metadata | {"tags":["utopian-io"],"community":"utopian","app":"utopian/1.0.0"} | ||||||
created | 2018-04-16 23:30:18 | ||||||
last_update | 2018-04-16 23:30:18 | ||||||
depth | 1 | ||||||
children | 0 | ||||||
last_payout | 2018-04-23 23:30:18 | ||||||
cashout_time | 1969-12-31 23:59:59 | ||||||
total_payout_value | 0.000 HBD | ||||||
curator_payout_value | 0.000 HBD | ||||||
pending_payout_value | 0.000 HBD | ||||||
promoted | 0.000 HBD | ||||||
body_length | 276 | ||||||
author_reputation | 2,325,044,616 | ||||||
root_title | "How to build a preferential steem upvote bot using php" | ||||||
beneficiaries |
| ||||||
max_accepted_payout | 1,000,000.000 HBD | ||||||
percent_hbd | 10,000 | ||||||
post_id | 50,464,147 | ||||||
net_rshares | 0 |
Hello @akintunde ... I'm a PHP developer in Uyo, Nigeria. I have always wanted to build some cool tools on the steem blockchain using PHP preferably with the Laravel Framework. I believe this tutorial will help me alot on getting thee basic concepts. Thank YOU for this
author | wizzydayo | ||||||
---|---|---|---|---|---|---|---|
permlink | re-akintunde-how-to-build-a-preferential-steem-upvote-bot-using-php-20180416t234021025z | ||||||
category | utopian-io | ||||||
json_metadata | {"tags":["utopian-io"],"community":"utopian","app":"utopian/1.0.0"} | ||||||
created | 2018-04-16 23:40:33 | ||||||
last_update | 2018-04-16 23:40:33 | ||||||
depth | 1 | ||||||
children | 0 | ||||||
last_payout | 2018-04-23 23:40:33 | ||||||
cashout_time | 1969-12-31 23:59:59 | ||||||
total_payout_value | 0.000 HBD | ||||||
curator_payout_value | 0.000 HBD | ||||||
pending_payout_value | 0.000 HBD | ||||||
promoted | 0.000 HBD | ||||||
body_length | 276 | ||||||
author_reputation | 2,325,044,616 | ||||||
root_title | "How to build a preferential steem upvote bot using php" | ||||||
beneficiaries |
| ||||||
max_accepted_payout | 1,000,000.000 HBD | ||||||
percent_hbd | 10,000 | ||||||
post_id | 50,465,268 | ||||||
net_rshares | 0 |