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

in #kr7 years ago (edited)
  • Node.js 를 접해보신분이면 이해가 더욱 쉽습니다
  • 서버 설치가 어느정도 가능하신 분이면 따라하기 쉽습니다.
  • 내용이 다소 난해합니다. 정리가 필요한 부분은 댓글 남겨주시면 보충하겠습니다.
<p dir="auto">여러 개발자 능력자님들이 가격 알리미를 만들어서 배포하시는걸로 아는데 최근 다양한 알트코인 등장과 투자로 인해 이러한 알리미가 존재하지 않는다는것이 매우 슬프실껍니다. (저역시 제가 투자한 코인에 대한 알리미는 없...더라구요) <p dir="auto">그래서! 오늘은 Node.js를 이용하여 간단하게 현재 가격을 알려주는 알리미를 만들어볼려고 합니다. <p dir="auto">첫번째 강좌의 알리미는 coinmarketcap.com의 ticker를 이용하여 symbol을 입력하면 해당하는 가격을 알려주는 알리미입니다. coinmarketcap인 이유는 여러 알트코인에 대한 정보가 모두 나와서 인데요. 추후 강좌에서는 각 거래소 플랫폼별 공개 api를 사용하여 만들어보도록 하겠습니다. <p dir="auto"><h2>1. 사용하실 서버를 선택합니다. <p> <ul> <li>서버의 경우 24시간 켜져있어야지 언제든지 가격을 알 수 있습니다. <li>리눅스 & 윈도우 & Mac OS 상관은 없습니다. 24시간 켜져있을수 있으면 됩니다. <li>Amazon AWS에서는 Free Tier로 t2.micro 리눅스 서버에 한해 24시간 사용시 1년간 무료로 사용을 보장합니다. <li>클라우드는 사용을 안할시 반드시 종료 (Terminate) 시켜야지 비용이 나오지 않습니다. <li>클라우드 사용으로 인한 비용발생은 책임지지 않습니다... <li><span>클라우드 설치 가이드 : <a href="http://blog.naver.com/alice_k106/220314434488" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">http://blog.naver.com/alice_k106/220314434488 <p dir="auto"><h2>2. OS에 따라 Node.js를 설치 합니다. <p> <p dir="auto">서버 OS에 맞는 Node.js LTS 를 설치 합니다.<br /><span> <a href="https://nodejs.org/en/download/" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://nodejs.org/en/download/ <p dir="auto">우분투의 경우 다음을 따라합니다 <blockquote> <p dir="auto"><br /> sudo apt-get install -y nodejs<br /> sudo apt-get install -y npm<span>curl -sL <a href="https://deb.nodesource.com/setup_6.x" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://deb.nodesource.com/setup_6.x | sudo -E bash - <p dir="auto">이외 리눅스 OS는<br /><br /> 의 설명을 따라합니다<span> <a href="https://nodejs.org/en/download/package-manager/" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://nodejs.org/en/download/package-manager/ <p dir="auto"><h2>3. 텔레그램 API token을 발급받습니다. <p> <ul> <li><span>텔레그램 에서 <a href="/@botfather">@botfather 에게 "/newbot" 을 보냅니다 <li>bot이름은 (원하시는 봇 이름)_bot 으로 지정합니다. (봇의 끝은 항상 bot로 끝나야합니다.) <li>botfather가 t.me/botname 의 링크를 주는데, 일단 시작을 합니다. <li>아래에 HTTP API 토큰을 어딘가에 복사해둡니다. <p dir="auto"><h2> 4. js파일을 생성합니다. <p> <p dir="auto">메모장 또는 텍스트 편집기를 엽니다. <pre><code>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 ); } } }); <p dir="auto">토큰 자리에 3에서 발급받은 토큰을 적고, ticker.js (저장방식은 모든 파일, UTF-8 인코딩) 으로 저장합니다. <p dir="auto"><h2> 5. 패키지 설치 <p> <p dir="auto">본 스크립트는 nodejs의 공개패키지인 node-telegram-bot-api, sync-request를 사용합니다.<br /> node-telegram-bot-api는 텔레그램 메세지 전송을 위한 패키지이고<br /> sync-request는 비동기 언어인 node.js에서 동기로 HTTP request를 주는 패키지입니다. <p dir="auto">설치는 다음과 같이 합니다. <blockquote> <p dir="auto">cmd 또는 putty 내에서 ticker.js가 있는 폴더로 이동<br /> npm install node-telegram-bot-api<br /> npm install sync-request <p dir="auto"><h2>6. 실행 <p> <p dir="auto">위 설치가 완료 되었으면 실행을 합니다. <blockquote> <p dir="auto">cmd 또는 putty 내에서 ticker.js가 있는 폴더로 이동<br /> node ticker.js 또는 nodejs ticker.js <p dir="auto"><h2>7. 테스트 <p> <blockquote> <p dir="auto">텔래그램 내에서 시작하였던 봇에게 symbol을 보냅니다. (이더클은 ETC, 핑크는 Pink)<br /> 답이 오는지 확인합니다. <p dir="auto"><h2>8. 프로세스 백그라운드 실행 <p> <blockquote> <p dir="auto">리눅스의 경우<br /> screen<br /> nodejs ticker.js<br /> 창종료<br /> 로 백그라운드 실행이 가능하지만, 타 OS의 경우 설정이 다르기 때문에 문의 주시면 찾아보도록하겠습니다. <p dir="auto">첫 개발을 이다 보니 다소 난해한 부분이 많습니다.<br /> 따라하시다가 어려운 부분있으면 댓글 남겨주시면 친절히 상담 & 강좌 수정토록 하겠습니다.
Sort:  

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

follow, vote하고 갑니다 :)

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

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

@bluepinokio

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

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