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