Lib.utils.PluginConfig

插件配置管理

 1"""
 2插件配置管理
 3"""
 4
 5import inspect
 6
 7from Lib.core import ConfigManager, PluginManager
 8from Lib.constants import *
 9
10
11class PluginConfig(ConfigManager.ConfigManager):
12    """
13    插件配置管理
14    """
15    def __init__(
16            self,
17            plugin_name: str = None,
18            default_config: str | dict = None
19    ):
20        """
21        Args:
22            plugin_name: 插件名称,留空自动获取
23            default_config: 默认配置,选填
24        """
25        if plugin_name is None:
26            stack = inspect.stack()
27            stack.reverse()
28            while stack:
29                frame, filename, line_number, function_name, lines, index = stack.pop(0)
30                if filename.startswith(PLUGINS_PATH):
31                    for plugin in PluginManager.found_plugins:
32                        head, tail = os.path.split(plugin["file_path"])
33                        if head == PLUGINS_PATH:
34                            # 是文件类型的插件
35                            if plugin["file_path"] == filename:
36                                plugin_name = plugin["name"]
37                        else:
38                            # 是库类型的插件
39                            if filename.startswith(os.path.split(plugin["file_path"])[0]):
40                                plugin_name = plugin["name"]
41        super().__init__(os.path.join(PLUGIN_CONFIGS_PATH, f"{plugin_name}.yml"), default_config)
42        self.plugin_name = plugin_name
class PluginConfig(Lib.core.ConfigManager.ConfigManager):
12class PluginConfig(ConfigManager.ConfigManager):
13    """
14    插件配置管理
15    """
16    def __init__(
17            self,
18            plugin_name: str = None,
19            default_config: str | dict = None
20    ):
21        """
22        Args:
23            plugin_name: 插件名称,留空自动获取
24            default_config: 默认配置,选填
25        """
26        if plugin_name is None:
27            stack = inspect.stack()
28            stack.reverse()
29            while stack:
30                frame, filename, line_number, function_name, lines, index = stack.pop(0)
31                if filename.startswith(PLUGINS_PATH):
32                    for plugin in PluginManager.found_plugins:
33                        head, tail = os.path.split(plugin["file_path"])
34                        if head == PLUGINS_PATH:
35                            # 是文件类型的插件
36                            if plugin["file_path"] == filename:
37                                plugin_name = plugin["name"]
38                        else:
39                            # 是库类型的插件
40                            if filename.startswith(os.path.split(plugin["file_path"])[0]):
41                                plugin_name = plugin["name"]
42        super().__init__(os.path.join(PLUGIN_CONFIGS_PATH, f"{plugin_name}.yml"), default_config)
43        self.plugin_name = plugin_name

插件配置管理

PluginConfig(plugin_name: str = None, default_config: str | dict = None)
16    def __init__(
17            self,
18            plugin_name: str = None,
19            default_config: str | dict = None
20    ):
21        """
22        Args:
23            plugin_name: 插件名称,留空自动获取
24            default_config: 默认配置,选填
25        """
26        if plugin_name is None:
27            stack = inspect.stack()
28            stack.reverse()
29            while stack:
30                frame, filename, line_number, function_name, lines, index = stack.pop(0)
31                if filename.startswith(PLUGINS_PATH):
32                    for plugin in PluginManager.found_plugins:
33                        head, tail = os.path.split(plugin["file_path"])
34                        if head == PLUGINS_PATH:
35                            # 是文件类型的插件
36                            if plugin["file_path"] == filename:
37                                plugin_name = plugin["name"]
38                        else:
39                            # 是库类型的插件
40                            if filename.startswith(os.path.split(plugin["file_path"])[0]):
41                                plugin_name = plugin["name"]
42        super().__init__(os.path.join(PLUGIN_CONFIGS_PATH, f"{plugin_name}.yml"), default_config)
43        self.plugin_name = plugin_name
Arguments:
  • plugin_name: 插件名称,留空自动获取
  • default_config: 默认配置,选填
plugin_name