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

in SteemCoinPan •  2 years ago 

안녕하세요 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 등) 설정 확인하는 방법

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

스팀잇 기본 이야기

스팀잇 심화 이야기

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

해킹과 관련된 이야기

개발과 관련된 이야기
Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

[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개 이상의 스팀의 파워업을 인증하는 사진 파일과 최근 게시 글 링크를 포함하는 댓글을 다는 코드를 작성해 보는 건 어떤가요?

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

@yonggyu01님이 당신을 멘션하였습니다.

https://www.steemit.com/@yonggyu01/6rzgul

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