猜成语:修复无法移出简单词库的bug

插件管理:修复插件列表文字模式无法呼出的bug
This commit is contained in:
Eilles
2026-05-10 03:29:00 +08:00
parent 133ad2aca7
commit 0ade85bd49
2 changed files with 67 additions and 60 deletions
+42 -41
View File
@@ -105,6 +105,7 @@ disable = "disable"
Args["page", int, 1]["num", int, 10],
Option(
"-m|--markdown",
default=False,
action=store_true,
help_text="以 Markdown 交互形式显示列表",
),
@@ -369,47 +370,7 @@ async def _(result: Arparma, event: T_MessageEvent, bot: T_Bot, npm: Matcher):
page = clamp(result.subcommands["list"].args["page"], 1, total)
markdown_mode = result.subcommands["list"].options["markdown"].value
if not markdown_mode:
# 文字显示模式
reply = " - {} | {} -\n".format(
ulang.get("npm.loaded_plugins"),
ulang.get("npm.page", PAGE=page, TOTAL=total),
)
for pi in range(
(page - 1) * num_per_page,
min(page * num_per_page, len(loaded_plugin_list)),
):
# 遍历插件,通过插件编号
storePlugin = loaded_plugin_list[pi]
store_plugin = await get_store_plugin(storePlugin.name)
session_enable = get_plugin_session_enable(event, storePlugin.name)
if store_plugin:
show_name = store_plugin.name
elif storePlugin.metadata:
show_name = storePlugin.metadata.name
else:
show_name = storePlugin.name
ulang.get("npm.no_description")
reply += "{}. {}".format(pi + 1, show_name)
if not get_plugin_can_be_toggle(storePlugin.name):
reply += " [{}{}]".format(ulang.get('npm.cannot'), ulang.get(
"npm.disable" if session_enable else "npm.enable"
))
if not plugin_db.where_one(
InstalledPlugin(), "module_name = ?", storePlugin.name
):
reply += " [{}{}]".format(ulang.get('npm.cannot'), ulang.get("npm.uninstall"))
reply += "\n>\t{}\n".format(storePlugin.name)
await npm.send(reply)
else:
if markdown_mode:
# 已加载插件 | 总计10 | 第1/3页
reply = (
f"# {ulang.get('npm.loaded_plugins')} | "
@@ -521,7 +482,47 @@ async def _(result: Arparma, event: T_MessageEvent, bot: T_Bot, npm: Matcher):
reply += f"\n{btn_prev} {page}/{total} {btn_next}"
img_bytes = await md_to_pic(reply)
await UniMessage.send(UniMessage.image(raw=img_bytes))
else:
# 文字显示模式
reply = " - {} | {} -\n".format(
ulang.get("npm.loaded_plugins"),
ulang.get("npm.page", PAGE=page, TOTAL=total),
)
for pi in range(
(page - 1) * num_per_page,
min(page * num_per_page, len(loaded_plugin_list)),
):
# 遍历插件,通过插件编号
storePlugin = loaded_plugin_list[pi]
store_plugin = await get_store_plugin(storePlugin.name)
session_enable = get_plugin_session_enable(event, storePlugin.name)
if store_plugin:
show_name = store_plugin.name
elif storePlugin.metadata:
show_name = storePlugin.metadata.name
else:
show_name = storePlugin.name
ulang.get("npm.no_description")
reply += "{}. {}".format(pi + 1, show_name)
if not get_plugin_can_be_toggle(storePlugin.name):
reply += " [{}{}]".format(ulang.get('npm.cannot'), ulang.get(
"npm.disable" if session_enable else "npm.enable"
))
if not plugin_db.where_one(
InstalledPlugin(), "module_name = ?", storePlugin.name
):
reply += " [{}{}]".format(ulang.get('npm.cannot'), ulang.get("npm.uninstall"))
reply += "\n>\t{}\n".format(storePlugin.name)
await npm.send(reply)
else:
if await SUPERUSER(bot, event):
btn_enable_global = md.btn_cmd(
@@ -315,7 +315,7 @@ handle_update_idiom = on_alconna(
Option(
"-e|--explanation",
default="",
args=Args["explanation", str, "未提供该成语的解释说明"],
args=Args["explanation", str, ""],
),
Option(
"-d|--hard",
@@ -341,16 +341,12 @@ async def _(
):
if not (idiom := result.main_args["idiom"]):
await handle_update_idiom.finish("请在命令后带上你要增加的成语")
await handle_update_idiom.finish("用法:新成语 <成语> [-e|--explanation <释义>] [-d|--hard]")
existance = idiom in HANDLE_LEGAL_PHRASES
try:
explanation = (
result.options["explanation"].args["explanation"]
if result.options["explanation"].args["explanation"]
else None
)
explanation = result.options["explanation"].args["explanation"] or None
except:
explanation = None
@@ -370,17 +366,26 @@ async def _(
indent=4,
sort_keys=True,
)
if (not (hard := result.options["hard"].value)) and (
idiom not in HANDLE_COMMON_PHRASES
):
HANDLE_COMMON_PHRASES.append(idiom)
json.dump(
HANDLE_COMMON_PHRASES,
handle_common_idiom_path.open("w", encoding="utf-8"),
ensure_ascii=False,
indent=4,
sort_keys=True,
)
if hard := result.options["hard"].value:
if idiom in HANDLE_COMMON_PHRASES:
HANDLE_COMMON_PHRASES.remove(idiom)
json.dump(
HANDLE_COMMON_PHRASES,
handle_common_idiom_path.open("w", encoding="utf-8"),
ensure_ascii=False,
indent=4,
sort_keys=True,
)
else:
if idiom not in HANDLE_COMMON_PHRASES:
HANDLE_COMMON_PHRASES.append(idiom)
json.dump(
HANDLE_COMMON_PHRASES,
handle_common_idiom_path.open("w", encoding="utf-8"),
ensure_ascii=False,
indent=4,
sort_keys=True,
)
HANDLE_ANSWER_PHRASES[idiom] = {
"explanation": explanation,
@@ -403,8 +408,9 @@ async def _(
)
await handle_update_idiom.finish(
"成功{}{}\n当前词库总数:{}个,普通模式成语:{}\n当前成语信息如下:{}".format(
"成功{}[{}词汇]{}\n当前词库总数:{}个,普通模式成语:{}\n当前成语信息如下:{}".format(
"修改" if existance else "新增",
"困难" if hard else "普通",
idiom,
len(HANDLE_LEGAL_PHRASES),
len(HANDLE_COMMON_PHRASES),