나만의 코인가격 텔레그램 알리미 만들기. How to make telegram ticker push service.

in #kr8 years ago (edited)
  • Node.js 를 접해보신분이면 이해가 더욱 쉽습니다
  • 서버 설치가 어느정도 가능하신 분이면 따라하기 쉽습니다.
  • 내용이 다소 난해합니다. 정리가 필요한 부분은 댓글 남겨주시면 보충하겠습니다.

여러 개발자 능력자님들이 가격 알리미를 만들어서 배포하시는걸로 아는데 최근 다양한 알트코인 등장과 투자로 인해 이러한 알리미가 존재하지 않는다는것이 매우 슬프실껍니다. (저역시 제가 투자한 코인에 대한 알리미는 없...더라구요)

그래서! 오늘은 Node.js를 이용하여 간단하게 현재 가격을 알려주는 알리미를 만들어볼려고 합니다.

첫번째 강좌의 알리미는 coinmarketcap.com의 ticker를 이용하여 symbol을 입력하면 해당하는 가격을 알려주는 알리미입니다. coinmarketcap인 이유는 여러 알트코인에 대한 정보가 모두 나와서 인데요. 추후 강좌에서는 각 거래소 플랫폼별 공개 api를 사용하여 만들어보도록 하겠습니다.

1. 사용하실 서버를 선택합니다.

  • 서버의 경우 24시간 켜져있어야지 언제든지 가격을 알 수 있습니다.
  • 리눅스 & 윈도우 & Mac OS 상관은 없습니다. 24시간 켜져있을수 있으면 됩니다.
  • Amazon AWS에서는 Free Tier로 t2.micro 리눅스 서버에 한해 24시간 사용시 1년간 무료로 사용을 보장합니다.
  • 클라우드는 사용을 안할시 반드시 종료 (Terminate) 시켜야지 비용이 나오지 않습니다.
  • 클라우드 사용으로 인한 비용발생은 책임지지 않습니다...
  • 클라우드 설치 가이드 : http://blog.naver.com/alice_k106/220314434488

2. OS에 따라 Node.js를 설치 합니다.

서버 OS에 맞는 Node.js LTS 를 설치 합니다.
https://nodejs.org/en/download/

우분투의 경우 다음을 따라합니다

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y npm

이외 리눅스 OS는
https://nodejs.org/en/download/package-manager/
의 설명을 따라합니다

3. 텔레그램 API token을 발급받습니다.

  • 텔레그램 에서 @botfather 에게 "/newbot" 을 보냅니다
  • bot이름은 (원하시는 봇 이름)_bot 으로 지정합니다. (봇의 끝은 항상 bot로 끝나야합니다.)
  • botfather가 t.me/botname 의 링크를 주는데, 일단 시작을 합니다.
  • 아래에 HTTP API 토큰을 어딘가에 복사해둡니다.

4. js파일을 생성합니다.

메모장 또는 텍스트 편집기를 엽니다.

const TelegramBot = require('node-telegram-bot-api');
var request = require('sync-request');

const token = '3에서 발급받은 토큰 주소';
const bot = new TelegramBot(token, {polling: true});

bot.on('message', (msg) => {
  const chatId = msg.chat.id;
    var whole_ticker = request('GET', 'https://api.coinmarketcap.com/v1/ticker/');
    var whole_price = JSON.parse(whole_ticker.getBody().toString("utf8"));
    for (var i=0;i<whole_price.length;i++){
        if(whole_price[i].symbol == msg.text.toUpperCase()) {
            var res_fx = request('GET', 'https://api.coinone.co.kr/currency/');
            var fx_price = JSON.parse(res_fx.getBody().toString("utf8"));
            var tick_msg = "==== " + whole_price[i].name + " 가격"+"==== \n";
                tick_msg += "USD: "+ whole_price[i].price_usd + "\n";
                tick_msg += "BTC: "+ whole_price[i].price_btc + "\n";
                tick_msg += "KRW: "+ Number(Number(whole_price[i].price_usd) * Number(fx_price.currency)).toFixed(0) ;
            bot.sendMessage(chatId, tick_msg );
        }
    }
});

토큰 자리에 3에서 발급받은 토큰을 적고, ticker.js (저장방식은 모든 파일, UTF-8 인코딩) 으로 저장합니다.

5. 패키지 설치

본 스크립트는 nodejs의 공개패키지인 node-telegram-bot-api, sync-request를 사용합니다.
node-telegram-bot-api는 텔레그램 메세지 전송을 위한 패키지이고
sync-request는 비동기 언어인 node.js에서 동기로 HTTP request를 주는 패키지입니다.

설치는 다음과 같이 합니다.

cmd 또는 putty 내에서 ticker.js가 있는 폴더로 이동
npm install node-telegram-bot-api
npm install sync-request

6. 실행

위 설치가 완료 되었으면 실행을 합니다.

cmd 또는 putty 내에서 ticker.js가 있는 폴더로 이동
node ticker.js 또는 nodejs ticker.js

7. 테스트

텔래그램 내에서 시작하였던 봇에게 symbol을 보냅니다. (이더클은 ETC, 핑크는 Pink)
답이 오는지 확인합니다.

8. 프로세스 백그라운드 실행

리눅스의 경우
screen
nodejs ticker.js
창종료
로 백그라운드 실행이 가능하지만, 타 OS의 경우 설정이 다르기 때문에 문의 주시면 찾아보도록하겠습니다.

첫 개발을 이다 보니 다소 난해한 부분이 많습니다.
따라하시다가 어려운 부분있으면 댓글 남겨주시면 친절히 상담 & 강좌 수정토록 하겠습니다.

Sort:  

아, 시도해보고 싶었는데 ! 뭔가 어려워보이는군요 ㅠ 시도하면서 모르는 부분있으면 물어볼께요. ㅎ 좋은 내용 감사합니다.

follow, vote하고 갑니다 :)

@bluepinokio 제가 비개발자 대상으로는 첫 글이다 보니 다소 미흡한 부분이 많습니다. 서버 설정이라는게 OS별 (Ubuntu, Debian, CentOS, Windows 등등)로 다르고 사용하고자 하는 서버 (단독, Amazon AWS, Microsoft Azure, KT uCloud 등등 ) 설정역시 다르다 보니 어디서 부터 써야하나... 가 제일 어렵습니다. ㅠㅠ 사실상 스크립트 제공이 핵심이지만 비개발자가 따라하기 쉽도록 강좌를 추가하거나 수정해야할것 같습니다.

혹시 mac으로도 접근 할 수 있나요? 제가 mac이라

@bluepinokio

네, ^^ 2번에서 MacOS에 맞는 nodejs를 설치후 진행하시면됩니다.

감사합니다. 팔로우 하고 모르는거 있음 물어볼께요.ㅎ