비트코인 자동매매 프로그램을 만들다 보면 필요한 시점에 알림을 받고 싶은 경우가 있는데요. 이럴 때 라인 라이트 메신저를 이용하면 파이썬을 이용하여 메세지를 보낼 수 있습니다.
이번 시간에는 파이썬을 이용하여 라인 메신저로 메세지를 발송하는 프로그램을 작성해 보도록 하겠습니다.
목차 - 클릭하면 이동합니다.
라인 라이트 메신저
라인 라이트 메신저의 장점
라인 라이트(LINE Lite) 메신저는 네이버 라인 메신저에서 음성/영상 통화 기능과 같은 부가 기능을 제외하고 단순히 메세지 기능만 탑재한 가벼운 버전입니다.
라인 라이트 메신저는 Token을 발급 받으면 본인 또는 타인에게 메세지를 발송할 수 있는 기능이 있어서 상당히 유용하게 사용할 수 있습니다.
예를 들어 비트코인이 10프로 이상 폭락하거나 각종 보조 지표들이 원하는 순간에 온 경우 실시간 알림을 받고 싶은 경우 등에 사용할 수 있습니다.
카카오톡이나 다른 메신저에도 비슷한 기능이 있지만 카카오톡의 경우에는 API Key를 받기가 상당히 까다롭고 Key가 일정 시간 후에 만료되어 계속해서 재발급을 받아야 하는 등 불편한 점이 있습니다.
하지만 라인 라이트 메신저는 한번 토큰을 발급받으면 무료로 계속해서 제한 없이 메세지를 발송할 수 있습니다.
라인 라이트 메신저 설치 방법
먼저 구글 및 애플 앱스토어에서 ① Line Lite를 검색하여 ②설치합니다.
실행하여 시작 버튼을 클릭 합니다.
전화 번호 입력 권한을 허용하면 사용하는 폰의 전화번호를 자동으로 가져 옵니다.
① 불러온 전화번호 또는 전화번호를 수동으로 입력한 후 ② 약관에 동의한 후 ③ 다음 화살표를 클릭합니다.
전화번호로 발송된 인증번호를 입력합니다.
① 새 계정 만들기를 클릭합니다.
계정 이름을 정해서 입력한 후 다음 버튼을 클릭합니다.
계정의 비밀번호를 설정 합니다. 추후 이메일을 등록하고 이메일로 로그인 할 때도 사용하는 비밀번호이기 때문에 잘 기억해 두셔야 합니다.
개인적인 목적으로 사용할 예정이기 때문에 저의 경우는 자동 친구추가 및 친구 추가 허용은 하지 않았습니다.
로그인이 되면 우측 상단의 ① 설정 버튼을 클릭합니다.
① 계정 메뉴를 선택합니다.
PC에서 로그인하여 토큰을 발급 받아야 하기 때문에 ① 로그인 허용에 체크가 되어 있는지 확인 합니다.
이메일 등록 및 인증
휴대폰에 라인 라이트 메신저 설치를 완료 하셨으면 이제 PC에서 로그인을 하기 위한 이메일을 등록하고 인증을 받아야 합니다.
① 로그인 허용이 체크 되어 있는지 확인 한 후 ② 메일을 클릭합니다.
이메일을 입력 후 다음 버튼을 클릭 합니다.
이메일로 받은 인증번호를 입력 합니다.
이메일 등록이 완료 되었습니다.
토큰 발급 받기
이제 PC에서 Line Notify에 로그인하여 토큰을 발급 받아야 합니다.
구글에서 ① Line Notify를 검색하여 ② 웹사이트에 방문합니다.
① Log in 버튼을 클릭 합니다.
① 등록한 이메일과 휴대폰 어플 가입 시 설정한 비밀번호를 입력하고 ② 로그인 버튼을 클릭합니다.
① 상단의 계정명을 클릭하고 ② My page를 클릭 합니다.
① Generate token을 클릭합니다.
① 토큰명을 입력합니다. 메세지를 받을 때 토큰명이 나오게 되니 너무 길게하지 않는 것이 좋습니다.
② 1-on-1 chat with LINE Notify를 선택합니다. 자신에게 메세지를 보내는 기능입니다.
③ Generate token을 클릭 합니다.
발급된 토큰을 ① Copy 버튼을 눌러 복사합니다. 화면을 닫지 마시고 꼭 복사해 두시기 바랍니다.
파이썬을 이용한 메세지 발송 코드
모든 준비가 완료 되었으니 이제 파이썬을 이용해서 메세지를 발송할 수 있습니다.
공통코드 - upbit.py
import time
import logging
import requests
import jwt
import uuid
import hashlib
import math
import os
import pandas as pd
import numpy
from urllib.parse import urlencode
from decimal import Decimal
# Keys
line_target_url = 'https://notify-api.line.me/api/notify'
line_token = '발급받은 토큰'
# -----------------------------------------------------------------------------
# - Name : set_loglevel
# - Desc : 로그레벨 설정
# - Input
# 1) level : 로그레벨
# 1. D(d) : DEBUG
# 2. E(e) : ERROR
# 3. 그외(기본) : INFO
# - Output
# -----------------------------------------------------------------------------
def set_loglevel(level):
try:
# ---------------------------------------------------------------------
# 로그레벨 : DEBUG
# ---------------------------------------------------------------------
if level.upper() == "D":
logging.basicConfig(
format='[%(asctime)s][%(levelname)s][%(filename)s:%(lineno)d]:%(message)s',
datefmt='%Y/%m/%d %I:%M:%S %p',
level=logging.DEBUG
)
# ---------------------------------------------------------------------
# 로그레벨 : ERROR
# ---------------------------------------------------------------------
elif level.upper() == "E":
logging.basicConfig(
format='[%(asctime)s][%(levelname)s][%(filename)s:%(lineno)d]:%(message)s',
datefmt='%Y/%m/%d %I:%M:%S %p',
level=logging.ERROR
)
# ---------------------------------------------------------------------
# 로그레벨 : INFO
# ---------------------------------------------------------------------
else:
# -----------------------------------------------------------------------------
# 로깅 설정
# 로그레벨(DEBUG, INFO, WARNING, ERROR, CRITICAL)
# -----------------------------------------------------------------------------
logging.basicConfig(
format='[%(asctime)s][%(levelname)s][%(filename)s:%(lineno)d]:%(message)s',
datefmt='%Y/%m/%d %I:%M:%S %p',
level=logging.INFO
)
# ----------------------------------------
# Exception Raise
# ----------------------------------------
except Exception:
raise
# -----------------------------------------------------------------------------
# - Name : send_line_msg
# - Desc : 라인 메세지 전송
# - Input
# 1) message : 메세지
# - Output
# 1) response : 발송결과(200:정상)
# -----------------------------------------------------------------------------
def send_line_message(message):
try:
headers = {'Authorization': 'Bearer ' + line_token}
data = {'message': message}
response = requests.post(line_target_url, headers=headers, data=data)
return response
# ----------------------------------------
# 모든 함수의 공통 부분(Exception 처리)
# ----------------------------------------
except Exception:
raise
메세지 발송은 여러 프로그램에서 사용될 수 있으므로 공통 모듈에 작성하는 것이 좋습니다. 공통 모듈을 작성하는 방법은 아래 포스팅에서 자세히 확인하실 수 있습니다.
2021.06.06 - [프로젝트/비트코인 자동매매] - 비트코인 자동매매 - 프로젝트 구조 만들기
메시지 발송 코드
import sys
import logging
import traceback
from module import upbit
# -----------------------------------------------------------------------------
# - Name : main
# - Desc : 메인
# -----------------------------------------------------------------------------
if __name__ == '__main__':
# noinspection PyBroadException
try:
# 로그레벨 설정(DEBUG)
upbit.set_loglevel('I')
# 라인 메세지 발송
rtn = upbit.send_line_message('테스트 메시지 입니다.')
# 발송결과
logging.info(rtn)
except KeyboardInterrupt:
logging.error("KeyboardInterrupt Exception 발생!")
logging.error(traceback.format_exc())
sys.exit(-100)
except Exception:
logging.error("Exception 발생!")
logging.error(traceback.format_exc())
sys.exit(-200)
rtn = upbit.send_line_message('테스트 메시지 입니다.')
위와 같이 호출하면 메세지 발송이 간단히 완료 됩니다.
발송 결과
발송 결과 위와 같이 메세지가 도착하게 됩니다.
마치며
라인 라이트는 무료로 사용할 수 있는 메세지 발송을 위해 최적화 된 어플 입니다. 해당 어플을 이용하여 원하는 순간에 메세지를 발송할 수 있어 비트코인 자동매매 모니터링 프로그램에 사용하면 상당히 편리 합니다.
추후 각종 지표 및 시장 상황을 모니터링하는 프로그램을 만들어 볼 때 사용할 예정이오니 미리 만들어 두시면 추후 편하게 사용이 가능할 것 같습니다.
블로그를 구독하시면 소식을 더 빨리 받아 보실 수 있으니 참고 부탁 드립니다.
'코딩스토리 > 개발관련' 카테고리의 다른 글
무료 SQL DB 툴 추천 - DBeaver 디비버 (0) | 2022.02.06 |
---|---|
데이터베이스 비교 - 오라클, MySQL(MariaDB), PostgreSQL (0) | 2022.02.04 |
파이썬으로 텔레그램 메세지 보내기 (5) | 2022.01.17 |
파이참 다운로드 및 설치 방법 – PyCharm 파이썬 개발도구 (1) | 2021.06.06 |
파이썬 다운로드 및 설치 방법 - Python Download (0) | 2021.06.06 |
SSH Key 생성 - PuTTYgen (3) | 2021.06.03 |