群级别用户维护

This commit is contained in:
liuwei
2025-11-24 10:00:07 +08:00
parent 665b59e143
commit ea71fc0931
2 changed files with 22 additions and 21 deletions

View File

@@ -855,7 +855,7 @@ class XiuxianPlugin(MessagePluginInterface):
if k in player:
fields[k] = player[k]
try:
self.xdb.update_player_fields(player.get("user_id"), fields)
self.xdb.update_player_fields(player.get("user_id"), player.get("group_id", ""), fields)
except Exception as e:
logger.warning(f"更新玩家字段失败: {e}, user_id={player.get('user_id')}")
self.redis_db.save_player(player)
@@ -866,7 +866,7 @@ class XiuxianPlugin(MessagePluginInterface):
if p:
return p
if self.xdb:
dbp = self.xdb.get_player(user_id)
dbp = self.xdb.get_player(user_id, group_id)
if dbp and dbp.get("group_id", "") == group_id:
# 补充spirit_root_mult根据spirit_root名称查找对应的倍率
if "spirit_root_mult" not in dbp:
@@ -913,7 +913,7 @@ class XiuxianPlugin(MessagePluginInterface):
player["realm"] = new_realm
if self.xdb:
try:
self.xdb.update_player_fields(user_id, {"realm": new_realm})
self.xdb.update_player_fields(user_id, player.get("group_id", ""), {"realm": new_realm})
self.redis_db.invalidate_player(user_id, player.get("group_id", ""))
except Exception:
pass
@@ -1020,7 +1020,7 @@ class XiuxianPlugin(MessagePluginInterface):
player["inventory"] = inv
if self.xdb:
try:
self.xdb.update_player_fields(sender, {"spirit_stone": player["spirit_stone"]})
self.xdb.update_player_fields(sender, player.get("group_id", ""), {"spirit_stone": player["spirit_stone"]})
self.xdb.add_item(sender, item_name, item.get("type","other"), qty)
except Exception:
pass
@@ -1059,7 +1059,7 @@ class XiuxianPlugin(MessagePluginInterface):
if self.xdb:
try:
self.xdb.remove_item(sender, item_name, qty)
self.xdb.update_player_fields(sender, {"spirit_stone": player["spirit_stone"]})
self.xdb.update_player_fields(sender, player.get("group_id", ""), {"spirit_stone": player["spirit_stone"]})
except Exception:
pass
self._save_player(player)
@@ -1169,7 +1169,7 @@ class XiuxianPlugin(MessagePluginInterface):
player["inventory"] = inv
if self.xdb:
try:
self.xdb.update_player_fields(sender, {"spirit_stone": player["spirit_stone"]})
self.xdb.update_player_fields(sender, player.get("group_id", ""), {"spirit_stone": player["spirit_stone"]})
for k, v in mats_gain.items():
self.xdb.add_item(sender, k, "材料", v)
except Exception:
@@ -1320,7 +1320,7 @@ class XiuxianPlugin(MessagePluginInterface):
player["status_until"] = (datetime.now(timezone.utc) + timedelta(minutes=int(self.unstable_qi_minutes))).isoformat()
if self.xdb:
try:
self.xdb.update_player_fields(sender, {"spirit_stone": player["spirit_stone"], "status": player.get("status"), "status_until": player.get("status_until")})
self.xdb.update_player_fields(sender, player.get("group_id", ""), {"spirit_stone": player["spirit_stone"], "status": player.get("status"), "status_until": player.get("status_until")})
if success > 0:
self.xdb.add_item(sender, item_name, item_type, success)
for mk, nv in need.items():
@@ -1413,7 +1413,7 @@ class XiuxianPlugin(MessagePluginInterface):
if self.xdb:
try:
self.xdb.remove_item(sender, pill_item_name, 1)
self.xdb.update_player_fields(sender, {"cultivation_points": player["cultivation_points"]})
self.xdb.update_player_fields(sender, player.get("group_id", ""), {"cultivation_points": player["cultivation_points"]})
self.redis_db.invalidate_player(sender, player.get("group_id", ""))
except Exception as e:
logger.warning(f"突破时更新数据库失败: {e}, user_id={sender}")
@@ -1475,7 +1475,7 @@ class XiuxianPlugin(MessagePluginInterface):
player["cultivation_points"] = points - hard_conf["cost"]
if self.xdb:
try:
self.xdb.update_player_fields(sender, {"cultivation_points": player["cultivation_points"]})
self.xdb.update_player_fields(sender, player.get("group_id", ""), {"cultivation_points": player["cultivation_points"]})
self.redis_db.invalidate_player(sender, player.get("group_id", ""))
except Exception as e:
logger.warning(f"强行突破时更新数据库失败: {e}, user_id={sender}")
@@ -1557,8 +1557,8 @@ class XiuxianPlugin(MessagePluginInterface):
defender["status_until"] = (datetime.now(timezone.utc) + timedelta(minutes=int(self.injured_minutes))).isoformat()
if self.xdb:
try:
self.xdb.update_player_fields(defender.get("user_id"), {"spirit_stone": defender["spirit_stone"], "status": defender["status"], "status_until": defender["status_until"]})
self.xdb.update_player_fields(attacker.get("user_id"), {"spirit_stone": attacker["spirit_stone"]})
self.xdb.update_player_fields(defender.get("user_id"), defender.get("group_id", ""), {"spirit_stone": defender["spirit_stone"], "status": defender["status"], "status_until": defender["status_until"]})
self.xdb.update_player_fields(attacker.get("user_id"), attacker.get("group_id", ""), {"spirit_stone": attacker["spirit_stone"]})
except Exception:
pass
self._save_player(defender)
@@ -1616,8 +1616,8 @@ class XiuxianPlugin(MessagePluginInterface):
receiver["spirit_stone"] = int(receiver.get("spirit_stone", 0)) + qty
if self.xdb:
try:
self.xdb.update_player_fields(sender, {"spirit_stone": giver["spirit_stone"]})
self.xdb.update_player_fields(target, {"spirit_stone": receiver["spirit_stone"]})
self.xdb.update_player_fields(sender, giver.get("group_id", ""), {"spirit_stone": giver["spirit_stone"]})
self.xdb.update_player_fields(target, receiver.get("group_id", ""), {"spirit_stone": receiver["spirit_stone"]})
except Exception:
pass
# 使用_save_player确保同时保存到Redis和MariaDB
@@ -1712,7 +1712,7 @@ class XiuxianPlugin(MessagePluginInterface):
player["clan_id"] = int(clan_id)
if self.xdb:
try:
self.xdb.update_player_fields(sender, {"clan_id": player["clan_id"]})
self.xdb.update_player_fields(sender, player.get("group_id", ""), {"clan_id": player["clan_id"]})
self.redis_db.invalidate_player(sender, player.get("group_id", ""))
except Exception:
pass
@@ -1747,7 +1747,7 @@ class XiuxianPlugin(MessagePluginInterface):
player["clan_id"] = int(cid) if isinstance(cid, str) else cid
if self.xdb:
try:
self.xdb.update_player_fields(sender, {"clan_id": player["clan_id"]})
self.xdb.update_player_fields(sender, player.get("group_id", ""), {"clan_id": player["clan_id"]})
self.redis_db.invalidate_player(sender, player.get("group_id", ""))
except Exception:
pass
@@ -1768,7 +1768,7 @@ class XiuxianPlugin(MessagePluginInterface):
player["clan_id"] = None
if self.xdb:
try:
self.xdb.update_player_fields(sender, {"clan_id": None})
self.xdb.update_player_fields(sender, player.get("group_id", ""), {"clan_id": None})
self.redis_db.invalidate_player(sender, player.get("group_id", ""))
except Exception:
pass