插件管理添加翻页按钮,支持从内存快速获取当前session状态

This commit is contained in:
2024-04-17 20:45:44 +08:00
parent 0e02af59ca
commit 0e47e3c163
7 changed files with 147 additions and 63 deletions

View File

@ -57,6 +57,7 @@ class Database:
"""
table_name = model.TABLE_NAME
model_type = type(model)
nonebot.logger.debug(f"Selecting {model_type} WHERE {condition} {args}")
if not table_name:
raise ValueError(f"数据模型{model_type.__name__}未提供表名")
@ -85,6 +86,7 @@ class Database:
"""
table_list = [item[0] for item in self.cursor.execute("SELECT name FROM sqlite_master WHERE type='table'").fetchall()]
for model in args:
nonebot.logger.debug(f"Upserting {model}")
if not model.TABLE_NAME:
raise ValueError(f"数据模型 {model.__class__.__name__} 未提供表名")
elif model.TABLE_NAME not in table_list:
@ -164,13 +166,9 @@ class Database:
return new_obj
elif isinstance(obj, (list, set, tuple)):
print(" - Load as List")
new_obj = []
for item in obj:
print(" - Loading Item", item)
if isinstance(item, bytes):
# 对bytes进行尝试解析解析失败则返回原始bytes
@ -179,8 +177,6 @@ class Database:
except Exception as e:
new_obj.append(self._load(item))
print(" - Load as Bytes | Result:", new_obj[-1])
elif isinstance(item, str) and item.startswith(self.FOREIGN_KEY_PREFIX):
new_obj.append(self._load(self._get_foreign_data(item)))
else:
@ -202,6 +198,7 @@ class Database:
"""
table_name = model.TABLE_NAME
nonebot.logger.debug(f"Deleting {model} WHERE {condition} {args}")
if not table_name:
raise ValueError(f"数据模型{model.__class__.__name__}未提供表名")
if model.id is not None:

View File

@ -145,20 +145,21 @@ class Language:
def change_user_lang(user_id: str, lang_code: str):
"""
修改用户的语言
修改用户的语言,同时储存到数据库和内存中
"""
user = user_db.first(User(), "user_id = ?", user_id, default=User(user_id=user_id))
user.profile["lang"] = lang_code
user_db.update(user, "user_id = ?", user_id)
_user_lang[user_id] = lang_code
def get_user_lang(user_id: str) -> Language:
"""
获取用户的语言实例,优先从内存中获取
"""
if user_id in _user_lang:
return Language(_user_lang[user_id])
else:
user_id = str(user_id)
if user_id not in _user_lang:
user = user_db.first(
User(), "user_id = ?", user_id, default=User(
user_id=user_id,
@ -167,7 +168,8 @@ def get_user_lang(user_id: str) -> Language:
)
lang_code = user.profile.get("lang", get_default_lang_code())
_user_lang[user_id] = lang_code
return Language(lang_code)
return Language(_user_lang[user_id])
def get_system_lang_code() -> str: