修复Dashboard启动时message_storage属性缺失问题\n\n- 在Robot初始化阶段提前创建message_storage,避免后台启动早于iPad登录时缺少属性\n- 调整DashboardServer读取逻辑,优先复用Robot消息存储并增加安全回退
This commit is contained in:
@@ -46,8 +46,12 @@ class DashboardServer:
|
||||
if robot_instance:
|
||||
self.db_manager = robot_instance.db_manager
|
||||
self.stats_db = StatsDBOperator(self.db_manager)
|
||||
self.message_storage = MessageStorageDB(self.db_manager)
|
||||
self.emoji_asset_db = getattr(robot_instance.message_storage, "emoji_asset_db", None) or EmojiAssetDB(self.db_manager)
|
||||
# Dashboard 启动可能早于 iPad 登录完成:
|
||||
# 1. 此时 Robot 上的 message_storage 还没来得及绑定真实 bot;
|
||||
# 2. 但后台很多页面仍然依赖消息存储与表情资产库;
|
||||
# 3. 因此这里优先复用 Robot 已初始化的 message_storage,没有则再安全回退到 DB 层对象。
|
||||
self.message_storage = getattr(robot_instance, "message_storage", None) or MessageStorageDB(self.db_manager)
|
||||
self.emoji_asset_db = getattr(self.message_storage, "emoji_asset_db", None) or EmojiAssetDB(self.db_manager)
|
||||
self.contact_db: ContactsDBOperator = ContactsDBOperator(self.db_manager)
|
||||
self.member_context_db = MemberContextDBOperator(self.db_manager)
|
||||
self.task_db: TaskDBOperator = TaskDBOperator(self.db_manager)
|
||||
|
||||
5
robot.py
5
robot.py
@@ -86,6 +86,11 @@ class Robot:
|
||||
# 初始化联系人管理器
|
||||
self.contact_manager = ContactManager.get_instance()
|
||||
self.allContacts = {} # 将在登录后填充
|
||||
# 提前初始化消息存储:
|
||||
# 1. DashboardServer 会在主线程里较早启动,并直接读取 robot.message_storage;
|
||||
# 2. 旧逻辑要等 iPad 登录成功后才赋值,导致后台在启动竞态下拿不到这个属性;
|
||||
# 3. 这里先给一个可用的默认实例,后续登录成功后再注入真实 bot 覆盖即可。
|
||||
self.message_storage = MessageStorage()
|
||||
|
||||
self.groups = {} # 存储按group_id分组的消息列表,每个group_id最多保留10条消息
|
||||
|
||||
|
||||
Reference in New Issue
Block a user