integrations.slack.events.home_tab.home
integrations/slack/events/home_tab/home.py
1""" 2integrations/slack/events/home_tab/home.py 3""" 4 5import logging 6from typing import TYPE_CHECKING, Any 7 8from integrations.slack.adapter import ServiceAdapter 9from integrations.slack.events.handler_registry import register 10from integrations.slack.events.home_tab import ui_parts 11 12if TYPE_CHECKING: 13 from slack_bolt import App 14 15 16def build_main_menu(adapter: ServiceAdapter) -> None: 17 """ 18 メインメニューを生成する 19 20 Args: 21 adapter (ServiceAdapter): インターフェースアダプタ 22 23 """ 24 adapter.conf.tab_var["screen"] = "MainMenu" 25 adapter.conf.tab_var["no"] = 0 26 adapter.conf.tab_var["view"] = {"type": "home", "blocks": []} 27 ui_parts.button(adapter, text="成績サマリ", action_id="summary_menu") 28 ui_parts.button(adapter, text="ランキング", action_id="ranking_menu") 29 ui_parts.button(adapter, text="個人成績", action_id="personal_menu") 30 ui_parts.button(adapter, text="直接対戦", action_id="versus_menu") 31 32 33@register 34def register_home_handlers(app: "App", adapter: ServiceAdapter) -> None: 35 """ホームタブ操作イベント""" 36 37 @app.action("actionId-back") 38 def handle_action(ack: Any, body: Any) -> None: 39 """ 40 戻るボタン 41 42 Args: 43 ack (Any): ack 44 body (Any): イベント内容 45 46 """ 47 ack() 48 logging.trace(body) # type: ignore 49 50 build_main_menu(adapter) 51 adapter.api.appclient.views_publish( 52 user_id=adapter.conf.tab_var["user_id"], 53 view=adapter.conf.tab_var["view"], 54 ) 55 56 @app.action("modal-open-period") 57 def handle_open_modal_button_clicks(ack: Any, body: Any) -> None: 58 """ 59 検索範囲設定選択イベント 60 61 Args: 62 ack (Any): ack 63 body (Any): イベント内容 64 65 """ 66 ack() 67 68 adapter.api.appclient.views_open( 69 trigger_id=body["trigger_id"], 70 view=ui_parts.modalperiod_selection(adapter), 71 )
register_home_handlers =
None
ホームタブ操作イベント