[Python] 슬랙(Slack) 알림봇 설정하여 매일 증시 알림 받기 (4)
프로젝트/[ed]_슬랙봇_증시알림

[Python] 슬랙(Slack) 알림봇 설정하여 매일 증시 알림 받기 (4)

728x90
반응형

이번 포스팅에선 매일 내가 원하는 시간에 슬랙 봇이 메시지를 보내도록 해보겠습니다.

 

그러기 위해선 아래와 같은 순서가 필요합니다.

 

1. 자동부팅

2. 자동로그인

3. 작업스케줄러 등록

 - 슬랙 알림

 - 컴퓨터 자동종료

 

** 이전 포스팅에서 사용한 코드를 일부 수정하였습니다. 

- 공휴일엔 알림을 보내지 않고 평일에만 알림을 보내도록 말이죠.

- 맨 아래에 있으니 참조하시면 되겠습니다.

1. 자동부팅

데스크탑만 가능하며, 컴퓨터의 전원이 공급되고 있는 상태여야 합니다. 멀티탭의 전원을 꺼버렸다면 작동하지 않겠죠?

컴퓨터 처음 부팅시 바이오스 세팅 화면을 들어가야 합니다. 컴퓨터 처음 부팅할 때 특정 키를 연타해줍니다.

제 컴퓨터는 F2 입니다. 

 

바이오스 자동부팅 시간 설정

 

들어가 보면 'Wake System from S5' 가 있습니다. (없더라도 비슷한 문구가 있을겁니다.) Enabled 로 체크해 주시고, 원하는 시간대를 설정해 줍니다. 전 16시로 하겠습니다.

 

상태를 세이브하고 재부팅 하면 됩니다. 되는지 궁금하신 분들은 시간을 한 10분 정도 뒤로 맞춰두고 확인해 보세요.

 

2. 자동로그인

2가지 방법이 있습니다. 직접 세팅하는 방법, 타 프로그램의 힘을 빌리는 법 입니다. 전 프로그램 써서하는게 더 간편하여 추천합니다. 그래도 직접 세팅하는 것도 알고 있으시면 좋을 것 같네요.

 

(1) 직접 세팅 ( 사전세팅 (a) → 자동로그온 세팅 (b) )

  (a). 시작 → 설정 (제어판) → 로그인 옵션 → Microsoft 계정에 대한 Windows Hello 로그인 필요 '끔'

 

시작 → 설정
설정 : 로그인 옵션 검색
Hello 로그인 끔 처리.

 

  (b). 시작 → netplwiz 입력 → 체크 해제 : 사용자 이름과 암호를 입력해야 이 컴퓨터를 사용할 수 있음 → 확인. 

(이 때 아이디 / PW : 컴퓨터 아이디 / PW 로 해도 되는 경우가 있고, 마이크로소프트 아이디 / PW 로 해야 하는 경우가 있습니다. 어떤게 맞는지는 일일이 로그인을 해서 확인하셔야 합니다.)

 

시작 → netplwiz 검색

 

체크 해제 및 확인

 

 

 

(2) 타 프로그램의 힘을 빌리는 법 - 추천!

 

아래의 사이트에 접속하여 파일을 다운받습니다.

https://docs.microsoft.com/en-us/sysinternals/downloads/autologon

 

Autologon - Windows Sysinternals

Bypass password screen during logon.

docs.microsoft.com

 

 

파일의 압축을 푼 뒤, Autologon64.exe 를 실행시킵니다. 

 

Autologon64.exe 실행

 

실행시키면 아래와 같은 화면이 뜰 텐데, 여기에 컴퓨터 혹은 마이크로소프트 ID / PW 를 입력해줍니다. 

Domain 은 건드릴 필요 없습니다.

 

ID / PW 입력

맞다면 왼쪽, 틀리다면 오른 쪽과 같은 화면이 뜹니다.

 

로그인 입력 성공 (왼쪽) / 실패 (오른쪽)

 

이제 자동로그인이 되는걸 확인하실 수 있습니다.

 

3. 작업스케줄러 등록

시작 → 작업 스케줄러를 검색하여 들어갑니다. 작업 스케줄러 라이브러리 → 빈 곳 우클릭 → 새 작업 만들기 순서로 들어갑니다.

 

작업 스케줄러 새 작업 만들기.

 

일반 탭에서 작업 이름, 설명 적어주시고 아래에 '가장 높은 수준의 권한으로 실행' 에 체크해 줍니다.

 

새 작업 만들기 일반 탭

 

트리거 탭에선 새로 만들기를 누르셔서 언제 이 작업이 실행되게 할지 세팅해 줍니다. 전 매일 오후 6시로 하겠습니다.

 

 

 

 

동작도 새로만들기 누르신 다음,

프로그램/스크립트 : 파이썬 실행파일 경로 

인수 추가 : 실행시키고자 하는 파일

시작 위치 : 실행시키고자 하는 파일의 경로를 지정해 줍니다.

 

