ssg_today_menu_slack/slack.py

43 lines
1.1 KiB
Python

from typing import Any, Dict, List
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} 일자 메뉴*')]
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}