refactor: onmyoji gacha plugin overhaul (gacha-refactor)
This commit is contained in:
42
danding_bot/plugins/onmyoji_gacha/handlers/query.py
Normal file
42
danding_bot/plugins/onmyoji_gacha/handlers/query.py
Normal file
@@ -0,0 +1,42 @@
|
||||
"""
|
||||
抽卡详情查询处理模块
|
||||
|
||||
处理用户抽卡详情查询,包括最近抽卡记录和成就进度。
|
||||
"""
|
||||
|
||||
from nonebot.adapters.onebot.v11 import Bot, MessageEvent, GroupMessageEvent
|
||||
import nonebot
|
||||
|
||||
from ..utils import get_gacha_system
|
||||
from .. import formatters
|
||||
|
||||
logger = nonebot.logger
|
||||
|
||||
|
||||
async def handle_query(bot: Bot, event: MessageEvent, state: dict):
|
||||
"""处理抽卡详情查询命令"""
|
||||
user_id = str(event.user_id)
|
||||
user_name = event.sender.card or event.sender.nickname or "未知用户"
|
||||
|
||||
gacha_system = get_gacha_system()
|
||||
stats = await gacha_system.get_user_stats(user_id)
|
||||
|
||||
if not stats or stats.get("total_draws", 0) == 0:
|
||||
await event.finish("您还没有抽卡记录哦~")
|
||||
|
||||
# 获取最近抽卡记录
|
||||
recent = await gacha_system.get_recent_draws(user_id, limit=5)
|
||||
|
||||
# 发送统计详情
|
||||
msg = formatters.format_user_detail_stats(stats, user_id, user_name, recent)
|
||||
await event.send(msg)
|
||||
|
||||
# 发送成就进度
|
||||
progress = await gacha_system.get_achievement_progress(user_id)
|
||||
if progress:
|
||||
achievement_msg = formatters.format_achievement_progress(
|
||||
progress.get("consecutive_days", 0),
|
||||
progress.get("no_ssr_streak", 0),
|
||||
user_id
|
||||
)
|
||||
await event.send(achievement_msg)
|
||||
Reference in New Issue
Block a user