Steem Token Voting Bot 개발

in #sct5 years ago (edited)

안녕하세요 @realmankwon입니다.

며칠 전 Bot 개발 관련 포스팅을 하였습니다.
개발된 Bot의 내용은 다음과 같습니다.

1 . 본계정과 부계정의 Token Claim
2 . 본계정의 SCT 를 제외한 모든 Token 을 부계정으로 전송
3 . 부계정의 Staking 가능한 모든 Token Staking

일단 며칠 써 본 결과 확실히 편하네요 ^^
이제는 Voting Bot 만 개발하면 큐레이팅 자동화를 통한 채굴이 완료될 것 같습니다.
관련해서 그동안 소스 투고를 하면서 보았던 nitrous 소스에서 필요한 api 를 많이 공부해서 오늘 대략적인 소스는 개발을 하였습니다.

소스는 다음과 같습니다.

    const steem = require('steem');
    const axios = require('axios');
    const SSC = require('sscjs');
    const ssc = new SSC('https://api.steem-engine.com/rpc/');
    
    const discussionQuery = {
        token: 'SCT',
        limit: 30,
    };

    getScotDataAsync('get_discussions_by_promoted', discussionQuery)
        .then(feedData => {
            feedData.forEach(content =>{
                const diffTime = ((new Date()).getTime() - (new Date(content.created)).getTime()) / (1000 * 60) - 9 * 60;
                if(diffTime < 20){
                    console.log(`${content.authorperm} : ${diffTime}`);
                    let isVoting = false;

                    content.active_votes.forEach(voter => {
                        if(voter.voter === 'realmankwon') {
                            isVoting = true;
                            return true;
                        }
                    });

                    if(isVoting){
                        console.log("Already!");
                    } else {
                        console.log("Not yet!");
                    }
                }
            });
        });
    
    
    async function getScotDataAsync(path, params) {
        return callApi(`https://scot-api.steem-engine.com/${path}`, params);
    }

     async function callApi(url, params) {
         return await axios({
             url,
             method: 'GET',
             params,
         })
             .then(response => {
                 return response.data;
             })
             .catch(err => {
                 console.error(`Could not fetch data, url: ${url}`);
                 return {};
             });
     }

현재는 SCT 만을 예로 들었습니다.
AAA, ZZAN, SPT 등은 discussionQuery 에서 token 뒷 부분에 해당 Token 을 넣으면 됩니다.

홍보글에서 20분 이내의 글만을 가져와서 제 본계정으로 voting 이 되어 있는지 안 되어 있는지 확인한 후에 되어 있지 않으면 "Not Yet" 을 출력하고 되어 있으면 "Already"를 출력시켰습니다.
이제 Not Yet 부분에 Voting을 하는 로직만 넣으면 화이트리스트와 상관없이 홍보글 중 20분 이내에 제가 Voting 하지 않은 글에 자동으로 Voting을 할 수가 있습니다.

이 소스에 화이트리스트를 추가하고 Voting 로직을 추가하여 금주내로 적용을 할 예정입니다.
그래서 다음주부터는 SCT 운영 개발에 거의 대부분의 시간을 할애 할려고 합니다.
Voting Bot 을 운영하고 싶으신 분들은 해당 소스를 참고하셔서 운영하시면 도움이 될 것 같습니다.

Sort:  

To listen to the audio version of this article click on the play image.

Brought to you by @tts. If you find it useful please consider upvoting this reply.

한번 참고해서 만들어 봐야 하는데 KRW 마이닝한다고 시간이 많이 없네요 t.t 늘 감사하게 잘 사용하고 있습니다.

와~ 정말 너무 감사합니다~

열심히 연구해서 잘 활용해 보겠습니다~

소스 공개 감사합니다.

Coin Marketplace

STEEM 0.29
TRX 0.11
JST 0.033
BTC 63945.57
ETH 3135.76
USDT 1.00
SBD 4.00