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
131cd5ea9a
commit
e2d20b0eb4
@ -2,6 +2,8 @@ from tortoise import fields
|
||||
|
||||
from zhenxun.services.db_context import Model
|
||||
|
||||
from .group_console import GroupConsole
|
||||
|
||||
|
||||
class TaskInfo(Model):
|
||||
id = fields.IntField(pk=True, generated=True, auto_increment=True)
|
||||
@ -20,3 +22,21 @@ class TaskInfo(Model):
|
||||
class Meta:
|
||||
table = "task_info"
|
||||
table_description = "被动技能基本信息"
|
||||
|
||||
@classmethod
|
||||
async def is_block(cls, module: str, group_id: str | None) -> bool:
|
||||
"""判断被动技能是否被禁用
|
||||
|
||||
参数:
|
||||
module: 被动技能模块名
|
||||
group_id: 群组id
|
||||
|
||||
返回:
|
||||
bool: 是否被禁用
|
||||
"""
|
||||
if task := await cls.get_or_none(module=module):
|
||||
if task.status:
|
||||
return True
|
||||
if group_id:
|
||||
return await GroupConsole.is_block_task(group_id, module)
|
||||
return False
|
||||
|
||||
@ -2,7 +2,7 @@ from nonebot.adapters import Bot
|
||||
from nonebot.plugin import PluginMetadata
|
||||
from nonebot_plugin_alconna import Arparma
|
||||
from nonebot_plugin_alconna import At as alcAt
|
||||
from nonebot_plugin_alconna import Match
|
||||
from nonebot_plugin_alconna import Match, UniMsg
|
||||
from nonebot_plugin_saa import Image, Text
|
||||
from nonebot_plugin_session import EventSession
|
||||
|
||||
@ -64,10 +64,13 @@ async def _(money: int, num: Match[int], at_user: Match[alcAt]):
|
||||
_russian_matcher.set_path_arg("at_user", at_user.result.target)
|
||||
|
||||
|
||||
@_russian_matcher.got_path("num", prompt="请输入装填子弹的数量!(最多6颗)")
|
||||
@_russian_matcher.got_path(
|
||||
"num", prompt="请输入装填子弹的数量!(最多6颗,输入取消来取消装弹)"
|
||||
)
|
||||
async def _(
|
||||
bot: Bot,
|
||||
session: EventSession,
|
||||
message: UniMsg,
|
||||
arparma: Arparma,
|
||||
money: int,
|
||||
num: int,
|
||||
@ -75,10 +78,16 @@ async def _(
|
||||
uname: str = UserName(),
|
||||
):
|
||||
gid = session.id2
|
||||
if message.extract_plain_text() == "取消":
|
||||
await Text("已取消装弹...").finish()
|
||||
if not session.id1:
|
||||
await Text("用户id为空...").finish()
|
||||
if not gid:
|
||||
await Text("群组id为空...").finish()
|
||||
if money <= 0:
|
||||
await Text("赌注金额必须大于0!").finish(reply=True)
|
||||
if num < 0 or num > 6:
|
||||
await Text("子弹数量必须在1-6之间!").finish(reply=True)
|
||||
_at_user = at_user.result.target if at_user.available else None
|
||||
rus = Russian(
|
||||
at_user=_at_user, player1=(session.id1, uname), money=money, bullet_num=num
|
||||
@ -94,7 +103,6 @@ async def _(
|
||||
|
||||
@_accept_matcher.handle()
|
||||
async def _(session: EventSession, arparma: Arparma, uname: str = UserName()):
|
||||
global a
|
||||
gid = session.id2
|
||||
if not session.id1:
|
||||
await Text("用户id为空...").finish()
|
||||
|
||||
@ -77,6 +77,17 @@ class RussianManage:
|
||||
bullet_list[i] = 1
|
||||
return bullet_list
|
||||
|
||||
def __remove_job(self, group_id: str):
|
||||
"""移除定时任务
|
||||
|
||||
参数:
|
||||
group_id: 群组id
|
||||
"""
|
||||
try:
|
||||
scheduler.remove_job(f"russian_job_{group_id}")
|
||||
except JobLookupError:
|
||||
pass
|
||||
|
||||
def __build_job(
|
||||
self, bot: Bot, group_id: str, is_add: bool = False, platform: str | None = None
|
||||
):
|
||||
@ -88,10 +99,7 @@ class RussianManage:
|
||||
is_add: 是否添加新定时任务.
|
||||
platform: 平台
|
||||
"""
|
||||
try:
|
||||
scheduler.remove_job(f"russian_job_{group_id}")
|
||||
except JobLookupError:
|
||||
pass
|
||||
self.__remove_job(group_id)
|
||||
if is_add:
|
||||
date = datetime.now() + timedelta(seconds=31)
|
||||
scheduler.add_job(
|
||||
@ -164,7 +172,7 @@ class RussianManage:
|
||||
else:
|
||||
message_list = [
|
||||
Text(
|
||||
"若30秒内无人接受挑战则此次对决作废【首次游玩请发送 ’俄罗斯轮盘帮助‘ 来查看命令】"
|
||||
"若30秒内无人接受挑战则此次对决作废【首次游玩请at我发送 ’帮助俄罗斯轮盘‘ 来查看命令】"
|
||||
)
|
||||
]
|
||||
result = Text(
|
||||
@ -191,6 +199,8 @@ class RussianManage:
|
||||
return Text("又不是找你决斗,你接受什么啊!气!")
|
||||
if russian.player2:
|
||||
return Text("当前决斗已被其他玩家接受!请等待下局对决!")
|
||||
if russian.player1[0] == user_id:
|
||||
return Text("你发起的对决,你接受什么啊!气!")
|
||||
russian.player2 = (user_id, uname)
|
||||
russian.next_user = russian.player1[0]
|
||||
return MessageFactory(
|
||||
@ -321,11 +331,11 @@ class RussianManage:
|
||||
del self._data[group_id]
|
||||
return Text("规定时间内还未有人接受决斗,当前决斗过期...")
|
||||
return Text("决斗还未开始,,无法结算哦...")
|
||||
if user_id and user_id not in [russian.player1[0], russian.player1[0]]:
|
||||
return Text("吃瓜群众不要捣乱!黄牌警告!")
|
||||
if user_id and user_id not in [russian.player1[0], russian.player2[0]]:
|
||||
return Text(f"吃瓜群众不要捣乱!黄牌警告!")
|
||||
if not self.__check_is_timeout(group_id):
|
||||
return Text(
|
||||
f"{russian.player1[1]} 和 {russian.player1[1]} 比赛并未超时,请继续比赛..."
|
||||
f"{russian.player1[1]} 和 {russian.player2[1]} 比赛并未超时,请继续比赛..."
|
||||
)
|
||||
win_user = None
|
||||
lose_user = None
|
||||
@ -379,6 +389,7 @@ class RussianManage:
|
||||
padding=10,
|
||||
color="#f9f6f2",
|
||||
)
|
||||
self.__remove_job(group_id)
|
||||
result.append(Image(image.pic2bytes()))
|
||||
del self._data[group_id]
|
||||
return MessageFactory(result)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user