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

メインメニューを生成する

Arguments:
  • adapter (ServiceAdapter): インターフェースアダプタ
register_home_handlers = None

ホームタブ操作イベント