猜成语:修复无法移出简单词库的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], Args["page", int, 1]["num", int, 10],
Option( Option(
"-m|--markdown", "-m|--markdown",
default=False,
action=store_true, action=store_true,
help_text="以 Markdown 交互形式显示列表", 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) page = clamp(result.subcommands["list"].args["page"], 1, total)
markdown_mode = result.subcommands["list"].options["markdown"].value markdown_mode = result.subcommands["list"].options["markdown"].value
if not markdown_mode: if 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:
# 已加载插件 | 总计10 | 第1/3页 # 已加载插件 | 总计10 | 第1/3页
reply = ( reply = (
f"# {ulang.get('npm.loaded_plugins')} | " 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}" reply += f"\n{btn_prev} {page}/{total} {btn_next}"
img_bytes = await md_to_pic(reply) img_bytes = await md_to_pic(reply)
await UniMessage.send(UniMessage.image(raw=img_bytes)) 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: else:
if await SUPERUSER(bot, event): if await SUPERUSER(bot, event):
btn_enable_global = md.btn_cmd( btn_enable_global = md.btn_cmd(
@@ -315,7 +315,7 @@ handle_update_idiom = on_alconna(
Option( Option(
"-e|--explanation", "-e|--explanation",
default="", default="",
args=Args["explanation", str, "未提供该成语的解释说明"], args=Args["explanation", str, ""],
), ),
Option( Option(
"-d|--hard", "-d|--hard",
@@ -341,16 +341,12 @@ async def _(
): ):
if not (idiom := result.main_args["idiom"]): 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 existance = idiom in HANDLE_LEGAL_PHRASES
try: try:
explanation = ( explanation = result.options["explanation"].args["explanation"] or None
result.options["explanation"].args["explanation"]
if result.options["explanation"].args["explanation"]
else None
)
except: except:
explanation = None explanation = None
@@ -370,17 +366,26 @@ async def _(
indent=4, indent=4,
sort_keys=True, sort_keys=True,
) )
if (not (hard := result.options["hard"].value)) and ( if hard := result.options["hard"].value:
idiom not in HANDLE_COMMON_PHRASES if idiom in HANDLE_COMMON_PHRASES:
): HANDLE_COMMON_PHRASES.remove(idiom)
HANDLE_COMMON_PHRASES.append(idiom) json.dump(
json.dump( HANDLE_COMMON_PHRASES,
HANDLE_COMMON_PHRASES, handle_common_idiom_path.open("w", encoding="utf-8"),
handle_common_idiom_path.open("w", encoding="utf-8"), ensure_ascii=False,
ensure_ascii=False, indent=4,
indent=4, sort_keys=True,
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] = { HANDLE_ANSWER_PHRASES[idiom] = {
"explanation": explanation, "explanation": explanation,
@@ -403,8 +408,9 @@ async def _(
) )
await handle_update_idiom.finish( await handle_update_idiom.finish(
"成功{}{}\n当前词库总数:{}个,普通模式成语:{}\n当前成语信息如下:{}".format( "成功{}[{}词汇]{}\n当前词库总数:{}个,普通模式成语:{}\n当前成语信息如下:{}".format(
"修改" if existance else "新增", "修改" if existance else "新增",
"困难" if hard else "普通",
idiom, idiom,
len(HANDLE_LEGAL_PHRASES), len(HANDLE_LEGAL_PHRASES),
len(HANDLE_COMMON_PHRASES), len(HANDLE_COMMON_PHRASES),