Bot User OAth Token에 해당하는 글 1

파이썬에서 Slack API를 통한 주식매매정보 보내기

반응형

안녕하세요?

 

오늘은 주식자동매매 구현시 자동매매 도중에 발생되는 정보나

Status, 추천종목정보, 자동매수 매도 결과를 자신의 Slack 메신저로 보내주기 위해

필요한 Slack API 설정 및 그 설정을 이용한 파이썬 코드, 

그리고, 그 결과 메세지가 전송된 결과 화면을 공유해 보고자 합니다.

 

1. slack API 설정화면

   하기 화면 메뉴에서 Bot User OAuth Access Token 값을 Copy합니다.

   여기서 token생성하는 과정은 다른 전문가님들의 가이드 메뉴 참조하시기 바랍니다.

   여기서는 생략하겠습니다. 

 

추가로, Scope도 추가 정의해 줘야 합니다.

slack bot에 access하는 application python에서 slack bot에 어떠어떠한 권한까지

가질수 있는지를 지정한다고 보시면 됩니다.

저는 channel읽기, chat에 글 올리기, 파일읽기 등 총 5가지 모두를 부여해 봤습니다.

 

2. Python slack.py 소스 코드

   우선 slack.py로 파이썬 코드를 분리했습니다.

   나중에 main 파이썬에서 from slack import *

   로 포함시키도록 하면 됩니다.

from slacker import Slacker

class Slack():
   def __init__(self):
       ############################################################
       # Slack API에서 "auto Traders" 
       # Installed App Settings
에서의 "OAuth Tokens for Your Team"
       #  >"Bot User OAuth Access Token"(Access Level: Workspace)
       ############################################################
       self.token = 'xoxb-1251878735248-1513295792086-k4wHoOdyjaWUsjXtVQL6JQeZ'

   def notification(self, pretext=None, title=None, fallback=None, text=None):
       attachments_dict = dict()
       attachments_dict['pretext'] = pretext
       attachments_dict['title'] = title
       attachments_dict['fallback'] = fallback
       attachments_dict['text'] = text

       attachments = [attachments_dict]

       slack = Slacker(self.token)
       slack.chat.post_message(channel='#gold-stock', text=None, attachments=attachments, as_user=None)

   Slack class내에 1번에서 copy한 token 값을 self.token에 저장하고,

   다른 class에서 notification 함수를 통해 호출할 수 있도록 정의합니다.

   

   다음은 main.py의 코드 일부입니다.

   매수 추천주를 골라서 slack으로 알려주는 기능입니다. 

from config.slack import *
...

class MyWindow(QWidget, metaclass=Singleton):
   def __init__(self, parent=None, **kwargs):
       super().__init__(parent, **kwargs)

      self.slack = Slack() # 슬랙 동작
   
  def ai_recommend_click(self):
      # 매수 추천주 확인
      market_status = self.get_recommend_items(stockCode, self.recommInterval, self.click_row)

      # 실제 매수 매도처리
      if market_status == "매수":
        self.slack.notification(pretext="(%s(%s)) 매수 추천종목" % (name, stockCode),
                                   t
itle="%s 자동매매 List에 추가했습니다. 로직No.(%s)" % (datetime.now().strftime("%Y-%m-%d %H:%M:%S"), str_decision_list),
                                   text="https://www.bithumb.com/trade/chart/" + stockCode + "_KRW")
      .
      .

 

이 부분이 slace에서 메세지로 받아보면 아래와 같은 메세지를 slack에서 자동으로 

받아볼 수 있습니다.

여기서 맨 마지막 URL Link를 누르면, 다음 화면으로 연결도 됩니다. ^^

 

이상으로 띄엄띄엄이긴 하지만, slack bot을 통해서

파이썬 자동매매 프로그램에서 종목을 추천한 결과를 slace 메세지로 보내고,

slack 에서 해당 메세지를 보고, 첨부된  url링크를 눌러서 

추가 상세정보도 확인할 수 있다는 걸 

간단한 예로 보여드렸습니다.

 

이상입니다.

반응형

댓글()