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        )
def build_main_menu(adapter: integrations.slack.adapter.ServiceAdapter) -> None:
17def build_main_menu(adapter: ServiceAdapter) -> None:
18    """
19    メインメニューを生成する
20
21    Args:
22        adapter (ServiceAdapter): インターフェースアダプタ
23
24    """
25    adapter.conf.tab_var["screen"] = "MainMenu"
26    adapter.conf.tab_var["no"] = 0
27    adapter.conf.tab_var["view"] = {"type": "home", "blocks": []}
28    ui_parts.button(adapter, text="成績サマリ", action_id="summary_menu")
29    ui_parts.button(adapter, text="ランキング", action_id="ranking_menu")
30    ui_parts.button(adapter, text="個人成績", action_id="personal_menu")
31    ui_parts.button(adapter, text="直接対戦", action_id="versus_menu")

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

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

ホームタブ操作イベント