调整内容
This commit is contained in:
@@ -20,6 +20,7 @@ from utils.robot_cmd.robot_command import Feature, PermissionStatus
|
|||||||
|
|
||||||
class LuckyPotRoom:
|
class LuckyPotRoom:
|
||||||
"""奖池房间类"""
|
"""奖池房间类"""
|
||||||
|
|
||||||
def __init__(self, room_id: str, entry_fee: int, max_players: int, countdown: int, creator: str, group_id: str):
|
def __init__(self, room_id: str, entry_fee: int, max_players: int, countdown: int, creator: str, group_id: str):
|
||||||
self.room_id = room_id
|
self.room_id = room_id
|
||||||
self.status = "waiting" # waiting | drawing | finished
|
self.status = "waiting" # waiting | drawing | finished
|
||||||
@@ -103,9 +104,16 @@ class LuckyPotPlugin(MessagePluginInterface):
|
|||||||
return self._commands
|
return self._commands
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def feature(self) -> Optional[Feature]:
|
def feature_key(self) -> Optional[str]:
|
||||||
"""获取功能权限"""
|
return self.FEATURE_KEY
|
||||||
return Feature.get_feature_by_key(self.FEATURE_KEY)
|
|
||||||
|
@property
|
||||||
|
def feature_description(self) -> Optional[str]:
|
||||||
|
return self.FEATURE_DESCRIPTION
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.feature = self.register_feature()
|
||||||
|
|
||||||
def initialize(self, context: Dict[str, Any]) -> bool:
|
def initialize(self, context: Dict[str, Any]) -> bool:
|
||||||
"""初始化插件"""
|
"""初始化插件"""
|
||||||
@@ -202,11 +210,11 @@ class LuckyPotPlugin(MessagePluginInterface):
|
|||||||
room = self.active_rooms[roomid]
|
room = self.active_rooms[roomid]
|
||||||
if room.status == "waiting":
|
if room.status == "waiting":
|
||||||
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target,
|
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target,
|
||||||
f"⚠️ 已有一个活跃的大奖池房间正在等待中!\n"
|
f"⚠️ 已有一个活跃的大奖池房间正在等待中!\n"
|
||||||
f"🕒 剩余时间: {room.get_remaining_time()}秒\n"
|
f"🕒 剩余时间: {room.get_remaining_time()}秒\n"
|
||||||
f"👥 当前人数: {room.get_player_count()}/{room.max_players}\n"
|
f"👥 当前人数: {room.get_player_count()}/{room.max_players}\n"
|
||||||
f"💰 当前奖池: {room.get_total_pot()} 积分",
|
f"💰 当前奖池: {room.get_total_pot()} 积分",
|
||||||
sender)
|
sender)
|
||||||
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
||||||
return True, "已有活跃房间"
|
return True, "已有活跃房间"
|
||||||
|
|
||||||
@@ -214,8 +222,8 @@ class LuckyPotPlugin(MessagePluginInterface):
|
|||||||
user_points = self.points_db.get_user_points(sender, roomid)
|
user_points = self.points_db.get_user_points(sender, roomid)
|
||||||
if user_points["total_points"] < self.entry_fee:
|
if user_points["total_points"] < self.entry_fee:
|
||||||
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target,
|
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target,
|
||||||
f"❌ 积分不足!创建大奖池需要 {self.entry_fee} 积分,您当前只有 {user_points['total_points']} 积分。",
|
f"❌ 积分不足!创建大奖池需要 {self.entry_fee} 积分,您当前只有 {user_points['total_points']} 积分。",
|
||||||
sender)
|
sender)
|
||||||
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
||||||
return True, "积分不足"
|
return True, "积分不足"
|
||||||
|
|
||||||
@@ -241,7 +249,9 @@ class LuckyPotPlugin(MessagePluginInterface):
|
|||||||
)
|
)
|
||||||
|
|
||||||
if not deduct_success:
|
if not deduct_success:
|
||||||
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target, "❌ 扣除积分失败,无法创建大奖池!", sender)
|
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target,
|
||||||
|
"❌ 扣除积分失败,无法创建大奖池!",
|
||||||
|
sender)
|
||||||
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
||||||
return True, "扣除积分失败"
|
return True, "扣除积分失败"
|
||||||
|
|
||||||
@@ -253,13 +263,13 @@ class LuckyPotPlugin(MessagePluginInterface):
|
|||||||
|
|
||||||
# 发送创建成功消息
|
# 发送创建成功消息
|
||||||
await self.bot.send_text_message(target,
|
await self.bot.send_text_message(target,
|
||||||
f"🎯 大奖池已创建!\n"
|
f"🎯 大奖池已创建!\n"
|
||||||
f"🆔 房间ID: {room_id}\n"
|
f"🆔 房间ID: {room_id}\n"
|
||||||
f"💰 入场费: {self.entry_fee} 积分\n"
|
f"💰 入场费: {self.entry_fee} 积分\n"
|
||||||
f"👥 人数上限: {self.max_players} 人\n"
|
f"👥 人数上限: {self.max_players} 人\n"
|
||||||
f"⏳ 倒计时: {self.countdown} 秒\n"
|
f"⏳ 倒计时: {self.countdown} 秒\n"
|
||||||
f"\n🎮 发送 \"{self._commands[0]} 参与\" 加入游戏!",
|
f"\n🎮 发送 \"{self._commands[0]} 参与\" 加入游戏!",
|
||||||
sender)
|
sender)
|
||||||
|
|
||||||
return True, "创建房间成功"
|
return True, "创建房间成功"
|
||||||
|
|
||||||
@@ -272,8 +282,8 @@ class LuckyPotPlugin(MessagePluginInterface):
|
|||||||
# 检查是否有活跃房间
|
# 检查是否有活跃房间
|
||||||
if roomid not in self.active_rooms:
|
if roomid not in self.active_rooms:
|
||||||
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target,
|
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target,
|
||||||
f"❌ 当前没有活跃的大奖池房间!\n发送 \"{self._commands[0]} 创建\" 创建一个新的大奖池。",
|
f"❌ 当前没有活跃的大奖池房间!\n发送 \"{self._commands[0]} 创建\" 创建一个新的大奖池。",
|
||||||
sender)
|
sender)
|
||||||
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
||||||
return True, "没有活跃房间"
|
return True, "没有活跃房间"
|
||||||
|
|
||||||
@@ -281,19 +291,25 @@ class LuckyPotPlugin(MessagePluginInterface):
|
|||||||
|
|
||||||
# 检查房间状态
|
# 检查房间状态
|
||||||
if room.status != "waiting":
|
if room.status != "waiting":
|
||||||
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target, "❌ 当前房间已经开始开奖或已结束,无法加入!", sender)
|
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target,
|
||||||
|
"❌ 当前房间已经开始开奖或已结束,无法加入!",
|
||||||
|
sender)
|
||||||
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
||||||
return True, "房间状态不允许加入"
|
return True, "房间状态不允许加入"
|
||||||
|
|
||||||
# 检查是否已在房间中
|
# 检查是否已在房间中
|
||||||
if sender in room.players:
|
if sender in room.players:
|
||||||
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target, "⚠️ 您已经在大奖池中了,无需重复加入!", sender)
|
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target,
|
||||||
|
"⚠️ 您已经在大奖池中了,无需重复加入!",
|
||||||
|
sender)
|
||||||
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
||||||
return True, "已在房间中"
|
return True, "已在房间中"
|
||||||
|
|
||||||
# 检查房间是否已满
|
# 检查房间是否已满
|
||||||
if room.is_full():
|
if room.is_full():
|
||||||
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target, "❌ 大奖池已满员,无法加入!", sender)
|
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target,
|
||||||
|
"❌ 大奖池已满员,无法加入!",
|
||||||
|
sender)
|
||||||
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
||||||
return True, "房间已满"
|
return True, "房间已满"
|
||||||
|
|
||||||
@@ -303,8 +319,8 @@ class LuckyPotPlugin(MessagePluginInterface):
|
|||||||
if time.time() - last_join_time < self.cooldown:
|
if time.time() - last_join_time < self.cooldown:
|
||||||
remaining = int(self.cooldown - (time.time() - last_join_time))
|
remaining = int(self.cooldown - (time.time() - last_join_time))
|
||||||
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target,
|
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target,
|
||||||
f"⏳ 操作过于频繁,请等待 {remaining} 秒后再试!",
|
f"⏳ 操作过于频繁,请等待 {remaining} 秒后再试!",
|
||||||
sender)
|
sender)
|
||||||
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
||||||
return True, "冷却中"
|
return True, "冷却中"
|
||||||
|
|
||||||
@@ -312,8 +328,8 @@ class LuckyPotPlugin(MessagePluginInterface):
|
|||||||
user_points = self.points_db.get_user_points(sender, roomid)
|
user_points = self.points_db.get_user_points(sender, roomid)
|
||||||
if user_points["total_points"] < room.entry_fee:
|
if user_points["total_points"] < room.entry_fee:
|
||||||
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target,
|
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target,
|
||||||
f"❌ 积分不足!参与大奖池需要 {room.entry_fee} 积分,您当前只有 {user_points['total_points']} 积分。",
|
f"❌ 积分不足!参与大奖池需要 {room.entry_fee} 积分,您当前只有 {user_points['total_points']} 积分。",
|
||||||
sender)
|
sender)
|
||||||
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
||||||
return True, "积分不足"
|
return True, "积分不足"
|
||||||
|
|
||||||
@@ -324,7 +340,9 @@ class LuckyPotPlugin(MessagePluginInterface):
|
|||||||
)
|
)
|
||||||
|
|
||||||
if not deduct_success:
|
if not deduct_success:
|
||||||
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target, "❌ 扣除积分失败,无法加入大奖池!", sender)
|
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target,
|
||||||
|
"❌ 扣除积分失败,无法加入大奖池!",
|
||||||
|
sender)
|
||||||
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
||||||
return True, "扣除积分失败"
|
return True, "扣除积分失败"
|
||||||
|
|
||||||
@@ -339,11 +357,11 @@ class LuckyPotPlugin(MessagePluginInterface):
|
|||||||
|
|
||||||
# 发送加入成功消息
|
# 发送加入成功消息
|
||||||
await self.bot.send_text_message(target,
|
await self.bot.send_text_message(target,
|
||||||
f"✅ {nickname} 成功加入大奖池!\n"
|
f"✅ {nickname} 成功加入大奖池!\n"
|
||||||
f"👥 当前人数: {room.get_player_count()}/{room.max_players}\n"
|
f"👥 当前人数: {room.get_player_count()}/{room.max_players}\n"
|
||||||
f"💰 当前奖池: {room.get_total_pot()} 积分\n"
|
f"💰 当前奖池: {room.get_total_pot()} 积分\n"
|
||||||
f"⏳ 剩余时间: {room.get_remaining_time()} 秒",
|
f"⏳ 剩余时间: {room.get_remaining_time()} 秒",
|
||||||
sender)
|
sender)
|
||||||
|
|
||||||
# 如果房间已满,立即开奖
|
# 如果房间已满,立即开奖
|
||||||
if room.is_full():
|
if room.is_full():
|
||||||
@@ -361,8 +379,8 @@ class LuckyPotPlugin(MessagePluginInterface):
|
|||||||
# 检查是否有活跃房间
|
# 检查是否有活跃房间
|
||||||
if roomid not in self.active_rooms:
|
if roomid not in self.active_rooms:
|
||||||
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target,
|
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target,
|
||||||
f"❌ 当前没有活跃的大奖池房间!\n发送 \"{self._commands[0]} 创建\" 创建一个新的大奖池。",
|
f"❌ 当前没有活跃的大奖池房间!\n发送 \"{self._commands[0]} 创建\" 创建一个新的大奖池。",
|
||||||
sender)
|
sender)
|
||||||
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
||||||
return True, "没有活跃房间"
|
return True, "没有活跃房间"
|
||||||
|
|
||||||
@@ -372,14 +390,14 @@ class LuckyPotPlugin(MessagePluginInterface):
|
|||||||
if room.status == "waiting":
|
if room.status == "waiting":
|
||||||
player_list = "\n".join([f"👤 {room.player_nicknames[p]}" for p in room.players])
|
player_list = "\n".join([f"👤 {room.player_nicknames[p]}" for p in room.players])
|
||||||
await self.bot.send_text_message(target,
|
await self.bot.send_text_message(target,
|
||||||
f"🎯 大奖池状态: 等待中\n"
|
f"🎯 大奖池状态: 等待中\n"
|
||||||
f"🆔 房间ID: {room.room_id}\n"
|
f"🆔 房间ID: {room.room_id}\n"
|
||||||
f"💰 入场费: {room.entry_fee} 积分\n"
|
f"💰 入场费: {room.entry_fee} 积分\n"
|
||||||
f"👥 当前人数: {room.get_player_count()}/{room.max_players}\n"
|
f"👥 当前人数: {room.get_player_count()}/{room.max_players}\n"
|
||||||
f"💰 当前奖池: {room.get_total_pot()} 积分\n"
|
f"💰 当前奖池: {room.get_total_pot()} 积分\n"
|
||||||
f"⏳ 剩余时间: {room.get_remaining_time()} 秒\n\n"
|
f"⏳ 剩余时间: {room.get_remaining_time()} 秒\n\n"
|
||||||
f"参与玩家:\n{player_list}",
|
f"参与玩家:\n{player_list}",
|
||||||
sender)
|
sender)
|
||||||
elif room.status == "drawing":
|
elif room.status == "drawing":
|
||||||
await self.bot.send_text_message(target, "🎯 大奖池正在开奖中,请稍候...", sender)
|
await self.bot.send_text_message(target, "🎯 大奖池正在开奖中,请稍候...", sender)
|
||||||
elif room.status == "finished" and room.result:
|
elif room.status == "finished" and room.result:
|
||||||
@@ -397,7 +415,9 @@ class LuckyPotPlugin(MessagePluginInterface):
|
|||||||
|
|
||||||
# 检查是否有活跃房间
|
# 检查是否有活跃房间
|
||||||
if roomid not in self.active_rooms:
|
if roomid not in self.active_rooms:
|
||||||
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target, "❌ 当前没有活跃的大奖池房间!", sender)
|
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target,
|
||||||
|
"❌ 当前没有活跃的大奖池房间!",
|
||||||
|
sender)
|
||||||
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
||||||
return True, "没有活跃房间"
|
return True, "没有活跃房间"
|
||||||
|
|
||||||
@@ -405,13 +425,17 @@ class LuckyPotPlugin(MessagePluginInterface):
|
|||||||
|
|
||||||
# 检查是否是创建者
|
# 检查是否是创建者
|
||||||
if room.creator != sender:
|
if room.creator != sender:
|
||||||
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target, "❌ 只有房间创建者才能取消大奖池!", sender)
|
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target,
|
||||||
|
"❌ 只有房间创建者才能取消大奖池!",
|
||||||
|
sender)
|
||||||
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
||||||
return True, "不是创建者"
|
return True, "不是创建者"
|
||||||
|
|
||||||
# 检查房间状态
|
# 检查房间状态
|
||||||
if room.status != "waiting":
|
if room.status != "waiting":
|
||||||
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target, "❌ 房间已经开始开奖或已结束,无法取消!", sender)
|
client_msg_id, create_time, new_msg_id = await self.bot.send_text_message(target,
|
||||||
|
"❌ 房间已经开始开奖或已结束,无法取消!",
|
||||||
|
sender)
|
||||||
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
self.revoke.add_message_to_revoke(target, client_msg_id, create_time, new_msg_id, 5)
|
||||||
return True, "房间状态不允许取消"
|
return True, "房间状态不允许取消"
|
||||||
|
|
||||||
@@ -430,8 +454,8 @@ class LuckyPotPlugin(MessagePluginInterface):
|
|||||||
|
|
||||||
# 发送取消成功消息
|
# 发送取消成功消息
|
||||||
await self.bot.send_text_message(target,
|
await self.bot.send_text_message(target,
|
||||||
f"🚫 大奖池已被创建者取消!\n所有玩家的积分已退还。",
|
f"🚫 大奖池已被创建者取消!\n所有玩家的积分已退还。",
|
||||||
sender)
|
sender)
|
||||||
|
|
||||||
return True, "取消房间成功"
|
return True, "取消房间成功"
|
||||||
|
|
||||||
@@ -483,8 +507,8 @@ class LuckyPotPlugin(MessagePluginInterface):
|
|||||||
# 发送开奖提示
|
# 发送开奖提示
|
||||||
target = room.group_id if room.group_id else room.creator
|
target = room.group_id if room.group_id else room.creator
|
||||||
await self.bot.send_text_message(target,
|
await self.bot.send_text_message(target,
|
||||||
f"🧧 大奖池开奖中...\n💥💥💥",
|
f"🧧 大奖池开奖中...\n💥💥💥",
|
||||||
room.creator)
|
room.creator)
|
||||||
|
|
||||||
# 等待一小段时间,增加悬念
|
# 等待一小段时间,增加悬念
|
||||||
await asyncio.sleep(2)
|
await asyncio.sleep(2)
|
||||||
|
|||||||
Reference in New Issue
Block a user