티스토리 뷰
슬랙에서 만들 수 있는 봇은 두가지가 있다고 합니다.
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
i 또는 a 를 눌러서 에디팅 시작! // i는 커서가 첫번째로 가고 , a는 커서가 내가 둔 곳으로 감.
매분마다 스크립트를 돌리겠다는 아래의 명령어를 입력한 후, (https://crontab.guru 의 도움을 받으면 좋아요!)
* * * * * /bin/bash /Users/eunjin/Documents/slack_bot_run.sh
ESC 를 눌러서 에디팅 빠져나오기!
:wq 로 저장하고 종료해주세요.
일단 저는 테스트로 매분마다 스크립트가 실행되는 지 확인했는데요,
매 분마다 메세지가 잘오네요...!!
[6] 크롤링하여 메세지를 채우기
크롤링하여서 메세지를 필요한 데이터로 변경해주겠습니다.
메세지가 잘오는 것을 확인했습니다.
확인했으니 crontab 수정모드를 열고, 매일 오후 12시에 스크립트를 돌리도록 바꾸겠습니다.
crontab -e
0 12 * * * /bin/bash /Users/eunjin/Documents/slack_bot_run.sh
Reference
[Crontab]
1) 파이썬 파일을 가상환경에서 주기별로 실행하는 방법
2) 크론탭 접근권한 변경
https://blog.bejarano.io/fixing-cron-jobs-in-mojave/
[vim 명령모드 , 편집모드 전환 ]
[크롤링이 막힌 것 같을때 User-Agent를 지정해보자]
https://blog.naver.com/kiddwannabe/221185808375
'🐍 > Python' 카테고리의 다른 글
[Python] 파이썬 타입힌트 (Type Hints) (0) | 2020.11.29 |
---|---|
[Pandas] 판다스로 Dataset 살펴보기 (유투브 트랜드 데이터 from 캐글) (0) | 2020.07.15 |
[BeautifulSoup] 영화관(CGV, 메가박스, 롯데시네마) 상영시간표 크롤링 (7) | 2020.03.16 |
[BeautifulSoup] BeautifulSoup의 기능들 살펴보기 (0) | 2020.03.05 |
[Python] Pycharm과 jupyter notebook에 아나콘다 가상환경을 추가하기 (0) | 2020.03.05 |
- Total
- Today
- Yesterday
- SerializerMethodField
- Django FCM
- ribs
- Flutter getter setter
- 플러터 싱글톤
- flutter build mode
- PencilKit
- Django Heroku Scheduler
- ipad multitasking
- DRF APIException
- Flutter Text Gradient
- Flutter Spacer
- cocoapod
- METAL
- flutter dynamic link
- 플러터 얼럿
- Dart Factory
- 장고 URL querystring
- flutter 앱 출시
- flutter deep link
- Sketch 누끼
- drf custom error
- Watch App for iOS App vs Watch App
- github actions
- Python Type Hint
- Flutter Clipboard
- Flutter 로딩
- 장고 Custom Management Command
- Django Firebase Cloud Messaging
- 구글 Geocoding API
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |