Notice
Recent Posts
Recent Comments
Link
Blockchain & Devops, bitetiger
코인 시세 알려주는 텔레그램 봇 만들기 with node-telegram-bot-api 본문
반응형
매번 거래소 사이트에 접속해서 시세를 알아보는게 여간 귀찮은게 아니다. 5G가 아니면 접속하는데 은근히 시간이 많이 소요된다.
그래서 빠르게 응답할 수 있는 텔레그램 봇을 이용해서 원하는 코인 시세만 확인할 수 있는 서버를 만들었다. AWS lambda를 활용할 수 있도록 terraform도 구성해봤다.
- 사용한 라이브러리 : axios, node-telegram-bot-api
- 시세 API : upbit
//app.js
require("dotenv").config();
const axios = require("axios").default;
const TelegramBot = require("node-telegram-bot-api");
const token = process.env.TOKEN;
// Create a bot that uses 'polling' to fetch new updates
const bot = new TelegramBot(token, { polling: true });
// Matches "/echo [whatever]"
bot.onText(/\/help (.+)/, (msg, match) => {
const chatId = msg.chat.id;
const resp = match[1]; // the captured "whatever"
bot.sendMessage(chatId, resp);
});
bot.on("message", (msg) => {
var ticker_l = msg.text.toString().toLowerCase();
var ticker_h = ticker_l.toUpperCase();
{
axios
.get("https://api.upbit.com/v1/ticker?markets=KRW-" + ticker_h)
.then(function (response) {
const resp = response.data[0].trade_price;
const price = resp.toLocaleString() + "원";
bot.sendMessage(msg.chat.id, price); //bot에 보내기
console.log(price);
})
.catch(function (error) {
console.log(error);
})
.then(function () {});
}
});
생각보다 간단하다. 위 코드를 보면 알 수 있듯이 특정 코인의 ticker만 채팅창에 입력하면 해당하는 코인의 시세를 get 요청으로 응답받는다.
curl --request GET \
--url https://api.upbit.com/v1/ticker \
--header 'Accept: application/json'
위처럼, GET요청을 하면 아래와 같은 payload를 전달받게 되고 여기서 필요한 value만 정리해서 텔레그램에 전달하면 된다.
[
{
"market": "KRW-BTC",
"trade_date": "20180418",
"trade_time": "102340",
"trade_date_kst": "20180418",
"trade_time_kst": "192340",
"trade_timestamp": 1524047020000,
"opening_price": 8450000,
"high_price": 8679000,
"low_price": 8445000,
"trade_price": 8621000,
"prev_closing_price": 8450000,
"change": "RISE",
"change_price": 171000,
"change_rate": 0.0202366864,
"signed_change_price": 171000,
"signed_change_rate": 0.0202366864,
"trade_volume": 0.02467802,
"acc_trade_price": 108024804862.58253,
"acc_trade_price_24h": 232702901371.09308,
"acc_trade_volume": 12603.53386105,
"acc_trade_volume_24h": 27181.31137002,
"highest_52_week_price": 28885000,
"highest_52_week_date": "2018-01-06",
"lowest_52_week_price": 4175000,
"lowest_52_week_date": "2017-09-25",
"timestamp": 1524047026072
}
]
자세한 사용법은 아래 upbit 개발자 센터를 참고.
https://docs.upbit.com/reference/ticker%ED%98%84%EC%9E%AC%EA%B0%80-%EB%82%B4%EC%97%AD
업비트 개발자 센터
업비트 Open API 사용을 위한 개발 문서를 제공 합니다.업비트 Open API 사용하여 다양한 앱과 프로그램을 제작해보세요.
docs.upbit.com
앞으론 ticker를 입력하면 원화시세와 함께 김치프리미엄과, 전날기준 변동률까지 나타낼 수 있도록 만들어볼 생각이다.
반응형
'개발 > Javascript' 카테고리의 다른 글
async & await 테스트 해보기 (0) | 2022.07.14 |
---|---|
Javascript 비동기를 처리하는 Promise (0) | 2022.07.14 |
자바스크립트의 JSON parse, stringify 간단 정리 (0) | 2022.07.11 |
React.js 프롭스(Props) (0) | 2022.06.20 |
React.js 상태(State) (0) | 2022.06.19 |
0 Comments