mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 06:12:53 +08:00
⚡️ 优化金币消耗异常处理
This commit is contained in:
parent
f809f0f3b4
commit
2495c40423
@ -24,6 +24,7 @@ from zhenxun.utils.enum import (
|
||||
PluginLimitType,
|
||||
PluginType,
|
||||
)
|
||||
from zhenxun.utils.exception import InsufficientGold
|
||||
from zhenxun.utils.utils import CountLimiter, FreqLimiter, UserBlockLimiter
|
||||
|
||||
|
||||
@ -233,13 +234,18 @@ class AuthChecker:
|
||||
)
|
||||
if cost_gold and user_id:
|
||||
"""花费金币"""
|
||||
await UserConsole.reduce_gold(
|
||||
user_id,
|
||||
cost_gold,
|
||||
GoldHandle.PLUGIN,
|
||||
matcher.plugin.name if matcher.plugin else "",
|
||||
session.platform,
|
||||
)
|
||||
try:
|
||||
await UserConsole.reduce_gold(
|
||||
user_id,
|
||||
cost_gold,
|
||||
GoldHandle.PLUGIN,
|
||||
matcher.plugin.name if matcher.plugin else "",
|
||||
session.platform,
|
||||
)
|
||||
except InsufficientGold:
|
||||
if u := await UserConsole.get_user(user_id):
|
||||
u.gold = 0
|
||||
await u.save(update_fields=["gold"])
|
||||
logger.debug(f"调用功能花费金币: {cost_gold}", "HOOK", session=session)
|
||||
if is_ignore:
|
||||
raise IgnoredException("权限检测 ignore")
|
||||
|
||||
@ -36,7 +36,7 @@ __plugin_meta__ = PluginMetadata(
|
||||
|
||||
* 不同群组同一个节日红包用户只能开一次
|
||||
|
||||
示例:
|
||||
示例:
|
||||
塞红包 1000
|
||||
塞红包 1000 10
|
||||
""".strip(),
|
||||
|
||||
@ -12,6 +12,7 @@ from zhenxun.configs.config import NICKNAME, Config
|
||||
from zhenxun.models.group_member_info import GroupInfoUser
|
||||
from zhenxun.models.user_console import UserConsole
|
||||
from zhenxun.utils.enum import GoldHandle
|
||||
from zhenxun.utils.exception import InsufficientGold
|
||||
from zhenxun.utils.image_utils import BuildImage, BuildMat, MatType, text2image
|
||||
from zhenxun.utils.platform import PlatformUtils
|
||||
|
||||
@ -183,7 +184,9 @@ class RussianManage:
|
||||
self.__build_job(bot, group_id, True)
|
||||
return MessageFactory(message_list)
|
||||
|
||||
def accept(self, group_id: str, user_id: str, uname: str) -> Text | MessageFactory:
|
||||
async def accept(
|
||||
self, group_id: str, user_id: str, uname: str
|
||||
) -> Text | MessageFactory:
|
||||
"""接受对决
|
||||
|
||||
参数:
|
||||
@ -201,6 +204,9 @@ class RussianManage:
|
||||
return Text("当前决斗已被其他玩家接受!请等待下局对决!")
|
||||
if russian.player1[0] == user_id:
|
||||
return Text("你发起的对决,你接受什么啊!气!")
|
||||
user = await UserConsole.get_user(user_id)
|
||||
if user.gold < russian.money:
|
||||
return Text("你没有足够的钱来接受这场挑战...")
|
||||
russian.player2 = (user_id, uname)
|
||||
russian.next_user = russian.player1[0]
|
||||
return MessageFactory(
|
||||
@ -368,9 +374,18 @@ class RussianManage:
|
||||
await UserConsole.add_gold(
|
||||
win_user[0], russian.money - fee, "russian", platform
|
||||
)
|
||||
await UserConsole.reduce_gold(
|
||||
lose_user[0], russian.money, GoldHandle.PLUGIN, "russian", platform
|
||||
)
|
||||
try:
|
||||
await UserConsole.reduce_gold(
|
||||
lose_user[0],
|
||||
russian.money,
|
||||
GoldHandle.PLUGIN,
|
||||
"russian",
|
||||
platform,
|
||||
)
|
||||
except InsufficientGold:
|
||||
if u := await UserConsole.get_user(lose_user[0]):
|
||||
u.gold = 0
|
||||
await u.save(update_fields=["gold"])
|
||||
result = [Text("这场决斗是 "), Mention(win_user[0]), Text(" 胜利了!")]
|
||||
image = await text2image(
|
||||
f"结算:\n"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user