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 } } } }