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        })
@dataclass
class SvcConfig(integrations.base.interface.IntegrationsConfig):
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)
slash_command: str = 'mahjong'

スラッシュコマンド名

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

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

comparison_alias: list

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

search_after: int = 7

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

ignore_userid: list

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

channel_limitations: list

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

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

bot_name: Optional[discord.user.ClientUser] = None

ボットの名前