[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 등) 설정 확인하는 방법

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

스팀잇 기본 이야기

스팀잇 심화 이야기

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

해킹과 관련된 이야기

개발과 관련된 이야기
H2
H3
H4
3 columns
2 columns
1 column
8 Comments