mirror of
https://github.com/TriM-Organization/LiteyukiBot-TriM.git
synced 2026-06-14 00:22:26 +00:00
小范围优化,综合性改动
This commit is contained in:
@@ -32,6 +32,7 @@ class BasicConfig(BaseModel):
|
||||
command_start: list[str] = ["/", ""]
|
||||
nickname: list[str] = [f"灵温-{random_hex_string(6)}"]
|
||||
default_language: str = "zh-WY"
|
||||
default_interact_language: str = "zh-CN"
|
||||
satori: SatoriConfig = SatoriConfig()
|
||||
data_path: str = "data/liteyuki"
|
||||
chromium_path: str = (
|
||||
@@ -43,6 +44,7 @@ class BasicConfig(BaseModel):
|
||||
else "/usr/bin/chromium-browser"
|
||||
)
|
||||
)
|
||||
status_acknowledgement: str = ""
|
||||
|
||||
|
||||
def load_from_yaml(file_: str) -> dict:
|
||||
|
||||
@@ -104,7 +104,7 @@ def load_from_dict(data: dict, lang_code: str):
|
||||
|
||||
class Language:
|
||||
# 三重fallback
|
||||
# 用户语言 > 默认语言/系统语言 > zh-CN
|
||||
# 用户语言 > 默认语言/系统语言 > zh-CN | en
|
||||
def __init__(self, lang_code: str = None, fallback_lang_code: str = None):
|
||||
self.lang_code = lang_code
|
||||
|
||||
@@ -117,6 +117,12 @@ class Language:
|
||||
"default_language", get_system_lang_code()
|
||||
)
|
||||
|
||||
self.__fallback_list = (
|
||||
self.lang_code,
|
||||
self.fallback_lang_code,
|
||||
"en" if "en" in self.lang_code else "zh-CN",
|
||||
)
|
||||
|
||||
def _get(self, item: str, *args, **kwargs) -> str | Any:
|
||||
"""
|
||||
获取当前语言文本,kwargs中的default参数为默认文本
|
||||
@@ -133,15 +139,14 @@ class Language:
|
||||
|
||||
"""
|
||||
default = kwargs.pop("default", None)
|
||||
fallback = (self.lang_code, self.fallback_lang_code, "zh-CN")
|
||||
|
||||
for lang_code in fallback:
|
||||
for lang_code in self.__fallback_list:
|
||||
if lang_code in _language_data and item in _language_data[lang_code]:
|
||||
trans: str = _language_data[lang_code][item]
|
||||
try:
|
||||
return trans.format(*args, **kwargs)
|
||||
except Exception as e:
|
||||
nonebot.logger.warning(f"Failed to format language data: {e}")
|
||||
nonebot.logger.warning("因 {} 无法格式化本地化数据".format(e))
|
||||
return trans
|
||||
return default or item
|
||||
|
||||
@@ -203,7 +208,7 @@ def get_user_lang(user_id: str) -> Language:
|
||||
user_id,
|
||||
default=User(user_id=user_id, username="Unknown"),
|
||||
)
|
||||
lang_code = user.profile.get("lang", get_default_lang_code())
|
||||
lang_code = user.profile.get("lang", get_default_user_lang_code())
|
||||
_user_lang[user_id] = lang_code
|
||||
|
||||
return Language(_user_lang[user_id])
|
||||
@@ -225,6 +230,13 @@ def get_default_lang_code() -> str:
|
||||
return get_config("default_language", default=get_system_lang_code())
|
||||
|
||||
|
||||
def get_default_user_lang_code() -> str:
|
||||
"""
|
||||
获取默认用户语言代码,和上面的默认语言不同,此处为显示给用户的语言
|
||||
"""
|
||||
return get_config("default_interact_language", default=get_default_lang_code())
|
||||
|
||||
|
||||
def get_all_lang() -> dict[str, str]:
|
||||
"""
|
||||
获取所有语言
|
||||
|
||||
+14
-10
@@ -20,18 +20,18 @@ def default_filter(record: "Record"):
|
||||
|
||||
# DEBUG日志格式
|
||||
debug_format: str = (
|
||||
"<c>{time:YYYY-MM-DD HH:mm:ss}</c> "
|
||||
"<lvl>[{level.icon}]</lvl> "
|
||||
"<c><{name}.{module}.{function}:{line}></c> "
|
||||
"{message}"
|
||||
"<c>{time:YYYY-MM-DD HH:mm:ss}</c> "
|
||||
"<lvl>[{level.icon}]</lvl> "
|
||||
"<c><{name}.{module}.{function}:{line}></c> "
|
||||
"{message}"
|
||||
)
|
||||
|
||||
# 默认日志格式
|
||||
default_format: str = (
|
||||
"<c>{time:MM-DD HH:mm:ss}</c> "
|
||||
"<lvl>[{level.icon}]</lvl> "
|
||||
"<c><{name}></c> "
|
||||
"{message}"
|
||||
"<c>{time:MM-DD HH:mm:ss}</c> "
|
||||
"<lvl>[{level.icon}]</lvl> "
|
||||
"<c><{name}></c> "
|
||||
"{message}"
|
||||
)
|
||||
|
||||
|
||||
@@ -74,6 +74,10 @@ def init_log():
|
||||
|
||||
logger.level("DEBUG", color="<blue>", icon=f"{'🐛' if show_icon else ''}{debug}")
|
||||
logger.level("INFO", color="<normal>", icon=f"{'ℹ️' if show_icon else ''}{info}")
|
||||
logger.level("SUCCESS", color="<green>", icon=f"{'✅' if show_icon else ''}{success}")
|
||||
logger.level("WARNING", color="<yellow>", icon=f"{'⚠️' if show_icon else ''}{warning}")
|
||||
logger.level(
|
||||
"SUCCESS", color="<green>", icon=f"{'✅' if show_icon else ''}{success}"
|
||||
)
|
||||
logger.level(
|
||||
"WARNING", color="<yellow>", icon=f"{'⚠️' if show_icon else ''}{warning}"
|
||||
)
|
||||
logger.level("ERROR", color="<red>", icon=f"{'⭕' if show_icon else ''}{error}")
|
||||
|
||||
Reference in New Issue
Block a user