디스코드 알림 봇 파이썬 코드
디스코드 메신저는 카카오톡의 단톡방처럼 커뮤티니 도구로 널리 쓰이고 있습니다. 이번 포스팅에서는 나만을 위한 디스코드 알림 봇을 만들어보겠습니다. 비트코인 시장을 계속 모니터링하다가 원하는 조건이 되면 알려주는 충실한 봇을 구현하는 기본 뼈대를 만드는 것이 이번 포스팅의 목적입니다.
글의 순서
디스코드 메신저, 알림 봇
비트코인 가격 모니터링 봇의 기본 구조 : 무한 반복문
파이썬 디스코드 알림 봇의 알림 메시지 형태 결정 : f-string 출력문
디스코드 메신저, 알림 봇
디스코드 메신저로 만드는 알림 봇 : 파이썬 함수 예제라는 포스팅에서 파이썬으로 디스코드 알림 봇을 만들어 보았습니다. 이 포스팅에서 살펴봤던 디스코드 메신저 알림 로봇의 기본 틀을 아래와 같이 정리할 수 있습니다.
(1) 디스코드 웹훅 URL 받아 복사하기
(2) 로그인을 위한 config 파일 구성 : 웹훅URL 붙여넣기
(3) request.post()로 디스코드 채널에 메시지 보내기
(4) 메시지 전송 함수 만들기
이 기본 틀에 디스코드 알림 봇이 비트코인 시장을 지켜보게 만드는 간단한 파이썬 코드를 추가해 보겠습니다.
비트코인 가격 모니터링 봇의 기본 구조 : 무한 반복문
비트코인 가격을 계속 지켜보고 있다가 특정 조건이 되면 알림을 보내는 디스코드 알림 봇을 구현하기 위해서 무한 반복문을 활용합니다. 파이썬 무한 반복문의 기본은 while True:이며, 기본적으로 예외처리까지 해주는 것이 좋습니다.
(1) 계속 지켜보고 있다가 : 무한 반복문
이것을 실제로 만들기 위해서는 ‘계속 지켜보고 있다가’부터 먼저 구현해야합니다. ‘계속 지켜보다’는 아래와 같은 반복문으로 처리합니다. 여기서, time 패키지의 sleep() 함수를 사용하면 시간 간격을 설정해 줄 수 있습니다. time.sleep(5) 이라고 설정하면, ‘5초씩 자라’라는 뜻이니까 ‘5초에 한 번씩’과 같은 의미입니다.
1 2 3 |
while True: time.sleep(5) print (‘계속 지켜 본다’) |
(2) 예외 처리
실습코드01처럼 무한 반복 시키다가, 프로그램 실행 도중에 에러(error)가 발생하면, 프로그램은 예외메시지를 표시하고 자동 종료됩니다.
만약 서버에서 돌리고 있던 비지니스 프로그램이라면 종료되지 않게 해야 합니다. 이때 필요한 것이 예외처리입니다. 실습코드02처럼 예외 처리를 해서 프로그램이 종료되는 것을 막을 수 있습니다.
방법은 간단합니다.
1 2 3 |
try: except Exception as e: print(e) |
라는 구문을 반복문 바로 아래 위치시키면 됩니다. 그런데 혹시 어떤 에러가 발생했는지를 알고 싶으면 어떻게 해야 할까요?
어떤 종류의 예외가 발생했는지를 확인하려면, Exception을 문자열로 출력시킵니다. 이 방식을 사용하면 예외를 확인한 후 코드의 틀린 부분을 바로잡는데 도움이 됩니다. 참고로, 이렇게 코드의 틀린 부분을 바로잡는 과정을 디버깅이라고 합니다.
1 2 3 4 5 6 7 8 9 10 11 |
import time i = 0 while i<3: try: print(i) time.sleep(3) i = i+1 print(i, j) except Exception as e: print('Exception occured :', str(e)) |
1 2 3 4 5 6 |
0 Exception occured : name 'j' is not defined 1 Exception occured : name 'j' is not defined 2 Exception occured : name 'j' is not defined |
파이썬 디스코드 알림 봇의 알림 메시지 형태 결정 : f-string 출력문
내게 자동으로 메시지를 보내줄 수 있도록 파이썬 코드로 디스코드 알림 봇을 만들어보겠습니다. 파이썬 프로그래밍을 통해 미리 만들어둔 메시지를 자동으로 보낼 수 있는데요. 궁극적인 목적은 주식, 코인의 거래량이나 기술적 분석 결과가 내가 원하는 조건을 만족하는 순간 디스코드 알림 봇이 내게 디스코드 메시지를 보내게 하는 것입니다.
직접 따라해보는 것이 가장 빠르게 배우는 방법입니다. 실습코드03은 디스코드용 메시지 포맷에 대한 예제입니다. 기본적으로 코인시장을 지켜보고 있어야 하니까, 파이썬 실습코드01, 02의 형태가 그대로 사용됩니다. 여기서 디스코드 알림 봇이 알려주는 정보는 시간과 가격입니다. 시간과 가격을 디스코드 메시지에 싣기 위해서 msg라는 변수를 사용했고, f-string이라는 출력문 포맷으로 원하는 형식으로 쓸 수 있게 하였습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
import requests import yaml import os import time import datetime from datetime import datetime, timezone, timedelta with open('config.yaml', encoding='UTF-8') as f: config = yaml.load(f, Loader=yaml.FullLoader) DISCORD_WEBHOOK_URL = config['DISCORD_WEBHOOK_URL'] #--- message = UTC + msg, in here msg is parameter --- def send_message(msg): message = {'content':f"[{utc_now.strftime('%Y-%m-%d %H:%M:%S')}] {str(msg)}"} requests.post(DISCORD_WEBHOOK_URL, data=message) # 01) -------- 계속 지켜본다 --------- while True: try: timestamp_now = time.time() utc_now = datetime.fromtimestamp(timestamp_now) BTC_deposited = 0.001 msg = f'BTC_deposited :: {BTC_deposited:10.4f}' send_message(msg) time.sleep(3) except Exception as e: print('Exception occured :', str(e)) |
마치며 …
디스코드 메신저는 카카오톡의 단톡방처럼 커뮤티니 도구로 널리 쓰이고 있는 메신저입니다. 이번 포스팅에서는 나만을 위한 디스코드 알림 봇을 만들어보았습니다. 파이썬 코드로 디스코드 알림 봇을 구현할 때 필요한 가장 기본적인 형식이 무한 반복문입니다. 간단히 정리해보면 다음과 같습니다.
▶비트코인 가격 모니터링 봇의 기본 구조 구성 : 무한 반복문
▶디스코드 메시지 구성 : 현재 시간과 원하는 메시지 형태
▶디스코드 휍훅 URL을 이용한 디스코드 메시지 보내기
다음 포스팅에서는 비트코인 보유 현황을 나타내는 BTC-deposited라는 변수를 실시간 가격으로 바꿔보겠습니다.
함께 참고하면 더 좋은 글 :
▶ 슬랙 알림봇 : 비트코인 실시간 가격 메신저
▶ 슬랙 알림봇, slack_sdk를 이용한 파이썬 코드
▶ 디스코드 메신저로 만드는 알림 봇 : 파이썬 함수 예제
▶ 디스코드 메신저로 만드는 알림 봇 : 웹훅URL/
▶ 바이낸스 코인거래소 API Key로 계좌에 접속하는 파이썬 프로그래밍
▶ 파이썬 바이낸스 API로 시계열 데이터를 가져오는 파이썬 프로그래밍
▶ 파이썬 프로그래밍 시작
참고자료
김황후(2020), 파이썬 증권 데이터 분석, 한빛미디어
쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.