코딩스토리/개발관련

파이썬을 이용하여 라인 라이트(Line Lite) 메신저로 메세지 발송하기

Tech&Fin 2021. 11. 10. 00:09
반응형

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

 

이번 시간에는 파이썬을 이용하여 라인 메신저로 메세지를 발송하는 프로그램을 작성해 보도록 하겠습니다.

 

 

목차 - 클릭하면 이동합니다.

     

    라인 라이트 메신저

    라인 라이트 메신저의 장점

    라인 라이트(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('테스트 메시지 입니다.')

    위와 같이 호출하면 메세지 발송이 간단히 완료 됩니다.

     

    발송 결과

    발송 결과 위와 같이 메세지가 도착하게 됩니다.

     

    마치며

    라인 라이트는 무료로 사용할 수 있는 메세지 발송을 위해 최적화 된 어플 입니다. 해당 어플을 이용하여 원하는 순간에 메세지를 발송할 수 있어 비트코인 자동매매 모니터링 프로그램에 사용하면 상당히 편리 합니다.

     

    추후 각종 지표 및 시장 상황을 모니터링하는 프로그램을 만들어 볼 때 사용할 예정이오니 미리 만들어 두시면 추후 편하게 사용이 가능할 것 같습니다.

     

    블로그를 구독하시면 소식을 더 빨리 받아 보실 수 있으니 참고 부탁 드립니다.

    반응형