integrations.slack.config

integrations/slack/config.py

 1"""
 2integrations/slack/config.py
 3"""
 4
 5from dataclasses import dataclass, field
 6
 7from integrations.base.interface import IntegrationsConfig
 8from integrations.slack.events import comparison, slash
 9
10
11@dataclass
12class SvcConfig(IntegrationsConfig):
13    """slack用個別設定値"""
14
15    slash_command: str = field(default="/mahjong")
16    """スラッシュコマンド名"""
17
18    comparison_word: str = field(default="成績チェック")
19    """データ突合コマンド呼び出しキーワード"""
20    comparison_alias: list = field(default_factory=list)
21    """データ突合スラッシュコマンド別名(カンマ区切りで設定)"""
22
23    search_channel: str = field(default="")
24    """テータ突合時に成績記録ワードを検索するチャンネル名"""
25    search_after: int = field(default=7)
26    """データ突合時対象にする日数"""
27    search_wait: int = field(default=180)
28    """指定秒数以内にポストされているデータを突合対象から除外する"""
29
30    thread_report: bool = field(default=True)
31    """スレッド内にある得点報告の扱い
32
33    - *True*: スレッド内の点数報告も取り込む
34    - *False*: スレッド内の点数報告は無視する
35    """
36
37    # リアクション文字列
38    reaction_ok: str = field(default="ok")
39    """DBに取り込んだ時に付けるリアクション"""
40    reaction_ng: str = field(default="ng")
41    """DBに取り込んだが正確な値ではない可能性があるときに付けるリアクション"""
42
43    # 制限
44    ignore_userid: list = field(default_factory=list)
45    """投稿を無視するユーザのリスト(カンマ区切りで設定)"""
46    channel_limitations: list = field(default_factory=list)
47    """SQLが実行できるチャンネルリスト(カンマ区切りで設定)
48
49    未定義はすべてのチャンネルでSQLが実行できる
50    """
51
52    bot_id: str = field(default="")
53    """ボットID"""
54
55    tab_var: dict = field(default_factory=dict)
56    """ホームタブ用初期値"""
57
58    def __post_init__(self):
59        self.read_file("slack")
60
61        # スラッシュコマンドはスラッシュ始まり
62        if not self.slash_command.startswith("/"):
63            self.slash_command = f"/{self.slash_command}"
64
65        # スラッシュコマンド登録
66        self._command_dispatcher.update({"help": slash.command_help})
67        self._command_dispatcher.update({"check": comparison.main})
68        for alias in self.comparison_alias:
69            self._command_dispatcher.update({alias: comparison.main})
70
71        # 個別コマンド登録
72        self._keyword_dispatcher.update({
73            self.comparison_word: comparison.main,
74            f"Reminder: {self.comparison_word}": comparison.main,
75        })
@dataclass
class SvcConfig(integrations.base.interface.IntegrationsConfig):
12@dataclass
13class SvcConfig(IntegrationsConfig):
14    """slack用個別設定値"""
15
16    slash_command: str = field(default="/mahjong")
17    """スラッシュコマンド名"""
18
19    comparison_word: str = field(default="成績チェック")
20    """データ突合コマンド呼び出しキーワード"""
21    comparison_alias: list = field(default_factory=list)
22    """データ突合スラッシュコマンド別名(カンマ区切りで設定)"""
23
24    search_channel: str = field(default="")
25    """テータ突合時に成績記録ワードを検索するチャンネル名"""
26    search_after: int = field(default=7)
27    """データ突合時対象にする日数"""
28    search_wait: int = field(default=180)
29    """指定秒数以内にポストされているデータを突合対象から除外する"""
30
31    thread_report: bool = field(default=True)
32    """スレッド内にある得点報告の扱い
33
34    - *True*: スレッド内の点数報告も取り込む
35    - *False*: スレッド内の点数報告は無視する
36    """
37
38    # リアクション文字列
39    reaction_ok: str = field(default="ok")
40    """DBに取り込んだ時に付けるリアクション"""
41    reaction_ng: str = field(default="ng")
42    """DBに取り込んだが正確な値ではない可能性があるときに付けるリアクション"""
43
44    # 制限
45    ignore_userid: list = field(default_factory=list)
46    """投稿を無視するユーザのリスト(カンマ区切りで設定)"""
47    channel_limitations: list = field(default_factory=list)
48    """SQLが実行できるチャンネルリスト(カンマ区切りで設定)
49
50    未定義はすべてのチャンネルでSQLが実行できる
51    """
52
53    bot_id: str = field(default="")
54    """ボットID"""
55
56    tab_var: dict = field(default_factory=dict)
57    """ホームタブ用初期値"""
58
59    def __post_init__(self):
60        self.read_file("slack")
61
62        # スラッシュコマンドはスラッシュ始まり
63        if not self.slash_command.startswith("/"):
64            self.slash_command = f"/{self.slash_command}"
65
66        # スラッシュコマンド登録
67        self._command_dispatcher.update({"help": slash.command_help})
68        self._command_dispatcher.update({"check": comparison.main})
69        for alias in self.comparison_alias:
70            self._command_dispatcher.update({alias: comparison.main})
71
72        # 個別コマンド登録
73        self._keyword_dispatcher.update({
74            self.comparison_word: comparison.main,
75            f"Reminder: {self.comparison_word}": comparison.main,
76        })

slack用個別設定値

SvcConfig( _command_dispatcher: dict = <factory>, _keyword_dispatcher: dict = <factory>, config_file: Optional[configparser.ConfigParser] = None, slash_command: str = '/mahjong', badge_degree: bool = False, badge_status: bool = False, badge_grade: bool = False, plotting_backend: Literal['matplotlib', 'plotly'] = 'matplotlib', comparison_word: str = '成績チェック', comparison_alias: list = <factory>, search_channel: str = '', search_after: int = 7, search_wait: int = 180, thread_report: bool = True, reaction_ok: str = 'ok', reaction_ng: str = 'ng', ignore_userid: list = <factory>, channel_limitations: list = <factory>, bot_id: str = '', tab_var: dict = <factory>)
slash_command: str = '/mahjong'

スラッシュコマンド名

comparison_word: str = '成績チェック'

データ突合コマンド呼び出しキーワード

comparison_alias: list

データ突合スラッシュコマンド別名(カンマ区切りで設定)

search_channel: str = ''

テータ突合時に成績記録ワードを検索するチャンネル名

search_after: int = 7

データ突合時対象にする日数

search_wait: int = 180

指定秒数以内にポストされているデータを突合対象から除外する

thread_report: bool = True

スレッド内にある得点報告の扱い

  • True: スレッド内の点数報告も取り込む
  • False: スレッド内の点数報告は無視する
reaction_ok: str = 'ok'

DBに取り込んだ時に付けるリアクション

reaction_ng: str = 'ng'

DBに取り込んだが正確な値ではない可能性があるときに付けるリアクション

ignore_userid: list

投稿を無視するユーザのリスト(カンマ区切りで設定)

channel_limitations: list

SQLが実行できるチャンネルリスト(カンマ区切りで設定)

未定義はすべてのチャンネルでSQLが実行できる

bot_id: str = ''

ボットID

tab_var: dict

ホームタブ用初期値