공부 모임 메신저 앱을 디스코드에서 슬랙으로 이전하자는 얘기가 나왔습니다.
이유는 아래와 같습니다
이것 저것 쓰다 보니 TIL 알람 봇이 있으면 좀 더 좋을 것 같다는 의견이 나왔고, TIL 겸 일정 관리를 할 수 있는 봇을 만들어보았습니다.

https://api.slack.com/apps/ 에서 Create an App으로 봇을 생성합니다

앱을 생성할 워크스페이스를 지정합니다

봇 이름을 지정하고, 세팅값을 수정합니다. 이 값들은 추후 변경 가능합니다.



Basic Information -> App-Level Tokens에서 토큰을 생성할 수 있다



Incoming Webhooks : 슬랙 포맷에 일치하는 데이터를 전송하면 슬랙 채널에 보내주는 기능

import os
import requests
from datetime import datetime
TIL_WEBHOOK_URL = os.environ.get('TIL_WEBHOOK_URL')
def post_message(message):
requests.post(TIL_WEBHOOK_URL, json={"text": message})
date_string = datetime.now().strftime("%Y-%m-%d")
TIL_NOTICE = f"""<!channel> 오늘의 TIL을 공유할 시간입니다! 아래의 템플릿을 참고하여 작성해주세요.
**[템플릿]**
📆 {date_string}
⏰ 공부 시간
> h시간 m분
📚 공부한 내용
* 공부한 내용에 대해 간단히 정리해주세요.
* TIL을 정리한 링크를 공유해주셔도 좋습니다
💭 회고
* 오늘의 공부를 통해 느낀 점을 자유롭게 적어주세요.
"""
if __name__ == "__main__":
post_message(TIL_NOTICE)
위와 같이 코드를 작성했습니다.
한 부분씩 간단하게 설명을 드리자면
TIL_WEBHOOK_URL = os.environ.get('TIL_WEBHOOK_URL')
def post_message(message):
requests.post(TIL_WEBHOOK_URL, json={"text": message})
curl -X POST -H 'Content-type: application/json' --data '{"text":message}' TIL_WEBHOOK_URL
민감한 정보를 숨기기 위해 Incoming Webhook을 Github의 Secret에 등록해 사용합니다



python 애플리케이션을 실행하는 Github action을 등록합니다


워크플로 .yml 파일은 아래와 같이 설정했습니다
name: Python application
on:
schedule:
- cron: "0 23 * * *"
workflow_dispatch:
inputs:
logLevel:
description: "Log level"
required: true
default: "warning"
tags:
description: "Test scenario tags"
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.12
uses: actions/setup-python@v2
with:
python-version: 3.12
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install bs4 requests
- run: python actions/til_notice.py
env: # Or as an environment variable
TIL_WEBHOOK_URL: ${{ secrets.TIL_WEBHOOK_URL }}
