ssg_today_menu_slack/slack.py
bumpsoo 1b8b580554 기본 구조 완성. 파일 정리하면 끝. 일단 배포 완료
todo
- tf 파일의 slack_url 환경변수 등으로 정리
- 배포하는 스크립트? 필요할 것 같기도 함
2024-07-03 05:06:54 +09:00

55 lines
1.5 KiB
Python

from typing import Any, Dict, List
import requests
from menu import Menu
def markdown(text: str) -> Dict[str, Any]:
return {
'type': 'section',
'text': {
'type': 'mrkdwn',
'text': text
}
}
def img(text: str, img_url: str) -> Dict[str, Any]:
return {
'type': 'image',
'title': {
'type': 'plain_text',
'text': text
},
'image_url': img_url,
'alt_text': text
}
def menu_to_str(m: Menu) -> str:
ret = '\n'.join([
f'*식사 시간*: {m.meal_time}',
f'*식사 종류*: {m.meal_type}',
f'*대표 메뉴*: {m.rep_menu}',
f'*상세 메뉴*: {m.detailed_menu}',
f'*칼로리*: {m.calory}',
])
return ret
def for_slack(date: str, data: List[Menu]) -> Dict[str, Any]:
blocks = [markdown(f'*{date} 일자 메뉴*')]
if len(data) == 0:
blocks.append(markdown('메뉴가 존재하지 않습니다'))
return {'blocks': blocks}
for each in data:
blocks.append(markdown(menu_to_str(each)))
if each.menu_image:
blocks.append(img(each.rep_menu, each.menu_image))
else:
blocks.append(markdown('이미지가 존재하지 않습니다'))
return {'blocks': blocks}
def send(slack_url: str, date: str, data: List[Menu]) -> bool:
payload = for_slack(date, data)
print(payload)
res = requests.post(url= slack_url, json=payload)
print(res.text)
return res.text == 'ok'