Lib.utils.StateManager

状态管理器 注意,数据存储于内存中,重启丢失,需要持久化保存的数据请勿放在里面

 1"""
 2状态管理器
 3注意,数据存储于内存中,重启丢失,需要持久化保存的数据请勿放在里面
 4"""
 5
 6from Lib.core import PluginManager
 7
 8states = {}
 9
10
11def get_state(state_id: str, plugin_data: dict = None):
12    """
13    获取状态数据
14    Args:
15        state_id: 状态ID
16        plugin_data: 插件数据
17
18    Returns:
19        状态数据,结构类似
20        {
21            "state_id": state_id,
22            "data": {
23                k1: v1,
24                k2: v2
25            },
26            "other_plugin_data": {
27                plugin1_path: {
28                    "data": {
29                        k1: v1,
30                        k2: v2
31                    },
32                    "meta": {
33                        "plugin_data": plugin_data
34                    }
35                },
36                plugin2_path: {
37                    "data": {
38                        k1: v1,
39                        k2: v2
40                    },
41                    "meta": {
42                        "plugin_data": plugin_data
43                    }
44                }
45            }
46        }
47    """
48    if plugin_data is None:
49        plugin_data = PluginManager.get_caller_plugin_data()
50
51    if state_id not in states:
52        states[state_id] = {}
53
54    if plugin_data["path"] not in states[state_id]:
55        states[state_id][plugin_data["path"]] = {
56            "data": {},
57            "meta": {
58                "plugin_data": plugin_data
59            }
60        }
61
62    return {
63        "state_id": state_id,
64        "data": states[state_id][plugin_data["path"]]["data"],
65        "other_plugin_data": {
66            k: v for k, v in states[state_id].items() if k != plugin_data["path"]
67        }
68    }
states = {}
def get_state(state_id: str, plugin_data: dict = None):
12def get_state(state_id: str, plugin_data: dict = None):
13    """
14    获取状态数据
15    Args:
16        state_id: 状态ID
17        plugin_data: 插件数据
18
19    Returns:
20        状态数据,结构类似
21        {
22            "state_id": state_id,
23            "data": {
24                k1: v1,
25                k2: v2
26            },
27            "other_plugin_data": {
28                plugin1_path: {
29                    "data": {
30                        k1: v1,
31                        k2: v2
32                    },
33                    "meta": {
34                        "plugin_data": plugin_data
35                    }
36                },
37                plugin2_path: {
38                    "data": {
39                        k1: v1,
40                        k2: v2
41                    },
42                    "meta": {
43                        "plugin_data": plugin_data
44                    }
45                }
46            }
47        }
48    """
49    if plugin_data is None:
50        plugin_data = PluginManager.get_caller_plugin_data()
51
52    if state_id not in states:
53        states[state_id] = {}
54
55    if plugin_data["path"] not in states[state_id]:
56        states[state_id][plugin_data["path"]] = {
57            "data": {},
58            "meta": {
59                "plugin_data": plugin_data
60            }
61        }
62
63    return {
64        "state_id": state_id,
65        "data": states[state_id][plugin_data["path"]]["data"],
66        "other_plugin_data": {
67            k: v for k, v in states[state_id].items() if k != plugin_data["path"]
68        }
69    }

获取状态数据

Arguments:
  • state_id: 状态ID
  • plugin_data: 插件数据
Returns:

状态数据,结构类似 { "state_id": state_id, "data": { k1: v1, k2: v2 }, "other_plugin_data": { plugin1_path: { "data": { k1: v1, k2: v2 }, "meta": { "plugin_data": plugin_data } }, plugin2_path: { "data": { k1: v1, k2: v2 }, "meta": { "plugin_data": plugin_data } } } }