* 보통 파이썬 실행파일 경로 : C:\Users\사용자이름\AppData\Local\Programs\Python\Python버전\python.exe

여기서 '사용자이름'과 'Python버전' 만 다를 것입니다.

 

전 C:\Projects\Slack_notice 폴더의 Slacker_notices.py 를 실행시키는 것으로 하였습니다.

 

새 동작 만들기

 

새 동작 만들기

 

여기까지 하고 확인 버튼을 눌러줍니다. 그럼 만든 새 작업이 등록되고, 준비 상태에 있는걸 알려줍니다. 

이제 만든 작업 우클릭 → 실행을 눌러줍니다. 실행을 누르면 즉시 실행을 한번 시켜주는데, 원하는대로 실행되셨는지 확인합니다. 

 

 

 

이제 컴퓨터 자동종료 작업스케줄러 등록을 합니다. 전 파이썬으로 파일 하나를 만들어서 등록하겠습니다.

코드는 아래와 같습니다. 강제종료하는 코드입니다.

 

import os
os.system('shutdown -s -f')

 

이제 위에서 했던 것과 동일하게 작업스케줄러를 등록합니다. 

전 오후 7시에 등록하겠습니다.

 

 

 

마지막으로, 이전 포스팅에서 사용한 코드를 일부 수정해 보겠습니다. 

주말 빼고 평일에만 사용할 수 있게끔요.

전 포스팅은 아래 참조하세요.

 

https://dragon1-honey1-wayfarer.tistory.com/entry/Python-%EC%8A%AC%EB%9E%99Slack-%EC%95%8C%EB%A6%BC%EB%B4%87-%EC%84%A4%EC%A0%95%ED%95%98%EC%97%AC-%EB%A7%A4%EC%9D%BC-%EC%A6%9D%EC%8B%9C-%EC%95%8C%EB%A6%BC-%EB%B0%9B%EA%B8%B0-3-2

 

[Python] 슬랙(Slack) 알림봇 설정하여 매일 증시 알림 받기 (3) - 2

지난번에 이어, 이번엔 앞선 포스팅에서 만든 함수((3) - 1)를 slack 알림봇에 적용하는 걸 해보겠습니다. 완성된 함수 KospiRead() 를 뒤로 하고, 슬랙봇에게 메시지를 보내는 파일로 돌아옵니다. 잘

dragon1-honey1-wayfarer.tistory.com

 

 

 

# requests 와 json 을 활용하여 slack bot 조작하기
from Slacker_notice_functions import *
import requests
import json
from datetime import datetime

def notice_message(token, channel, text, attachments):
    attachments = json.dumps(attachments)
    response = requests.post("https://slack.com/api/chat.postMessage",
        headers={"Authorization": "Bearer "+token},
        data={"channel": channel, "text": text ,"attachments": attachments})

Token = 'xoxb-' # 자신의 Token 입력
image, trend, today_value = KospiRead()

weekdays_dict = {
    0 : '월',
    1 : '화',
    2 : '수',
    3 : '목',
    4 : '금',
    5 : '토',
    6 : '일'
}
weekdays = datetime.weekday(datetime.today())

if weekdays == 5 or weekdays == 6: # 토요일 일요일은 알림을 주지 않는다.
    pass
else: # 평일엔 알림을 준다.
    today_date = datetime.today().strftime('%Y-%m-%d')
    str1_title = 'KOSPI, ' + today_date + ' (' + weekdays_dict[weekdays] + ')'

    buySell = '개인 : ' + trend[0] + ', 외국인 : ' + trend[1] + ', 기관 : ' + trend[2] + '\n'
    programBuySell = '차익 : ' + trend[3] + ', 비차익 : ' + trend[4] + ', 총합 : ' + trend[5] + '\n'
    kospi_value = today_value[0] + today_value[1] + '\n'
    total_text = kospi_value + buySell + programBuySell

    if today_value[1].find('+') != -1: # + 인 경우,
        today_color = '#ff0000' # 빨강색
    else:
        today_color = '#0000ff' # 파랑색


    attach_dict = {
        'color' : today_color,
        'author_name' : '오늘의 증시 알림',
        'title' : str1_title,
        'title_link' : 'http://finance.naver.com/sise/sise_index.nhn?code=KOSPI',
        'text' : total_text,
        'image_url' : image
    }

    attach_list=[attach_dict]
    notice_message(Token, "#stock_notice", str1_title, attach_list)

 

이것으로,

컴퓨터가 오후 4시에 스스로 켜져서 슬랙봇이 평일에만 매일 오후 6시에 KOSPI 정보를 가져와 알려주고, 컴퓨터가 7시에 자동으로 꺼지는 알림봇 시스템을 완성시켰습니다. 

 

추가적으로 공공데이터 시스템의 특일데이터 API 를 읽어온다면 구체적인 주식개장날에만 알림봇을 활성화 시키는 시스템을 만들 수 있을 것입니다. 기회가 된다면 포스팅 해보도록 하겠습니다.

728x90
반응형