[NodeJS] API 사용 법 10편 간단한 보팅 봇 만들기

안녕하세요 ayogom 입니다.
어느듯 10편을 작성하고 있네요. 밑천이 바닥나는 기분을 느끼고 있습니다. 장시간 연재를 하시는 분들은 정말 대단하신 것 같습니다 ㅎㅎ
오늘은 간단한 보팅봇을 만들어보려고 합니다 ㅎㅎ 기본이 되는 소스는 [NodeJS] API 사용 법 8편 스팀 블럭 모니터링 하기 2편 을 기본으로 진행 합니다.

var steem = require('steem');

steem.api.streamBlockNumber('head',function(err, result){
        console.log(err, result);
        steem.api.getBlock(result ,function(err, result){
            for (var i=0;i<result.transactions.length;i++){ 
                console.log(result.transactions[i].operations[0][0]);
            }
        })      
});

위의 코드는 스팀 내에 transactions이 어떠한 transactions이었는지 확인하는 코드 입니다. 보팅을 하기 위해서는 제일 먼저 무엇을 알아야 할까요? 체인내에 글이 올라온다는 것을 알아야 합니다.

마침 바로 딱 좋은 케이스가 나왔네요.

http://steemd.com/b/54269853

여기서 보시면 comment 가 바로 포스팅 혹은 댓글이 추가되었다는 transactions 입니다.
따라서 해당 comment 만을 추출 해야 합니다. 간단하게 IF 문을 쓰면 되겟죠?

가볍게 해당 내용을 살펴보면

var steem = require('steem');

steem.api.streamBlockNumber('head',function(err, result){
        console.log(err, result);
        steem.api.getBlock(result ,function(err, result){
            for (var i=0;i<result.transactions.length;i++){ 
                if ("comment" == result.transactions[i].operations[0][0]){
                    console.log(result.transactions[i].operations[0][0])
                    console.log(result.transactions[i].operations[0][1])
                }
            }
        })      
});

위의 코드는 "comment" 관련 내용을 추출 하는 코드 입니다.

위 에서 나오는 [ ] 에 따라 분리가 됩니다.
② 부분은 result.transactions[i].operations[0][0] 을 의미 하고요
③ 부분은 result.transactions[i].operations[0][1]을 의미합니다.

② 에서는 해당 transactions 이 무엇인지 확인을 할 수 있고요
③ 에서는 그 transactions 의 내용을 확인 할 수 있습니다.
따라서 저 위의 comment을 추출 해서 해당 내용이 무엇인지 본 경우 입니다.

해당 내용을 살펴보면

parent_author: 'ghostfacer99',
parent_permlink: 'qu1j4d',
author: 'fazalwattoo',
permlink: 'qu25jk',
title: '',
body: 'Sir i am from Pakistan so i add the tag of pakistan and also i add my achievement1 link.please label me in this community.',
json_metadata: '{"app":"steemit/0.2"}'

이렇게 쓰여져 있는데요 실제 해당 포스팅을 살펴보면

ghostfacer99 가 작성한 qu1j4d 포스팅에 fazalwattooSir i am from Pakistan so i add the tag of pakistan and also i add my achievement1 link.please label me in this community.의 내용을 qu25jk 주소로 작성 한 것을 알 수 있습니다.

  • 댓글에는 title 이 없습니다. title 있으면 댓글로 보지 않아요.

우리가 알고자 하는 내용이 다 담겨있죠?

그럼 한번 해볼까요?

var steem = require('steem');

var wif = "5KL*********************"
var voter = "ayogom"

steem.api.streamBlockNumber('head',function(err, result){
        console.log(err, result);
        steem.api.getBlock(result ,function(err, result){
            for (var i=0;i<result.transactions.length;i++){ 
                if ("comment" == result.transactions[i].operations[0][0]){
                    if ("ayogom" == result.transactions[i].operations[0][1].author){
                        var author = result.transactions[i].operations[0][1].author
                        var permlink = result.transactions[i].operations[0][1].permlink
                        var weight = 10000
                        steem.broadcast.vote(wif, voter, author, permlink, weight, function(err, result) {
                            console.log(err, result);
                        });
                    }
                }
            }
        });     
});

transactions 중에 ayogom 이 쓴 글 혹은 포스팅이 발견되면 해당 글 혹은 포스팅에 100% 보팅을 해라 라는 코드 입니다.

이 글을 완료하기 전에 해당 코드가 잘 동작하는지 코드를 동작 시켜보겠습니다.
아마도 정상적으로 동작을 한다면 해당 포스팅에 제가 셀프 보팅을 하게 될 것 같습니다.
그럼 결과는 댓글로 남겨놓겠습니다

오늘도 참 쉽죠?~

작성 예정인 글 List

  • Nodejs 를 이용한 스팀 API 사용해보기 (계속)
  • SCT 포스팅피 납부 방법
  • 니트로스별(SCT, ZZAN, AAA 등) 설정 확인하는 방법

누군가에게는 도움이 될 수 있는 글

스팀잇 기본 이야기

스팀잇 심화 이야기

스팀잇 보상과 연결되는 이야기

해킹과 관련된 이야기

개발과 관련된 이야기
Sort:  

[US$80.50](▼16%)[SONGJING]SONGJING SJ-125E 제습기 / 송징 SJ-125E 제습기 / 36평적용 / 165W 고출력 / 대용량 물탱크 / 관부가

WWW.QOO10.COM

정상적으로 보팅을 실시 했습니다.
다만 포스팅&댓글 구분을 하지 않았습니다 ㅎ

start success go! go! go!

@ayogom transfered 9 KRWP to @krwp.burn. voting percent : 8.37%, voting power : 60.06%, steem power : 1780536.42, STU KRW : 1200.
@ayogom staking status : 800 KRWP
@ayogom limit for KRWP voting service : 1.6 KRWP (rate : 0.002)
What you sent : 9 KRWP
Refund balance : 7.4 KRWP [54271515 - 701559596104ef1147511d3ef70eac461da253bc]

뭔지 몰라도 대단하네요.

@tytf 님의 최근 글에 100개 이상의 스팀의 파워업을 인증하는 사진 파일과 최근 게시 글 링크를 포함하는 댓글을 다는 코드를 작성해 보는 건 어떤가요?

응용 편으로 한번 만들어봐도 좋겠네요 ㅎ

This post has been featured in the latest edition of Witness Weekly...