비트코인 자동매매 프로그램을 만들다 보면 필요한 시점에 알림을 받고 싶은 경우가 있는데요. 이럴 때 라인 라이트 메신저를 이용하면 파이썬을 이용하여 메세지를 보낼 수 있습니다.
이번 시간에는 파이썬을 이용하여 라인 메신저로 메세지를 발송하는 프로그램을 작성해 보도록 하겠습니다.

목차 - 클릭하면 이동합니다.
라인 라이트 메신저
라인 라이트 메신저의 장점
라인 라이트(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 - [프로젝트/비트코인 자동매매] - 비트코인 자동매매 - 프로젝트 구조 만들기
비트코인 자동매매 - 프로젝트 구조 만들기
이번 시간에는 본격적으로 로직을 만들고 살을 붙이기 전에 프로젝트 구조를 만들어 보도록 하겠습니다. 비트코인 자동매매 프로그램을 만드는 것이 얼마나 간단한지는 아래 포
technfin.tistory.com
메시지 발송 코드
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 |