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 })
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>)