添加显示提交记录的指令

This commit is contained in:
2025-10-27 15:31:12 +08:00
parent 56e0aabbf3
commit 37179fc4d7
2 changed files with 21 additions and 2 deletions

View File

@ -83,13 +83,13 @@ async def _(target: DepLongTaskTarget):
uname = get_username(int(u), gid)
t = d.strftime("%H:%M")
tries = len(manager.submissions[p.raw_id][u])
msg = msg.text(f"\n- {uname} [Solved at {t} in {tries} times]")
msg = msg.text(f"\n- {uname} [🎉 {t} 完成 | {tries} 提交]")
for u in info.tried_users - set(info.success_users.keys()):
uname = u
if re.match(r"^\d+$", u):
uname = get_username(int(u), gid)
tries = len(manager.submissions[p.raw_id][u])
msg = msg.text(f"\n- {uname} [Unsolved in {tries} times]")
msg = msg.text(f"\n- {uname} [💦 {tries} 提交]")
await target.send_message(msg)

View File

@ -82,6 +82,7 @@ def create_admin_commands():
),
Subcommand("publish", Args["raw_id?", str], dest="publish"),
Subcommand("preview", Args["raw_id", str], dest="preview"),
Subcommand("get-submits", Args["raw_id", str], dest="get-submits")
),
rule=is_puzzle_manager,
)
@ -96,6 +97,7 @@ def create_admin_commands():
msg = msg.text("konaph my <page?> - 查看我的谜题列表\n")
msg = msg.text("konaph modify - 查看如何修改谜题信息\n")
msg = msg.text("konaph preview <id> - 预览一个题目的效果,不会展示答案\n")
msg = msg.text("konaph get-submits <id> - 获得题目的提交记录\n")
if is_puzzle_admin(target):
msg = msg.text("konaph all [--ready] <page?> - 查看所有谜题\n")
@ -339,4 +341,21 @@ def create_admin_commands():
return await target.send_message("你没有权限预览这个谜题")
return await target.send_message(puzzle.get_unimessage())
@cmd_admin.assign("get-submits")
async def _(target: DepLongTaskTarget, raw_id: str):
async with puzzle_manager() as manager:
puzzle = manager.puzzle_data.get(raw_id)
if puzzle is None:
return await target.send_message("没有这个谜题")
if not is_puzzle_admin(target) and target.target_id != puzzle.author_id:
return await target.send_message("你没有权限预览这个谜题")
msg = UniMessage.text(f"==== {puzzle.title} 提交记录 ====\n\n")
submits = manager.submissions.get(raw_id, {})
for uid, ls in submits.items():
s = ', '.join((i.flag for i in ls))
msg = msg.text(f"- {get_username(uid)}{s}\n")
return await target.send_message(msg)
return cmd_admin