优化一下文案
This commit is contained in:
@@ -478,7 +478,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
return False, "不匹配的命令"
|
||||
|
||||
if not self.redis_db:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), "❌系统未初始化Redis", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), "❌ 天道失序,仙府未初始化(Redis)", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "Redis未初始化"
|
||||
@@ -486,7 +486,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
# 限流:默认按用户+群维度;历练按用户全局维度
|
||||
|
||||
if self.redis_db.check_rate_limited(sender, roomid or "", cmd):
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), "⚠️ 操作过于频繁,请稍候再试", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), "⚠️ 道友莫急,天道有序,稍候再试", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "限流"
|
||||
@@ -576,7 +576,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), f"❌命令格式错误!\n{self.command_format}", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "命令格式错误"
|
||||
return False, "道友施法有误,指令格式不对"
|
||||
player = self._get_player_with_cache(sender, roomid or "")
|
||||
if player:
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), "⚠️ 已注册,无需重复注册", sender)
|
||||
@@ -607,7 +607,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
self._rate_set(sender, roomid or "", "注册修仙")
|
||||
# 初始化境界排行榜分值
|
||||
self.redis_db.leaderboard_realm_add(sender, float(self._realm_score(player["realm"])) )
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), f"✅ 注册成功,道号:{dao_name}\n灵根:{root_name}", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), f"✅ 入道已定,道号:{dao_name}\n灵根:{root_name}", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 10)
|
||||
return True, "注册成功"
|
||||
@@ -645,25 +645,25 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "系统未初始化积分模块", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "积分未初始化"
|
||||
return False, "积分体系未开,暂不可化石"
|
||||
player = self._get_player(sender, roomid or "")
|
||||
if not player:
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "未注册,请先发送:注册修仙 道号", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "未注册"
|
||||
return False, "道友尚未踏入仙途,请先发送:注册修仙 道号"
|
||||
try:
|
||||
pts = int(content.strip())
|
||||
except Exception:
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "命令格式:积分购石 积分数", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "命令格式错误"
|
||||
return False, "道友施法有误,指令格式不对"
|
||||
if pts <= 0:
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "积分数需为正整数", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "非法数量"
|
||||
return False, "道友,数量需为正整数"
|
||||
group_id = roomid or ""
|
||||
ok, res = self.points_db.deduct_points(sender, group_id, pts, PointSource.PLUGIN, "修仙购买灵石")
|
||||
if not ok:
|
||||
@@ -671,18 +671,18 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"积分不足,当前积分:{cur}", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "积分不足"
|
||||
return False, "道友积分不足"
|
||||
rate = int(self.point_to_stone_rate)
|
||||
if pts < rate:
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"积分不足以兑换1灵石,至少需要{rate}积分", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "积分不足"
|
||||
return False, "道友积分不足"
|
||||
stones_gain = pts // rate
|
||||
player["spirit_stone"] = int(player.get("spirit_stone", 0)) + stones_gain
|
||||
self._save_player(player)
|
||||
self._rate_set(sender, roomid or "", "积分购石")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 兑换成功,消耗积分{pts},获得灵石{stones_gain}({rate}积分=1灵石)", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 积分化石,消耗{pts},得灵石{stones_gain}({rate}分=1石)", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 10)
|
||||
return True, "积分购石"
|
||||
@@ -693,7 +693,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), "未注册,请先发送:注册修仙 道号", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "未注册"
|
||||
return False, "道友尚未踏入仙途,请先发送:注册修仙 道号"
|
||||
player = self._check_status_update(player)
|
||||
status_code = player.get("status")
|
||||
status_cn = {
|
||||
@@ -721,7 +721,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), "未注册,请先发送:注册修仙 道号", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "未注册"
|
||||
return False, "道友尚未踏入仙途,请先发送:注册修仙 道号"
|
||||
player = self._check_status_update(player)
|
||||
status = player.get("status", "Idle")
|
||||
if status == "Cultivating":
|
||||
@@ -737,7 +737,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
"Injured": "受伤保护",
|
||||
"Expedition": "历练"
|
||||
}.get(status, str(status))
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), f"当前状态[{status_cn}]不可闭关", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), f"当前状态[{status_cn}]不宜闭关", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "状态不可闭关"
|
||||
@@ -745,7 +745,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
player["last_cultivate_time"] = datetime.now(timezone.utc).isoformat()
|
||||
self._save_player(player)
|
||||
self._rate_set(sender, roomid or "", "闭关")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), "✅ 已进入闭关,期间安全不可被劫掠", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), "✅ 已入静闭关,期间天道护持,不可被劫", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 10)
|
||||
return True, "闭关成功"
|
||||
@@ -756,7 +756,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), "未注册,请先发送:注册修仙 道号", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "未注册"
|
||||
return False, "道友尚未踏入仙途,请先发送:注册修仙 道号"
|
||||
player = self._check_status_update(player)
|
||||
if player.get("status") != "Cultivating":
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), "⚠️ 非闭关状态,无需出关", sender)
|
||||
@@ -786,7 +786,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
self._auto_layer_up(sender, player)
|
||||
self.redis_db.leaderboard_add(sender, float(player["cultivation_points"]))
|
||||
self._rate_set(sender, roomid or "", "出关")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), f"✅ 出关成功,获得修为:{gain}({duration_hours:.1f}小时)\n当前修为:{player['cultivation_points']}\n状态:气息不稳 {self.unstable_qi_minutes}分钟", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), f"✅ 出关一朝,修为进益:{gain}({duration_hours:.1f}小时)\n现有修为:{player['cultivation_points']}\n状态:气息未平 {self.unstable_qi_minutes}分钟", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 20)
|
||||
return True, "出关结算"
|
||||
@@ -797,7 +797,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), "未注册,请先发送:注册修仙 道号", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "未注册"
|
||||
return False, "道友尚未踏入仙途,请先发送:注册修仙 道号"
|
||||
player = self._check_status_update(player)
|
||||
try:
|
||||
qty = int(content.strip())
|
||||
@@ -805,7 +805,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), f"❌命令格式错误!\n{self.command_format}", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "命令格式错误"
|
||||
return False, "道友施法有误,指令格式不对"
|
||||
stones = int(player.get("spirit_stone", 0))
|
||||
if qty <= 0 or stones < qty:
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), "⚠️ 灵石不足或数量不合法", sender)
|
||||
@@ -825,7 +825,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
self._auto_layer_up(sender, player)
|
||||
self.redis_db.leaderboard_add(sender, float(player["cultivation_points"]))
|
||||
self._rate_set(sender, roomid or "", "聚灵")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), f"✅ 聚灵成功,消耗灵石{qty},获得修为{gain}", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), f"✅ 灵气入体,消耗灵石{qty},修为涨{gain}", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 10)
|
||||
return True, "聚灵成功"
|
||||
@@ -962,7 +962,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "未注册,请先发送:注册修仙 道号", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "未注册"
|
||||
return False, "道友尚未踏入仙途,请先发送:注册修仙 道号"
|
||||
player = self._check_status_update(player)
|
||||
if self.redis_db.check_rate_limited(sender, roomid or "", "签到"):
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "今日已签到,请明日再来", sender)
|
||||
@@ -973,13 +973,13 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
player["spirit_stone"] = int(player.get("spirit_stone", 0)) + reward
|
||||
self._save_player(player)
|
||||
self._rate_set(sender, roomid or "", "签到")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 签到成功,获得灵石{reward}", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 灵运昌盛,获灵石{reward}", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 10)
|
||||
return True, "签到成功"
|
||||
|
||||
async def _cmd_shop(self, bot: WechatAPIClient, sender: str, roomid: str) -> Tuple[bool, str]:
|
||||
lines = ["🛒 坊市商品"]
|
||||
lines = ["🛒 坊市陈列"]
|
||||
for item in self.shop_items:
|
||||
lines.append(f"{item['name']} [{item['type']}] - {item['price']}灵石")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "\n".join(lines), sender)
|
||||
@@ -994,7 +994,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"❌命令格式错误!\n购买 物品 数量", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "命令格式错误"
|
||||
return False, "道友施法有误,指令格式不对"
|
||||
item_name = parts[0]
|
||||
try:
|
||||
qty = int(parts[1])
|
||||
@@ -1002,27 +1002,27 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"❌命令格式错误!\n购买 物品 数量", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "命令格式错误"
|
||||
return False, "道友施法有误,指令格式不对"
|
||||
player = self._get_player(sender, roomid or "")
|
||||
if not player:
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "未注册,请先发送:注册修仙 道号", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "未注册"
|
||||
return False, "道友尚未踏入仙途,请先发送:注册修仙 道号"
|
||||
player = self._check_status_update(player)
|
||||
item = next((i for i in self.shop_items if i["name"] == item_name), None)
|
||||
if not item:
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "商品不存在", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "商品不存在"
|
||||
return False, "坊市中无此物"
|
||||
total = item["price"] * qty
|
||||
stones = int(player.get("spirit_stone", 0))
|
||||
if qty <= 0 or stones < total:
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "灵石不足", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "灵石不足"
|
||||
return False, "灵石不够,修行不可强行为之"
|
||||
player["spirit_stone"] = stones - total
|
||||
inv = player.get("inventory") or {}
|
||||
inv[item_name] = int(inv.get(item_name, 0)) + qty
|
||||
@@ -1035,7 +1035,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
pass
|
||||
self._save_player(player)
|
||||
self._rate_set(sender, roomid or "", "购买")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 购买成功,{item_name} × {qty}", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 已购得 {item_name} × {qty}", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 10)
|
||||
return True, "购买成功"
|
||||
@@ -1043,23 +1043,23 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
async def _cmd_sell(self, bot: WechatAPIClient, sender: str, roomid: str, content: str) -> Tuple[bool, str]:
|
||||
parts = content.split()
|
||||
if len(parts) < 2:
|
||||
return False, "命令格式错误"
|
||||
return False, "道友施法有误,指令格式不对"
|
||||
item_name = parts[0]
|
||||
try:
|
||||
qty = int(parts[1])
|
||||
except Exception:
|
||||
return False, "命令格式错误"
|
||||
return False, "道友施法有误,指令格式不对"
|
||||
player = self._get_player(sender, roomid or "")
|
||||
if not player:
|
||||
return False, "未注册"
|
||||
return False, "道友尚未踏入仙途,请先发送:注册修仙 道号"
|
||||
player = self._check_status_update(player)
|
||||
inv = player.get("inventory") or {}
|
||||
have = int(inv.get(item_name, 0))
|
||||
if qty <= 0 or have < qty:
|
||||
return False, "物品不足"
|
||||
return False, "乾坤袋中此物不足"
|
||||
item = next((i for i in self.shop_items if i["name"] == item_name), None)
|
||||
if not item:
|
||||
return False, "商品不存在"
|
||||
return False, "坊市中无此物"
|
||||
sell_ratio = 0.5
|
||||
revenue = int(item["price"] * qty * sell_ratio)
|
||||
inv[item_name] = have - qty
|
||||
@@ -1073,7 +1073,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
pass
|
||||
self._save_player(player)
|
||||
self._rate_set(sender, roomid or "", "出售")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 出售成功,{item_name} × {qty},获得灵石{revenue}", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 已出手 {item_name} × {qty},入账灵石{revenue}", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 10)
|
||||
return True, "出售成功"
|
||||
@@ -1084,7 +1084,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "未注册,请先发送:注册修仙 道号", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "未注册"
|
||||
return False, "道友尚未踏入仙途,请先发送:注册修仙 道号"
|
||||
inv = player.get("inventory") or {}
|
||||
items = []
|
||||
if self.xdb:
|
||||
@@ -1107,9 +1107,9 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
async def _cmd_expedition(self, bot: WechatAPIClient, sender: str, roomid: str) -> Tuple[bool, str]:
|
||||
player = self._get_player(sender, roomid or "")
|
||||
if not player:
|
||||
return False, "未注册"
|
||||
return False, "道友尚未踏入仙途,请先发送:注册修仙 道号"
|
||||
if self.redis_db.check_rate_limited(sender, "__global__", "出门历练"):
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), "⚠️ 历练冷却中,请稍候再试", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), "⚠️ 天机不可泄,今日行程已定,稍候再试", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "限流"
|
||||
@@ -1161,13 +1161,13 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
player["status_until"] = (datetime.now(timezone.utc) + timedelta(minutes=30)).isoformat()
|
||||
self._save_player(player)
|
||||
self._rate_set_global(sender, "出门历练")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "❌ 历练失败,灵气反噬,受伤30分钟", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "❌ 历练失利,灵气倒灌,受伤30分钟", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 10)
|
||||
return False, "历练失败"
|
||||
else:
|
||||
self._rate_set_global(sender, "出门历练")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "⚠️ 历练无所得", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "⚠️ 此番行走天地,空手而归", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 10)
|
||||
return True, "历练无所得"
|
||||
@@ -1186,7 +1186,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
self._save_player(player)
|
||||
self._rate_set_global(sender, "出门历练")
|
||||
mats_text = ", ".join([f"{k}×{v}" for k, v in mats_gain.items()]) if mats_gain else "无"
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 历练成功,获得灵石{stones_gain},材料:{mats_text}", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 行走四方所得:灵石{stones_gain},材料:{mats_text}", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 10)
|
||||
return True, "历练成功"
|
||||
@@ -1194,10 +1194,10 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
async def _cmd_use(self, bot: WechatAPIClient, sender: str, roomid: str, content: str) -> Tuple[bool, str]:
|
||||
item_name = content.strip()
|
||||
if not item_name:
|
||||
return False, "命令格式错误"
|
||||
return False, "道友施法有误,指令格式不对"
|
||||
player = self._get_player(sender, roomid or "")
|
||||
if not player:
|
||||
return False, "未注册"
|
||||
return False, "道友尚未踏入仙途,请先发送:注册修仙 道号"
|
||||
player = self._check_status_update(player)
|
||||
inv = player.get("inventory") or {}
|
||||
qty = int(inv.get(item_name, 0))
|
||||
@@ -1214,7 +1214,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
pass
|
||||
self._save_player(player)
|
||||
self._rate_set(sender, roomid or "", "使用")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "✅ 已使用聚灵符,本次聚灵收益提升", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "✅ 符文已启,本次聚灵更为顺畅", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 10)
|
||||
return True, "使用聚灵符"
|
||||
@@ -1233,7 +1233,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
pass
|
||||
self._save_player(player)
|
||||
self._rate_set(sender, roomid or "", "使用")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "✅ 已服用回气丹,状态已恢复为空闲", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "✅ 服下回气丹,气息平稳,恢复空闲", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 10)
|
||||
return True, "服用回气丹"
|
||||
@@ -1269,7 +1269,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
player["spirit_root_mult"] = mult
|
||||
self._save_player(player)
|
||||
self._rate_set(sender, roomid or "", "使用")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 灵根提升成功,当前灵根:{target}", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 灵根蜕变,当前灵根:{target}", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 10)
|
||||
return True, "灵根提升成功"
|
||||
@@ -1279,7 +1279,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
player["status_until"] = (datetime.now(timezone.utc) + timedelta(minutes=rule["injured_min"])) .isoformat()
|
||||
self._save_player(player)
|
||||
self._rate_set(sender, roomid or "", "使用")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"❌ 灵根提升失败,灵气反噬,受伤{rule['injured_min']}分钟", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"❌ 灵根淬炼失利,灵气反噬,受伤{rule['injured_min']}分钟", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 10)
|
||||
return False, "灵根提升失败"
|
||||
@@ -1288,29 +1288,29 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
async def _cmd_alchemy(self, bot: WechatAPIClient, sender: str, roomid: str, content: str) -> Tuple[bool, str]:
|
||||
parts = content.split()
|
||||
if len(parts) < 2:
|
||||
return False, "命令格式错误"
|
||||
return False, "道友施法有误,指令格式不对"
|
||||
item_name = parts[0]
|
||||
try:
|
||||
qty = int(parts[1])
|
||||
except Exception:
|
||||
return False, "命令格式错误"
|
||||
return False, "道友施法有误,指令格式不对"
|
||||
player = self._get_player(sender, roomid or "")
|
||||
if not player:
|
||||
return False, "未注册"
|
||||
return False, "道友尚未踏入仙途,请先发送:注册修仙 道号"
|
||||
player = self._check_status_update(player)
|
||||
recipe = self.recipes.get(item_name)
|
||||
if not recipe:
|
||||
return False, "配方不存在"
|
||||
return False, "此丹方不传外人,尚未掌握"
|
||||
total_stone = recipe["stone"] * qty
|
||||
if int(player.get("spirit_stone", 0)) < total_stone:
|
||||
return False, "灵石不足"
|
||||
return False, "灵石不够,修行不可强行为之"
|
||||
inv = player.get("inventory") or {}
|
||||
need = {}
|
||||
for mk, mv in recipe["materials"].items():
|
||||
need[mk] = mv * qty
|
||||
for mk, nv in need.items():
|
||||
if int(inv.get(mk, 0)) < nv:
|
||||
return False, "材料不足"
|
||||
return False, "乾坤袋中材料不足"
|
||||
for mk, nv in need.items():
|
||||
inv[mk] = int(inv.get(mk, 0)) - nv
|
||||
success = 0
|
||||
@@ -1339,7 +1339,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
pass
|
||||
self._save_player(player)
|
||||
self._rate_set(sender, roomid or "", "炼丹")
|
||||
msg = f"✅ 炼丹完成,成功{success},失败{fail}"
|
||||
msg = f"✅ 丹炉开盖,成丹{success},走丹{fail}"
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, msg, sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 10)
|
||||
@@ -1351,7 +1351,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "未注册,请先发送:注册修仙 道号", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "未注册"
|
||||
return False, "道友尚未踏入仙途,请先发送:注册修仙 道号"
|
||||
player = self._check_status_update(player)
|
||||
points = int(player.get("cultivation_points", 0))
|
||||
|
||||
@@ -1360,20 +1360,20 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
prefix, layer = self._parse_realm(cur_realm)
|
||||
# 优化:检查是否真的达到10层
|
||||
if layer is None or layer < 10:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"当前境界为{cur_realm},需达到{prefix}10层才能突破", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"当前境界:{cur_realm},唯有至{prefix}10层方可冲关", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "未到瓶颈"
|
||||
stage_key = f"{prefix}10层"
|
||||
stage_conf = self.break_config.get(stage_key)
|
||||
if not stage_conf:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "当前境界未配置突破路径", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "此境瓶颈暂未开示,无法突破", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "未配置突破"
|
||||
pill_conf = stage_conf.get("pill")
|
||||
if not pill_conf:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "丹药路径未配置", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "丹道途径未明,暂不可试", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "未配置"
|
||||
@@ -1381,7 +1381,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
# 从配置中获取丹药名称
|
||||
pill_item_name = pill_conf.get("item")
|
||||
if not pill_item_name:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "突破丹药未配置", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "缺少突破丹药的指引", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "丹药未配置"
|
||||
@@ -1405,12 +1405,12 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
pill_item_count = inv.get(pill_item_name, 0)
|
||||
|
||||
if points < pill_conf["cost"]:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "修为不足,无法突破", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "底蕴未满,暂不可冲关", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "修为不足"
|
||||
if pill_item_count <= 0:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"缺少丹药:{pill_item_name}", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"丹药未备:{pill_item_name}", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "缺少丹药"
|
||||
@@ -1432,7 +1432,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
self._set_realm(sender, player, pill_conf["target"])
|
||||
self.redis_db.leaderboard_add(sender, float(player["cultivation_points"]))
|
||||
self._rate_set(sender, roomid or "", "突破")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 突破成功,晋升至{pill_conf['target']}", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 雷霆破关,晋至{pill_conf['target']}", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 10)
|
||||
return True, "突破成功"
|
||||
@@ -1440,7 +1440,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
# 失败时也要保存玩家数据
|
||||
self._save_player(player)
|
||||
self._rate_set(sender, roomid or "", "突破")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "❌ 突破失败", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "❌ 闭关未成,功亏一篑", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "突破失败"
|
||||
@@ -1451,7 +1451,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "未注册,请先发送:注册修仙 道号", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "未注册"
|
||||
return False, "道友尚未踏入仙途,请先发送:注册修仙 道号"
|
||||
player = self._check_status_update(player)
|
||||
points = int(player.get("cultivation_points", 0))
|
||||
# 读取当前瓶颈配置
|
||||
@@ -1459,25 +1459,25 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
prefix, layer = self._parse_realm(cur_realm)
|
||||
# 优化:检查是否真的达到10层
|
||||
if layer is None or layer < 10:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"当前境界为{cur_realm},需达到{prefix}10层才能强行突破", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"当前境界:{cur_realm},至{prefix}10层方能冒险强行冲关", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "未到瓶颈"
|
||||
stage_key = f"{prefix}10层"
|
||||
stage_conf = self.break_config.get(stage_key)
|
||||
if not stage_conf:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "当前境界未配置突破路径", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "此境瓶颈暂未开示,无法强行冲关", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "未配置突破"
|
||||
hard_conf = stage_conf.get("hard")
|
||||
if not hard_conf:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "强行路径未配置", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "强行之法未载,难以施为", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "未配置"
|
||||
if points < hard_conf["cost"]:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "修为不足,无法强行突破", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "底蕴不足,强行为之只会贻害", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "修为不足"
|
||||
@@ -1493,7 +1493,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
self._set_realm(sender, player, hard_conf["target"])
|
||||
self.redis_db.leaderboard_add(sender, float(player["cultivation_points"]))
|
||||
self._rate_set(sender, roomid or "", "强行突破")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 强行突破成功,晋升至{hard_conf['target']}", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 硬撼瓶颈,勉强晋至{hard_conf['target']}", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 10)
|
||||
return True, "强行突破成功"
|
||||
@@ -1501,7 +1501,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
# 失败时也要保存玩家数据
|
||||
self._save_player(player)
|
||||
self._rate_set(sender, roomid or "", "强行突破")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "❌ 强行突破失败,灵气反噬!", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "❌ 强行冲关失败,灵气反噬!", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "强行突破失败"
|
||||
@@ -1524,28 +1524,28 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "双方需已注册", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "未注册"
|
||||
return False, "道友尚未踏入仙途,请先发送:注册修仙 道号"
|
||||
attacker = self._check_status_update(attacker)
|
||||
defender = self._check_status_update(defender)
|
||||
# 新手保护:不可劫掠炼气期
|
||||
def_prefix, _ = self._parse_realm(defender.get("realm", "炼气1层"))
|
||||
if def_prefix == "炼气":
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "目标处于新手保护期(炼气),不可劫掠", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "对方新入仙途,天道庇护,暂不可劫", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "新手保护"
|
||||
if defender.get("status") in ("Cultivating", "Injured"):
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "目标处于保护或闭关中", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "对方正受天道护持或闭关参悟,切莫打扰", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "目标保护"
|
||||
if roomid and (attacker.get("group_id") != roomid or defender.get("group_id") != roomid):
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "仅限同群内劫掠", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "只可在同一仙门之境内行劫", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "跨群"
|
||||
if attacker.get("clan_id") and defender.get("clan_id") and attacker.get("clan_id") == defender.get("clan_id"):
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "不可劫掠同门", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "同门手足,不可相互劫掠", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "同门"
|
||||
@@ -1573,17 +1573,17 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
self._save_player(defender)
|
||||
self._save_player(attacker)
|
||||
self._rate_set(sender, roomid or "", "劫掠")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 劫掠成功,获得灵石{gain}", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 劫掠得手,入账灵石{gain}", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 10)
|
||||
if roomid:
|
||||
g_client_msg_id, g_create_time, g_new_msg_id = await bot.send_text_message(roomid, f"{sender} 劫掠 {target} 成功,目标进入受伤保护", [target])
|
||||
g_client_msg_id, g_create_time, g_new_msg_id = await bot.send_text_message(roomid, f"{sender} 劫掠 {target} 得手,目标陷入重创,暂受天道庇护", [target])
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke(roomid, g_client_msg_id, g_create_time, g_new_msg_id, 10)
|
||||
return True, "劫掠成功"
|
||||
else:
|
||||
self._rate_set(sender, roomid or "", "劫掠")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "❌ 劫掠失败", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "❌ 劫掠受挫,风声紧,暂且退去", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "劫掠失败"
|
||||
@@ -1591,7 +1591,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
async def _cmd_give_stone(self, bot: WechatAPIClient, sender: str, roomid: str, content: str) -> Tuple[bool, str]:
|
||||
parts = content.strip().split()
|
||||
if len(parts) < 2:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "命令格式:赠与 目标wxid 数量", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "格式:赠与 目标 数量", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "命令格式错误"
|
||||
@@ -1599,28 +1599,28 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
try:
|
||||
qty = int(parts[1])
|
||||
except Exception:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "命令格式:赠与 目标wxid 数量", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "格式:赠与 目标 数量", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "命令格式错误"
|
||||
giver = self._get_player_with_cache(sender, roomid or "")
|
||||
receiver = self._get_player_with_cache(target, roomid or "")
|
||||
if not giver or not receiver:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "双方需已注册", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "需双方皆踏入仙途", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "未注册"
|
||||
return False, "道友尚未踏入仙途,请先发送:注册修仙 道号"
|
||||
if not giver.get("clan_id") or giver.get("clan_id") != receiver.get("clan_id"):
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "仅同门可赠与灵石", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "灵石只可同门相赠", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "不同门"
|
||||
stones = int(giver.get("spirit_stone", 0))
|
||||
if qty <= 0 or stones < qty:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "灵石不足或数量不合法", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "灵石不足或数量有误", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "灵石不足"
|
||||
return False, "灵石不够,修行不可强行为之"
|
||||
giver["spirit_stone"] = stones - qty
|
||||
receiver["spirit_stone"] = int(receiver.get("spirit_stone", 0)) + qty
|
||||
if self.xdb:
|
||||
@@ -1633,7 +1633,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
self._save_player(giver)
|
||||
self._save_player(receiver)
|
||||
self._rate_set(sender, roomid or "", "赠与")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 已向 {target} 赠与灵石 {qty}", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 已向 {target} 相赠灵石 {qty}", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 10)
|
||||
return True, "赠与成功"
|
||||
@@ -1644,7 +1644,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "命令格式:赠送 目标wxid 物品 数量", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "命令格式错误"
|
||||
return False, "道友施法有误,指令格式不对"
|
||||
target = parts[0].lstrip("@")
|
||||
item_name = parts[1]
|
||||
try:
|
||||
@@ -1653,17 +1653,17 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "命令格式:赠送 目标wxid 物品 数量", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "命令格式错误"
|
||||
return False, "道友施法有误,指令格式不对"
|
||||
giver = self._get_player(sender, roomid or "")
|
||||
receiver = self._get_player(target, roomid or "")
|
||||
if not giver or not receiver:
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "双方需已注册", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "未注册"
|
||||
return False, "道友尚未踏入仙途,请先发送:注册修仙 道号"
|
||||
inv_g = giver.get("inventory") or {}
|
||||
if inv_g.get(item_name, 0) < qty or qty <= 0:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "物品不足或数量不合法", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "乾坤袋物品不足或数量有误", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "物品不足"
|
||||
@@ -1675,7 +1675,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
if self.xdb:
|
||||
ok = self.xdb.transfer_item(sender, target, item_name, qty)
|
||||
if not ok:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "物品转移失败", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "物品转移不成", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "转移失败"
|
||||
@@ -1692,7 +1692,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
async def _cmd_clan_create(self, bot: WechatAPIClient, sender: str, roomid: str, content: str) -> Tuple[bool, str]:
|
||||
name = content.strip()
|
||||
if not name:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "命令格式:创建门派 名称", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "格式:创建门派 名称", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "命令格式错误"
|
||||
@@ -1701,11 +1701,11 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
# client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "未注册,请先发送:注册修仙 道号", sender)
|
||||
# if self.revoke:
|
||||
# self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "未注册"
|
||||
return False, "道友尚未踏入仙途,请先发送:注册修仙 道号"
|
||||
prefix, _ = self._parse_realm(player.get("realm", "炼气1层"))
|
||||
allowed = {"元婴", "化神", "合体", "大乘", "渡劫", "真仙"}
|
||||
if prefix not in allowed:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "创建门派需达到元婴期及以上", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "唯元婴以上方可立宗开派", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "境界不足"
|
||||
@@ -1713,7 +1713,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
if self.xdb:
|
||||
clan_id = self.xdb.create_clan(name, roomid or "", sender)
|
||||
if clan_id is None:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "门派已存在或创建失败", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "此门已在或因故未成", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "门派失败"
|
||||
@@ -1727,7 +1727,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
pass
|
||||
self._save_player(player)
|
||||
self._rate_set(sender, roomid or "", "创建门派")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 门派已创建:{name}", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 山门立成:{name}", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 10)
|
||||
return True, "创建门派"
|
||||
@@ -1735,21 +1735,21 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
async def _cmd_clan_join(self, bot: WechatAPIClient, sender: str, roomid: str, content: str) -> Tuple[bool, str]:
|
||||
name = content.strip()
|
||||
if not name:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "命令格式:加入门派 名称", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "格式:加入门派 名称", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "命令格式错误"
|
||||
player = self._get_player_with_cache(sender, roomid or "")
|
||||
if not player:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "未注册,请先发送:注册修仙 道号", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "道友尚未踏入仙途,请先发送:注册修仙 道号", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "未注册"
|
||||
return False, "道友尚未踏入仙途,请先发送:注册修仙 道号"
|
||||
cid = None
|
||||
if self.xdb:
|
||||
cid = self.xdb.get_clan_id(roomid or "", name)
|
||||
if not cid:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "门派不存在", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "世间无此门派", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "门派不存在"
|
||||
@@ -1762,7 +1762,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
pass
|
||||
self._save_player(player)
|
||||
self._rate_set(sender, roomid or "", "加入门派")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 已加入门派:{name}", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, f"✅ 已拜入:{name}", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 10)
|
||||
return True, "加入门派"
|
||||
@@ -1770,7 +1770,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
async def _cmd_clan_exit(self, bot: WechatAPIClient, sender: str, roomid: str) -> Tuple[bool, str]:
|
||||
player = self._get_player_with_cache(sender, roomid or "")
|
||||
if not player:
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "未注册,请先发送:注册修仙 道号", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "道友尚未踏入仙途,请先发送:注册修仙 道号", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 5)
|
||||
return False, "未注册"
|
||||
@@ -1783,7 +1783,7 @@ class XiuxianPlugin(MessagePluginInterface):
|
||||
pass
|
||||
self._save_player(player)
|
||||
self._rate_set(sender, roomid or "", "退出门派")
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "✅ 已退出门派", sender)
|
||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message(roomid or sender, "✅ 已离出山门", sender)
|
||||
if self.revoke:
|
||||
self.revoke.add_message_to_revoke((roomid if roomid else sender), client_msg_id, create_time, new_msg_id, 10)
|
||||
return True, "退出门派"
|
||||
125
plugins/xiuxian/手册.md
Normal file
125
plugins/xiuxian/手册.md
Normal file
@@ -0,0 +1,125 @@
|
||||
|
||||
**欢迎入道**
|
||||
- 在群里发送 `注册修仙 道号` 开始游戏,例如:`注册修仙 青云子`
|
||||
- 注册后你会得到一个“灵根”和“初始境界”,用于决定你的修炼效率
|
||||
|
||||
**查看角色**
|
||||
- 发送 `我的状态` 查看当前信息:
|
||||
- 道号、境界与层数、修为点数、灵石数量、当前状态(空闲/闭关/历练/受伤等)
|
||||
|
||||
**提升修为**
|
||||
- 聚灵(快速提升):
|
||||
- 指令:`聚灵 数量`(数量为消耗的灵石数)
|
||||
- 说明:消耗灵石换取修为;使用“聚灵符”后,聚灵的收益更高
|
||||
- 闭关(按时间结算):
|
||||
- 指令:`闭关` → 等待一段时间 → `出关`
|
||||
- 说明:出关后一次性获得这段时间的修为,随后会短暂进入“气息不稳”,这段时间无法再次闭关
|
||||
|
||||
**出门历练**
|
||||
- 指令:`出门历练`
|
||||
- 说明:
|
||||
- 历练需要等待一段时间(通常约20分钟),结束后有机会获得灵石和材料
|
||||
- 可能失败并“受伤”,受伤期间有保护,部分行为受限
|
||||
- 历练有冷却与次数限制,提示消息会说明剩余时间或当天次数是否用完
|
||||
|
||||
**丹药与材料**
|
||||
- 获取:
|
||||
- 历练可掉落材料
|
||||
- 在坊市可以买到基础物品
|
||||
- 炼丹:
|
||||
- 指令:`炼丹 物品名 数量`(消耗材料和少量灵石)
|
||||
- 示例:`炼丹 回气丹 2`
|
||||
- 使用物品:
|
||||
- 指令:`使用 物品名` 或 `服用 丹药名`
|
||||
- 示例:`使用 聚灵符`(增强下一次聚灵)、`服用 回气丹`(解除气息不稳/受伤)
|
||||
|
||||
**材料一览**
|
||||
- 基础材料(T1):灵草、玄土、青木藤
|
||||
- 进阶材料(T2):赤炎石、寒晶、紫电砂
|
||||
- 稀有材料(T3):太一金精、昆仑玉髓
|
||||
- 获取途径:出门历练(不同难度随机掉落)、坊市购买(部分物品)
|
||||
|
||||
**炼丹配方一览**
|
||||
- 聚灵符:需要 灵草×3、玄土×1;消耗灵石 10;成功率 90%
|
||||
- 回气丹:需要 灵草×5、玄土×2;消耗灵石 20;成功率 85%
|
||||
- 洗髓丹:需要 灵草×10、玄土×5;消耗灵石 50;成功率 60%
|
||||
- 改灵丹:需要 赤炎石×8、寒晶×8;消耗灵石 100;成功率 30%
|
||||
- 天灵露:需要 太一金精×4、昆仑玉髓×4;消耗灵石 200;成功率 10%
|
||||
- 使用示例:`炼丹 回气丹 2`(按配方与数量自动扣除材料与灵石)
|
||||
|
||||
**境界与突破**
|
||||
- 境界由“层数”逐级提升,例如“炼气1层→炼气10层→筑基1层…”
|
||||
- 自动提升层数:当修为达到一定值,会自动提升到更高的“层”
|
||||
- 突破:
|
||||
- 指令:`突破`(需达到当前境界第10层,并准备好突破丹药与足够修为)
|
||||
- 成功则晋升到下一个大境界起始层
|
||||
- 强行突破:
|
||||
- 指令:`强行突破`(消耗更多修为,成功率较低)
|
||||
- 适合在缺少突破丹药时尝试,但风险更高
|
||||
|
||||
**坊市与交易**
|
||||
- 坊市:
|
||||
- 指令:`坊市` 查看在售物品与价格
|
||||
- 指令:`购买 物品名 数量` 进行购买
|
||||
- 指令:`出售 物品名 数量` 将物品卖出换灵石(回收价较低)
|
||||
- 背包:
|
||||
- 指令:`乾坤袋` 查看你拥有的物品
|
||||
- 赠与/赠送:
|
||||
- 指令:`赠与 @好友wxid 数量` 赠送灵石
|
||||
- 指令:`赠送 @好友wxid 物品名 数量` 赠送物品
|
||||
- 说明:高境界玩家可以帮助新手加速,但请适度赠与,避免资源浪费
|
||||
|
||||
**轻量PVP:劫掠**
|
||||
- 指令:`劫掠 @目标wxid`
|
||||
- 说明:
|
||||
- 可能从对方身上获得少量灵石
|
||||
- 新手阶段(低境界)有保护,某些状态(闭关/受伤)也有保护,不能被劫掠
|
||||
- 劫掠失败有风险,建议量力而行
|
||||
|
||||
**排行榜**
|
||||
- 指令:`排行榜`
|
||||
- 展示修为前十名,使用玩家“道号”与修为点数,便于大家了解成长速度
|
||||
|
||||
**签到与积分换石**
|
||||
- 每日签到:
|
||||
- 指令:`修仙签到`,可获得少量灵石
|
||||
- 每天一次,若当天已签到会提示
|
||||
- 积分兑换灵石:
|
||||
- 指令:`积分购石 积分数` 或 `积分换灵石 积分数`
|
||||
- 用群积分兑换灵石,适合缺灵石时使用
|
||||
|
||||
**状态说明**
|
||||
- 常见状态:
|
||||
- 空闲:可以执行各种操作
|
||||
- 闭关:修炼中,安全不可被劫掠
|
||||
- 气息不稳:刚出关的短暂恢复期,不能立即再次闭关
|
||||
- 历练:在外探险中,等待结束后会自动结算
|
||||
- 受伤:历练失败或被劫掠后进入保护期,部分行为受限
|
||||
- 状态会在指定时间后自动恢复为“空闲”,提示消息会说明剩余时长
|
||||
|
||||
**成长小贴士**
|
||||
- 合理分配灵石:聚灵适合快速提升,闭关适合长时间累计
|
||||
- 使用增益物品:在聚灵前使用“聚灵符”,效果更好
|
||||
- 历练择时:冷却结束再历练,避免连续失败导致受伤
|
||||
- 准备突破:凑齐突破丹药与足够修为再尝试,成功率更高
|
||||
- 社交互助:和高境界玩家互动,适度接受赠与,加速前期成长
|
||||
- 多参与:签到、历练、炼丹、交易都能帮助你更快提升
|
||||
|
||||
**常用指令速查**
|
||||
- 注册:`注册修仙 道号`
|
||||
- 状态:`我的状态`、`乾坤袋`、`排行榜`
|
||||
- 修炼:`聚灵 数量`、`闭关`、`出关`
|
||||
- 历练:`出门历练`
|
||||
- 炼丹与使用:`炼丹 物品名 数量`、`使用 物品名`、`服用 丹药名`
|
||||
- 交易:`坊市`、`购买 物品名 数量`、`出售 物品名 数量`
|
||||
- 赠与:`赠与 @好友wxid 数量`、`赠送 @好友wxid 物品名 数量`
|
||||
- 突破:`突破`、`强行突破`
|
||||
- 签到与兑换:`修仙签到`、`积分购石 积分数`
|
||||
|
||||
**温馨提示**
|
||||
- 冷却与次数限制因群配置略有差异,请以机器人提示为准
|
||||
- 某些物品或丹药需要达到特定境界才能使用
|
||||
- 发生失败或受伤时不要着急,等待状态恢复即可继续修仙
|
||||
- 欢迎与群友互动,组队一起玩会更有趣
|
||||
|
||||
需要我把这份手册同步到你的群公告或某个固定文档里,方便新人快速上手吗?我可以直接帮你整理发布版本。
|
||||
Reference in New Issue
Block a user