优化 UX,添加 preview 指令
This commit is contained in:
@ -8,6 +8,7 @@ from pydantic import BaseModel
|
|||||||
from konabot.common.longtask import DepLongTaskTarget
|
from konabot.common.longtask import DepLongTaskTarget
|
||||||
from konabot.common.nb.extract_image import download_image_bytes
|
from konabot.common.nb.extract_image import download_image_bytes
|
||||||
from konabot.common.nb.qq_broadcast import qq_broadcast
|
from konabot.common.nb.qq_broadcast import qq_broadcast
|
||||||
|
from konabot.common.username import get_username
|
||||||
from konabot.plugins.kona_ph.core.storage import Puzzle, PuzzleManager, get_today_date, puzzle_manager
|
from konabot.plugins.kona_ph.core.storage import Puzzle, PuzzleManager, get_today_date, puzzle_manager
|
||||||
|
|
||||||
PUZZLE_PAGE_SIZE = 10
|
PUZZLE_PAGE_SIZE = 10
|
||||||
@ -41,11 +42,11 @@ def get_puzzle_info_message(manager: PuzzleManager, puzzle: Puzzle) -> UniMessag
|
|||||||
msg = UniMessage.text(
|
msg = UniMessage.text(
|
||||||
f"--- 谜题信息 ---\n"
|
f"--- 谜题信息 ---\n"
|
||||||
f"Raw ID: {puzzle.raw_id}\n"
|
f"Raw ID: {puzzle.raw_id}\n"
|
||||||
f"标题: {puzzle.title}\n"
|
f"出题者: {get_username(puzzle.author_id)} | {puzzle.author_id}\n"
|
||||||
f"出题者 ID: {puzzle.author_id}\n"
|
|
||||||
f"创建时间: {puzzle.created_at.strftime('%Y-%m-%d %H:%M:%S')}\n"
|
f"创建时间: {puzzle.created_at.strftime('%Y-%m-%d %H:%M:%S')}\n"
|
||||||
f"Flag: {puzzle.flag}\n"
|
|
||||||
f"状态: {status}{status_suffix}\n\n"
|
f"状态: {status}{status_suffix}\n\n"
|
||||||
|
f"标题: {puzzle.title}\n"
|
||||||
|
f"Flag: {puzzle.flag}\n\n"
|
||||||
f"{puzzle.content}"
|
f"{puzzle.content}"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -80,6 +81,7 @@ def create_admin_commands():
|
|||||||
dest="modify",
|
dest="modify",
|
||||||
),
|
),
|
||||||
Subcommand("publish", Args["raw_id?", str], dest="publish"),
|
Subcommand("publish", Args["raw_id?", str], dest="publish"),
|
||||||
|
Subcommand("preview", Args["raw_id", str], dest="preview"),
|
||||||
),
|
),
|
||||||
rule=is_puzzle_manager,
|
rule=is_puzzle_manager,
|
||||||
)
|
)
|
||||||
@ -93,6 +95,7 @@ def create_admin_commands():
|
|||||||
msg = msg.text("konaph info <id> - 查看谜题\n")
|
msg = msg.text("konaph info <id> - 查看谜题\n")
|
||||||
msg = msg.text("konaph my <page?> - 查看我的谜题列表\n")
|
msg = msg.text("konaph my <page?> - 查看我的谜题列表\n")
|
||||||
msg = msg.text("konaph modify - 查看如何修改谜题信息\n")
|
msg = msg.text("konaph modify - 查看如何修改谜题信息\n")
|
||||||
|
msg = msg.text("konaph preview <id> - 预览一个题目的效果,不会展示答案\n")
|
||||||
|
|
||||||
if is_puzzle_admin(target):
|
if is_puzzle_admin(target):
|
||||||
msg = msg.text("konaph all [--ready] <page?> - 查看所有谜题\n")
|
msg = msg.text("konaph all [--ready] <page?> - 查看所有谜题\n")
|
||||||
@ -196,7 +199,7 @@ def create_admin_commands():
|
|||||||
if manager.puzzle_pinned == p.raw_id:
|
if manager.puzzle_pinned == p.raw_id:
|
||||||
message = message.text("[📌]")
|
message = message.text("[📌]")
|
||||||
if manager.is_puzzle_published(p.raw_id):
|
if manager.is_puzzle_published(p.raw_id):
|
||||||
message = message.text(f"[#{p.index_id}] ")
|
message = message.text(f"[✨][#{p.index_id}] ")
|
||||||
elif p.ready:
|
elif p.ready:
|
||||||
message = message.text("[✅] ")
|
message = message.text("[✅] ")
|
||||||
else:
|
else:
|
||||||
@ -227,7 +230,7 @@ def create_admin_commands():
|
|||||||
if p.raw_id == manager.puzzle_pinned:
|
if p.raw_id == manager.puzzle_pinned:
|
||||||
message = message.text("[📌]")
|
message = message.text("[📌]")
|
||||||
if manager.is_puzzle_published(p.raw_id):
|
if manager.is_puzzle_published(p.raw_id):
|
||||||
message = message.text(f"[#{p.index_id}] ")
|
message = message.text(f"[✨][#{p.index_id}] ")
|
||||||
elif p.ready:
|
elif p.ready:
|
||||||
message = message.text("[✅] ")
|
message = message.text("[✅] ")
|
||||||
else:
|
else:
|
||||||
@ -284,7 +287,7 @@ def create_admin_commands():
|
|||||||
"支持的参数:\n"
|
"支持的参数:\n"
|
||||||
" --title <str> 标题\n"
|
" --title <str> 标题\n"
|
||||||
" --description <str> 题目详情描述(用直引号包裹以支持多行)\n"
|
" --description <str> 题目详情描述(用直引号包裹以支持多行)\n"
|
||||||
" --flag <str> flag\n"
|
" --flag <str> flag,也就是题目的答案\n"
|
||||||
" --image <图片> 图片\n"
|
" --image <图片> 图片\n"
|
||||||
" --remove-image 删除图片"
|
" --remove-image 删除图片"
|
||||||
)
|
)
|
||||||
@ -326,4 +329,14 @@ def create_admin_commands():
|
|||||||
await qq_broadcast(config.plugin_puzzle_playgroup, p.get_unimessage())
|
await qq_broadcast(config.plugin_puzzle_playgroup, p.get_unimessage())
|
||||||
return await target.send_message("Ok!")
|
return await target.send_message("Ok!")
|
||||||
|
|
||||||
|
@cmd_admin.assign("preview")
|
||||||
|
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("你没有权限预览这个谜题")
|
||||||
|
return await target.send_message(puzzle.get_unimessage())
|
||||||
|
|
||||||
return cmd_admin
|
return cmd_admin
|
||||||
|
|||||||
Reference in New Issue
Block a user