본문 바로가기

programming/python

[ python 활용하기 #3 ] 파이썬 슬랙 봇 만들기 2탄 (특정 시간에 메시지 보내기)

[ python 활용하기 #3 ] 파이썬 슬랙 봇 만들기 2탄 (특정 시간에 메시지 보내기)

 

안녕하세요. 심심한 코딩쟁이입니다.

 

오늘은 파이썬 슬랙 봇 만들기 2탄으로 사용자가 원하는 시간에

 

메시지를 전송해주는 봇을 만들어보겠습니다.

 

1탄에서 구축한 환경에서 그대로 이어가는 내용이므로 처음이신 분들은 1탄부터 따라와 주세요.

 

[ python 활용하기 #2 ] 파이썬 슬랙 봇 만들기 1탄 (코딩 몰라도 가능)

 

slack-logo
슬랙 로고


크론탭(crontab) VS 작업 스케줄러

 

크론탭은 리눅스에서 스케쥴링을 관리하는 프로그램으로 서버를 관리하는데 주로 쓰입니다.

 

사용자가 원하는 특정 시간에 미리 작성된 스크립트나 명령을 실행하여 반복적인 작업의 자동화를 가능하게 해 줍니다.

 

하지만 리눅스를 보다는 윈도우를 사용하시는 분들이 훨씬 많을 것으로 생각됩니다.

 

윈도우에서는 크론탭 대신에 '작업 스케줄러' 라는 프로그램이 기본적으로 설치되어있으므로 이를 사용해

 

특정 시간에 파이썬 코드를 실행보도록 하겠습니다.


작업 스케줄러

 

작업 스케줄러를 설정하기에 앞서 윈도우 배치 파일을 먼저 작성해 봅시다.

 

봇을 작동시켜주는 파이썬 코드를 실행하는 윈도우 배치 파일을 스케줄러에 등록해 자동화 키려는 계획입니다.

 

우선 메모장을 열어주세요.

 

아래 코드를 복사해 메모장에 붙여 넣어주세요.

 

@echo off

:: 파이썬 코드가 D 드라이브에 있을 경우 d:를 꼭 써줘야함.
:: C 드라이브에 있을 경우 생략.
d:

:: "" 안에 파이썬 코드가 위치한 경로 삽입
cd "symxsym\bot_test" 

python slack_bot.py
pause

 

배치파일 내에서 :: 뒤에 문장은 주석으로 처리됩니다.

 

pause는 명령어가 모두 실행된 후에 cmd 창이 자동으로 꺼지는 것을 방지해 작업이 이루어졌는지 확인이 가능합니다.

 

메모장에서 저장할 때 주의사항이 존재합니다.

 

파일 형식에서 모든 파일을 누르고 원하는 파일 명을 입력한 뒤 .bat 이란 확장자를 붙여줍니다.

 

그리고 인코딩은 ANSI로 설정해줘야 폴더 경로에 한글이 존재해도 제대로 인식합니다.

 

encoding-ansi
인코딩 ANSI로 설정

 

윈도우 배치 파일작성이 끝났으면 이제 작업 스케줄러 설정을 해봅시다.

 

윈도우키를 누른 다음 작업 스케줄러를 검색해 실행합니다.

 

task-scheduler
작업 스케줄러

 

작업 스케줄러 라이브러리 를 우클릭해 새 폴더를 생성합니다.

 

폴더명은 자유롭게 설정합니다.

 

new-folder
새 폴더 만들기

 

기본 작업 만들기 클릭

 

make-task
기본 작업 만들기 클릭

 

작업의 이름과 설명 작성 후 다음 클릭

 

set-name

 

작업의 트리거 설정합니다. 쉽게 말하자면 봇을 언제 작동시키고 싶은지에 대한 설정입니다.

 

when-do
언제 실행할 것인가 설정

 

매일 5시 25분에 봇 코드를 실행하도록 설정

 

set-time
시간 설정

 

봇 코드를 실행시킬 수 있도록 동작 유형 중 프로그램 시작 을 선택

 

what-do
동작 유형 선택

 

찾아보기를 클릭하고 미리 만들어둔 윈도우 배치 파일 선택

 

set-file
윈도우 배치 파일 선택

 

앞에서 설정한 사항들을 확인 후 마침

 

finish
작업 만들기 완료

 

방금 생성한 봇 실행 작업을 확인할 수 있습니다.

 

check-task

 

1탄에서 만들었던 메시지 보내는 슬랙 봇이 5시 25분에 작동한 모습입니다.

 

bot-message
봇 메시지 확인

 

이렇게 원하는 시간에 봇이 작동하도록 작업 스케줄러를 활용할 수 있습니다.


여기까지 파이썬 슬랙 봇 만들기 2탄이었습니다.

 

오늘은 특정 시간에 봇이 작동시키기 위해 윈도우의 작업 스케줄러를 사용해 보았습니다.

 

이번 포스팅에서 특정 데이터를 담은 메시지를 보내는 방법까지 알아보려 하였으나

 

내용이 너무 길어진 관계로 다음 시간에 API로 데이터를 수집하는 방법에 대해 알아보겠습니다.

 

감사합니다.

 

반응형