티스토리 뷰

안녕하세요 유튜버 조코딩입니다.

제 채널의 크레온 API를 활용한 파이썬 주식 투자 자동화 강의 들으시는 분들 중 slacker를 이용하실 때 2021년2월24일 이후 invalid_auth에러가 떠서 진행이 안되시는 분들이 있으실텐데요.

2021.2.24 이후로 새로 생성된 bot은 slacker 라이브러리를 이용하실 수 없습니다.

슬랙의 정책 업데이트가 있었기 때문입니다.

(api.slack.com/changelog/2021-02-24-how-we-broke-your-slack-app)

 

youtu.be/s24dxIp-Cp0?t=196

위 영상의 3:16까지만 따라하신 후 아래와 같이 requests를 활용한 방식으로 변경하여 진행하시기 바랍니다.

해결 방안 (2강)

1. requests 라이브러리를 설치합니다.

 

1
pip install requests
cs

 

2. requests를 활용하여 slacker의 기능을 하는 아래의 코드를 그대로 복사 + 붙여넣기 합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
import requests
 
def post_message(token, channel, text):
    response = requests.post("https://slack.com/api/chat.postMessage",
        headers={"Authorization""Bearer "+token},
        data={"channel": channel,"text": text}
    )
    print(response)
 
myToken = "xoxb-123*****"
 
post_message(myToken,"#stock","jocoding")
cs

 

3. 마지막 줄의 post_message 함수의 인자를 변경해줍니다. 1번째 인자로 여러분의 bot 토큰을, 2번째 인자로 채널명(#stock)을 3번째 인자로 보내고자 하는 메세지를 작성합니다.

 

bot 토큰(Bot User OAuth Token)

 

4. 코드를 실행하시면 아래의 메세지가 표시되며 slack에 성공적으로 메세지가 전송됩니다.

메세지 전송 성공 (200)

 

 

 

해결 방안 (3강)

3강에서도 slacker가 사용되는 부분이 있으므로 아래와 같이 수정합니다.

 

EtfAlgoTrader.py(autotrade.py)의 아래 12~17번 라인의 코드를 다음과 같이 수정한다.

Before

1
2
3
4
5
6
7
slack = Slacker('xoxb-341411373331-390645946323-wPFYKNbhlgef4bMUiP1CvSyX')
def dbgout(message):
    """인자로 받은 문자열을 파이썬 셸과 슬랙으로 동시에 출력한다."""
    print(datetime.now().strftime('[%m/%d %H:%M:%S]'), message)
    strbuf = datetime.now().strftime('[%m/%d %H:%M:%S] '+ message
    slack.chat.post_message('#etf-algo-trading', strbuf)
 
cs

After

1
2
3
4
5
6
7
8
9
10
11
12
13
import requests
def post_message(token, channel, text):
    response = requests.post("https://slack.com/api/chat.postMessage",
        headers={"Authorization""Bearer "+token},
        data={"channel": channel,"text": text}
    )
 
myToken = "xoxb-123*****"
def dbgout(message):
    """인자로 받은 문자열을 파이썬 셸과 슬랙으로 동시에 출력한다."""
    print(datetime.now().strftime('[%m/%d %H:%M:%S]'), message)
    strbuf = datetime.now().strftime('[%m/%d %H:%M:%S] '+ message
    post_message(myToken,"#stock", strbuf)
cs

 

 

이렇게 하면 해결하실 수 있으실겁니다.

추가적인 오류가 발생하면 위 영상 댓글로 알려주세요!

 

감사합니다.

댓글