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        )
20@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)
slash_command: str = 'mahjong'

スラッシュコマンド名

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

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

comparison_alias: list[str]

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

search_after: int = 7

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

ignore_userid: list[str]

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

channel_limitations: list[str]

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

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

bot_name: discord.user.ClientUser | None = None

ボットの名前