integrations.discord.config
integrations/discord/config.py
1""" 2integrations/discord/config.py 3""" 4 5import logging 6from dataclasses import dataclass, field 7from typing import TYPE_CHECKING, Optional 8 9from integrations.base.interface import IntegrationsConfig 10from integrations.discord.events import comparison 11from libs.bootstrap.section import BaseSection 12 13if TYPE_CHECKING: 14 from pathlib import Path # noqa: F401 15 16 from discord import ClientUser 17 18 19@dataclass 20class SvcConfig(BaseSection, IntegrationsConfig): 21 """discord用個別設定値""" 22 23 slash_command: str = field(default="mahjong") 24 """スラッシュコマンド名""" 25 26 # 突合 27 comparison_word: str = field(default="成績チェック") 28 """データ突合コマンド呼び出しキーワード""" 29 comparison_alias: list[str] = field(default_factory=list) 30 """データ突合スラッシュコマンド別名(カンマ区切りで設定)""" 31 search_after: int = field(default=7) 32 """データ突合時対象にする日数""" 33 34 # 制限 35 ignore_userid: list[str] = field(default_factory=list) 36 """投稿を無視するユーザのリスト(カンマ区切りで設定)""" 37 channel_limitations: list[str] = field(default_factory=list) 38 """SQLが実行できるチャンネルリスト(カンマ区切りで設定) 39 40 未定義はすべてのチャンネルでSQLが実行できる 41 """ 42 43 bot_name: Optional["ClientUser"] = field(default=None) 44 """ボットの名前""" 45 46 def __post_init__(self) -> None: 47 assert self.main_conf 48 self.main_parser = self.main_conf 49 self.section = "discord" 50 super().__init__(self) 51 logging.debug("discord: %s", self) 52 53 # 先頭にスラッシュが付いている場合は除去 54 if self.slash_command.startswith("/"): 55 self.slash_command = self.slash_command[1:] 56 57 # スラッシュコマンド登録 58 self._command_dispatcher.update({"check": comparison.main}) 59 for alias in self.comparison_alias: 60 self._command_dispatcher.update({alias: comparison.main}) 61 62 # 個別コマンド登録 63 self._keyword_dispatcher.update( 64 { 65 self.comparison_word: comparison.main, 66 } 67 )
@dataclass
class
SvcConfig20@dataclass 21class SvcConfig(BaseSection, IntegrationsConfig): 22 """discord用個別設定値""" 23 24 slash_command: str = field(default="mahjong") 25 """スラッシュコマンド名""" 26 27 # 突合 28 comparison_word: str = field(default="成績チェック") 29 """データ突合コマンド呼び出しキーワード""" 30 comparison_alias: list[str] = field(default_factory=list) 31 """データ突合スラッシュコマンド別名(カンマ区切りで設定)""" 32 search_after: int = field(default=7) 33 """データ突合時対象にする日数""" 34 35 # 制限 36 ignore_userid: list[str] = field(default_factory=list) 37 """投稿を無視するユーザのリスト(カンマ区切りで設定)""" 38 channel_limitations: list[str] = field(default_factory=list) 39 """SQLが実行できるチャンネルリスト(カンマ区切りで設定) 40 41 未定義はすべてのチャンネルでSQLが実行できる 42 """ 43 44 bot_name: Optional["ClientUser"] = field(default=None) 45 """ボットの名前""" 46 47 def __post_init__(self) -> None: 48 assert self.main_conf 49 self.main_parser = self.main_conf 50 self.section = "discord" 51 super().__init__(self) 52 logging.debug("discord: %s", self) 53 54 # 先頭にスラッシュが付いている場合は除去 55 if self.slash_command.startswith("/"): 56 self.slash_command = self.slash_command[1:] 57 58 # スラッシュコマンド登録 59 self._command_dispatcher.update({"check": comparison.main}) 60 for alias in self.comparison_alias: 61 self._command_dispatcher.update({alias: comparison.main}) 62 63 # 個別コマンド登録 64 self._keyword_dispatcher.update( 65 { 66 self.comparison_word: comparison.main, 67 } 68 )
discord用個別設定値
SvcConfig( _parser: configparser.ConfigParser | None = None, _command_dispatcher: dict[str, typing.Any] = <factory>, _keyword_dispatcher: dict[str, typing.Any] = <factory>, main_conf: configparser.ConfigParser | None = None, channel_config: pathlib.Path | None = None, slash_command: str = 'mahjong', badge_degree: bool = False, badge_status: bool = False, badge_grade: bool = False, separate: bool = False, channel_id: str | None = None, plotting_backend: Literal['matplotlib', 'plotly'] = 'matplotlib', comparison_word: str = '成績チェック', comparison_alias: list[str] = <factory>, search_after: int = 7, ignore_userid: list[str] = <factory>, channel_limitations: list[str] = <factory>, bot_name: discord.user.ClientUser | None = None)