46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
"""
|
|
三连抽命令处理模块
|
|
|
|
处理三连抽命令,包括:
|
|
- 三次抽卡执行
|
|
- 结果汇总
|
|
- 成就检查
|
|
"""
|
|
|
|
from nonebot.adapters.onebot.v11 import Bot, MessageEvent, GroupMessageEvent
|
|
import nonebot
|
|
|
|
from ..utils import get_gacha_system
|
|
from .. import formatters
|
|
from ..utils import build_achievement_notify
|
|
|
|
logger = nonebot.logger
|
|
|
|
|
|
async def handle_triple_gacha(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()
|
|
results = []
|
|
|
|
# 执行三次抽卡
|
|
for _ in range(3):
|
|
result = await gacha_system.draw(user_id)
|
|
if result["success"]:
|
|
results.append((result["rarity"], result["name"], result["image"]))
|
|
else:
|
|
await event.finish(result["message"])
|
|
|
|
# 发送三连抽结果
|
|
msg = formatters.format_triple_gacha_result(results, user_id, user_name)
|
|
await event.send(msg)
|
|
|
|
# 成就检查(使用统一编排函数,避免接口不匹配)
|
|
unlocked = await gacha_system.check_achievements(user_id)
|
|
if unlocked:
|
|
achievement_msg = await build_achievement_notify(user_id, unlocked)
|
|
if achievement_msg:
|
|
await event.send(achievement_msg)
|