슬랙 알림봇 세팅 : 매시간마다 비트코인 가격 알림
나를 대신해서 시장을 모니터링하고 있다면 비트코인 투자에서도 자신감이 생깁니다. 이 프소팅에서는 파이썬 파이낸스 API로 시장상황을 모니터링 하면서, 매 시간 현재가가 어느 위치에 있는지를 주기적으로 알려주는 슬랙 알림봇을 만들어 보겠습니다.
글의 순서
슬랙 알림봇, slack_sdk 패키지
비트코인 가격 알림봇의 기본 구조 : 무한 반복문
슬랙 알림봇 : 비트코인 가격
슬랙 알림봇 ; 비트코인 실시간 가격 메신저
슬랙 알림봇, slack_sdk 패키지
슬랙 알림봇을 가장 간단하게 만들 수 있는 방법은 slack_sdk 패키지를 이용한 방법입니다. 지난 포스팅 슬랙 알림봇, slack_sdk를 이용한 파이썬 코드에서 단 몇 줄의 코딩으로 슬랙 채널에 메시지가 전송되는 것을 보았습니다. 슬랙 알림봇은 아래의 ‘함께 참고하면 좋은 글’에 링크해 두었습니다.
파이썬 프로그래밍을 통해 미리 만들어둔 메시지를 자동으로 보내는 연습을 해보겠습니다. 파이선 바이낸스 API로 받은 비트코인 가격을 매 시간 알려주게 하는 파이썬 코드를 확인해 보시기 바랍니다.
import time
import datetime
from datetime import datetime, timezone, timedelta
while True:
try:
current_time = datetime.now()
msg = f"현재 시간: {current_time.strftime('%Y-%m-%d %H:%M:%S')}"
print(msg)
time.sleep(3)
except Exception as e:
print('Exception occured :', str(e))
import time
import datetime
from datetime import datetime, timezone, timedelta
def time_to_notify():
"""현재 시간이 2분마다 반복되는 시간(00분, 02분, 04분, ...)인지 확인"""
current_minute = datetime.now().minute
return current_minute % 2 == 0
while True:
time.sleep(20) # 매 20초 대기
try:
# 현재 시간이 알림 시간인지 확인 후 참일때 아래 명령어 수행.
if time_to_notify():
current_time = datetime.now()
msg = f"현재 시간: {current_time.strftime('%Y-%m-%d %H:%M:%S')}"
print(msg)
except Exception as e:
print('Exception occured :', str(e))
현재 시간: 2024-04-06 12:16:12 현재 시간: 2024-04-06 12:16:32 현재 시간: 2024-04-06 12:16:52 현재 시간: 2024-04-06 12:18:12 현재 시간: 2024-04-06 12:18:32
import time
import datetime
from datetime import datetime, timezone, timedelta
import os
import pandas as pd
import numpy as np
from binance.client import Client
import slack_sdk
# 01-1) 파이썬-바이낸스 API key, API Secret 가져오기
api_key = os.getenv('Binan_API_KEY')
api_secret = os.getenv('Binan_SECRET_KEY')
# 01-2) 바이낸스 계정 접속
client = Client(api_key, api_secret)
print('-- Account accessed --')
# 02) 현재시간이 원하는 시간대인지 확인하는 함수
def time_to_notify():
"""현재 시간이 2분마다 반복되는 시간(00분, 02분, 04분, ...)인지 확인"""
current_minute = datetime.now().minute
return current_minute % 2 == 0
# 03) 비트코인 가격 모니터링 : 무한반복문
while True:
time.sleep(20) # 매 20초 대기
try:
# 03-1) 현재 시간이 알림 시간인지 확인 후 참일때 아래 명령어 수행.
if time_to_notify():
current_time = datetime.now()
# 03-2) 파이썬 바이낸스 API로 비트코인 가격 가져오기
btc_price = client.get_symbol_ticker(symbol="BTCUSDT")
btc_price_only = btc_price["price"]
print(btc_price_only)
text_now = current_time.strftime('%Y-%m-%d %H:%M:%S')
msg = f'[{text_now}] BTC(USDT) = {float(btc_price_only):6.0f}'
print(msg)
except Exception as e:
print('Exception occured :', str(e))
-- Account accessed -- 68063.13000000 [2024-04-06 16:08:11] BTC(USDT) = 68063 68056.67000000 [2024-04-06 16:08:31] BTC(USDT) = 68057 68051.95000000 [2024-04-06 16:08:52] BTC(USDT) = 68052
import time
import datetime
from datetime import datetime, timezone, timedelta
import os
import pandas as pd
import numpy as np
from binance.client import Client
import slack_sdk
# 01-1) 파이썬-바이낸스 API key, API Secret 가져오기
api_key = os.getenv('Binan_API_KEY')
api_secret = os.getenv('Binan_SECRET_KEY')
# 01-2) 바이낸스 계정 접속
client = Client(api_key, api_secret)
print('-- Account accessed --')
# 01-3) 슬랙 앱 토큰 가져오기
slack_token = os.getenv('slack_OAuth_Token')
agent = slack_sdk.WebClient(token = slack_token)
# 01-4) 슬랙 메시지 보내는 함수
def send_slack_message(text):
channel = "#코인시장-모니터링"
agent.chat_postMessage(channel = channel, text=text)
# 02) 현재시간이 원하는 시간대인지 확인하는 함수
def time_to_notify():
"""현재 시간이 2분마다 반복되는 시간(00분, 02분, 04분, ...)인지 확인"""
current_minute = datetime.now().minute
return current_minute % 2 == 0
# 03) 비트코인 가격 모니터링 : 무한반복문
while True:
time.sleep(20) # 매 20초 대기
try:
# 03-1) 현재 시간이 알림 시간인지 확인 후 참일때 아래 명령어 수행.
if time_to_notify():
current_time = datetime.now()
# 03-2) 파이썬 바이낸스 API로 비트코인 가격 가져오기
btc_price = client.get_symbol_ticker(symbol="BTCUSDT")
btc_price_only = btc_price["price"]
print(btc_price_only)
text_now = current_time.strftime('%Y-%m-%d %H:%M:%S')
msg = f'[{text_now}] BTC(USDT) = {float(btc_price_only):6.0f}'
print(msg)
# 03-3) 슬랙 메시지 함수로 비트코인 가격 알림
send_slack_message(msg)
except Exception as e:
print('Exception occured :', str(e))
import time
import datetime
from datetime import datetime, timezone, timedelta
import os
import pandas as pd
import numpy as np
from binance.client import Client
import slack_sdk
# 01-1) 파이썬-바이낸스 API key, API Secret 가져오기
api_key = os.getenv('Binan_API_KEY')
api_secret = os.getenv('Binan_SECRET_KEY')
# 01-2) 바이낸스 계정 접속
client = Client(api_key, api_secret)
print('-- Account accessed --')
# 01-3) 슬랙 앱 토큰 가져오기
slack_token = os.getenv('slack_OAuth_Token')
agent = slack_sdk.WebClient(token = slack_token)
# 01-4) 슬랙 메시지 보내는 함수
def send_slack_message(text):
channel = "#코인시장-모니터링"
agent.chat_postMessage(channel = channel, text=text)
# 02) 현재시간이 원하는 시간대인지 확인하는 함수
def time_to_notify():
"""현재 시간이 1시간마다 반복되는 시간(01시, 02시, 03시, ...)인지 확인"""
current_hour = datetime.now().hour
return current_hour % 1 == 0
# 03) 비트코인 가격 모니터링 : 무한반복문
while True:
time.sleep(10) # 매 10초 대기
try:
# 03-1) 현재 시간이 알림 시간인지 확인 후 참일때 아래 명령어 수행.
if time_to_notify():
current_time = datetime.now()
# 03-2) 현재시간이 매시간:20분:00초에서 20분:09초라면 실행
if current_time.minute == 20 and current_time.second < 10:
# 03-3) 파이썬 바이낸스 API로 비트코인 가격 가져오기
btc_price = client.get_symbol_ticker(symbol="BTCUSDT")
btc_price_only = btc_price["price"]
print(btc_price_only)
text_now = current_time.strftime('%Y-%m-%d %H:%M:%S')
msg = f'[{text_now}] BTC(USDT) = {float(btc_price_only):6.0f}'
print(msg)
# 03-3) 슬랙 메시지 함수로 비트코인 가격 알림
send_slack_message(msg)
except Exception as e:
print('Exception occured :', str(e))