티스토리 뷰

728x90
반응형

슬랙에서 만들 수 있는 봇은 두가지가 있다고 합니다.

 

1. Bots

- 상호작용하는 봇 

 

2. Incoming Webhooks bots

- 일방적으로 메세지를 보내는 봇

 

 

저는 일방적으로 메세지를 받는 게 필요해서 2번 봇으로 만들어보겠습니다. 

 

(필요한 용도 =

아이폰11 화이트를 쿠팡-특정 판매자에게서 구매하려고 결심했는데요

얼마전까지 2% 할인이 였는데, 갑자기 0% 할인으로 바뀌었습니다!!!! (오직 화이트 컬러만!!!!) 😱

그래서 2% 할인인 것을 봤는데, 정가를 주고 사기 너무 아까워서  

할인율이 다시 적용되었나 거의 매일 들어가서 확인해보는데,

귀찮아서 슬랙봇 메세지로 받으려고 합니다.)

 

우선 저만 가입되어있는 슬랙 워크스페이스를 하나 만들고 진행하겠습니다.

 

[1] Webhook URL 생성하기

 

워크스페이스의 Manage apps 를 들어가주세요. 

 

 

그러면 이런 화면이 열리는데, 

 

 

Incoming  WebHooks라는 앱을 검색해주세요  

 

 

그럼 이 화면이 나오는데, Add  to Slack을 눌러주세요 

 

 

그 다음, 어떤 채널에서 메세지를 받을 것인지 선택하고 Add Incoming~ 버튼을 눌러주세요

 

 

 

짠! 그러면 이따가 사용할 webhook URL이 생성이 됩니다.

 

 

 그리고 그 밑의 세팅에서 이름이나 아이콘 등을 바꾸고 save setting을 눌러주세요 -! 

 

 

[2]  터미널에서 메세지 보내기

 

여기 example대로 한번 터미널에서 해보겠습니다.

 

 

복사해서 터미널에 입력하면

curl -X POST --data-urlencode "payload={\"channel\": \"#general\", \"username\": \"webhookbot\", \"text\": \"This is posted to #general and comes from a bot named webhookbot.\", \"icon_emoji\": \":ghost:\"}" 웹훅URL

 

슬랙에서 잘 오는 군요!! 

 

생성된 웹훅 url에 채널, username, 이모지 등을 설정해놨기 때문에 이렇게 텍스트로만 payload를 구성해서 명령어를 입력해도

curl -X POST -d 'payload={"text": "안녕"}' 웹훅 URL

 

설정된 채널, username, 이모지가 적용되어서 메세지가 옵니다. 

 

 

 

[3] 파이썬 파일 만들기

 

터미널에서 명령어 입력하는것 말고 파이썬 파일을 돌려서 메세지를 보낼 것입니다.  

 

파이썬 스크립트를 작성해주세요! (text는 이따가 크롤링한 데이터로 채우겠습니다)

 

 

 

 

[4] 파이썬 파일을 실행할 셀 스크립트 만들기

5번에서 vim 환경에서 편집모드에서 작업을 해야하는데,

불편해서 sh파일을 하나 만들겠습니다. 

 

저는 slack_bot_run.sh 라는 이름으로 만들었어요  

 

 

이 스크립트에는 "아까 만든 파이썬 파일을 돌려라!!" 하는 명령을 작성해주면 됩니다. 

 

저는 crawling_env라는 가상환경에 진입한 후, (이 가상환경이 requests와 크롤링 관련 패키지가 설치되어있어요!) 

파이썬 파일을 돌려라!! 라는 명령을 해주고 싶어서 

가상환경을 활성화시키는 코드도 같이 작성했습니다.

 

[5] crontab을 이용하여 파이썬 스크립트를 주기적으로 돌리기

crontab을 이용하여서 매일 특정 시간에 파이썬 파일을 실행해주겠습니다. 

(crontab에 대한 설명은 아래 Reference에 참조해두었습니다.)  

 

 

crontab을 이용하기 전, 

설정 > 보안 및 개인 정보 보호 > 전체 디스크 접근 권한에 cron을 추가해줘야합니다!! 

자물쇠 풀고 + 누르고 

command+shift+G  을 입력한 후, /usr/sbin/cron 를 입력하시면 추가할 수 있습니다. 

 

 

그 다음에, 

아래의 명령어를 입력해서 수정모드를 열어주시고

crontab -e

 

매분마다 스크립트를 돌리겠다는 아래의 명령어를 입력한 후, 

* * * * * /bin/bash /Users/eunjin/Documents/slack_bot_run.sh

 

:wq 로 저장하고 종료해주세요. 

 

 

일단 저는 테스트로 매분마다 스크립트가 실행되는 지 확인했는데요,

매 분마다 메세지가 잘오네요...!! 

 

 

 

[6] 크롤링하여 메세지를 채우기 

 

크롤링하여서 메세지를 필요한 데이터로 변경해주겠습니다.

 

 

 

메세지가 잘오는 것을 확인했습니다. 

 

 

 

확인했으니 crontab 수정모드를 열고, 매일 오후 12시에 스크립트를 돌리도록 바꾸겠습니다.

crontab -e
0 12 * * * /bin/bash /Users/eunjin/Documents/slack_bot_run.sh

 

 

 

 

Reference

[Crontab]

 

1) 파이썬 파일을 가상환경에서 주기별로 실행하는 방법

 

[Linux] Python(.py)을 가상환경(virtualenv)에서 주기별로 실행하기

[Linux] Python(.py)을 가상환경(virtualenv)에서 주기별로 실행하는 방법에 대하여 알아보도록 하겠습니다.

teddylee777.github.io

 

2) 크론탭 접근권한 변경

https://blog.bejarano.io/fixing-cron-jobs-in-mojave/

 

Fixing cron jobs in Mojave

Fixing cron jobs in Mojave Mon, 8 Oct 2018 macOS Mojave introduces a new access control mechanism that lets you decide which apps should have access to the calendar database, the user’s contacts, the camera and microphone and even access to the whole drive

blog.bejarano.io

 

 

[vim 명령모드 , 편집모드 전환 ]

 

005 vim 명령 모드와 편집 모드의 전환

vim 모드 전환 앞에서 vim의 모드에 대하여 간단한 포스팅을 올린 바 있다. 그 내용은 명령(command) 모드와 편집(insert) 모드가 있다는 것이다. 대부분의 작업은 명령 모드에서 이루어진다. 편집 모드는 글자를..

deliciouslearning.tistory.com

 

[크롤링이 막힌 것 같을때 User-Agent를 지정해보자]

 

https://blog.naver.com/kiddwannabe/221185808375

 

크롤링) 접속 차단되었을때 User-Agent지정(header)

뭐야? 너 컴퓨터야? 그럼 들어오지마 !!!​​파이썬 크롤링을 진행하시다가, 이상하게... 아무 이유없이 진...

blog.naver.com

 

728x90
반응형
댓글
  • 프로필사진 안녕하세요!
    저 slack bot 만드는 내용에서 5번째 라인에
    source /Users/eunjin/opt/anaconda3/etc/profile.d/conda.sh
    이 부분은 어떤 내용을 기입 하는 건가요?
    2020.07.24 15:08
  • 프로필사진 사용자 eungding 안녕하세요! 아래 라인에 conda activate 로 특정 가상환경을 활성화해주는데요, conda
    명령어를 쓰기 위해서

    https://github.com/conda/conda/issues/7980

    여기을 참고해서 넣어줬어요-!
    2020.07.28 21:25 신고
댓글쓰기 폼