群级别用户维护
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user