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