refactor: onmyoji gacha plugin overhaul (gacha-refactor)
This commit is contained in:
45
danding_bot/plugins/onmyoji_gacha/handlers/triple_gacha.py
Normal file
45
danding_bot/plugins/onmyoji_gacha/handlers/triple_gacha.py
Normal file
@@ -0,0 +1,45 @@
|
||||
"""
|
||||
三连抽命令处理模块
|
||||
|
||||
处理三连抽命令,包括:
|
||||
- 三次抽卡执行
|
||||
- 结果汇总
|
||||
- 成就检查
|
||||
"""
|
||||
|
||||
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)
|
||||
Reference in New Issue
Block a user