优化排行榜

This commit is contained in:
liuwei
2025-11-25 11:35:46 +08:00
parent 28d282619e
commit b39b4ea732

View File

@@ -913,18 +913,24 @@ class XiuxianPlugin(MessagePluginInterface):
return True, "聚灵成功" return True, "聚灵成功"
async def _cmd_leaderboard(self, bot: WechatAPIClient, sender: str, roomid: str) -> Tuple[bool, str]: async def _cmd_leaderboard(self, bot: WechatAPIClient, sender: str, roomid: str) -> Tuple[bool, str]:
top = self.redis_db.leaderboard_top(10) top = self.redis_db.leaderboard_top(50)
lines = ["🏆 修为排行榜 Top10"] items = []
rank = 1
for uid, score in top: for uid, score in top:
player = self._get_player_with_cache(uid, roomid or "") player = self._get_player_with_cache(uid, roomid or "")
cp = int(player.get("cultivation_points", int(score))) if player else int(score) if not player:
nick = (player.get("dao_name") if player else None) or uid continue
mark = "" if uid == sender else "" cp = int(player.get("cultivation_points", int(score)))
lines.append(f"{rank}. {nick} - 修为 {cp} {mark}") realm = player.get("realm", "炼气1层")
rank += 1 rscore = self._realm_score(realm)
client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender), root = player.get("spirit_root", "凡灵根")
"\n".join(lines), sender) nick = player.get("dao_name")
items.append((uid, nick or uid, root, realm, cp, rscore))
# 排序:先按境界分值降序,再按修为降序
items.sort(key=lambda x: (x[5], x[4]), reverse=True)
lines = ["🏆 修仙榜 Top10"]
for i, (_, nick, root, realm, cp, _) in enumerate(items[:10], start=1):
lines.append(f"{i}. {nick}[{root}]-{realm}[{cp}]")
await self._send_text_with_status(bot, sender, roomid, "\n".join(lines), 10)
self._rate_set(sender, roomid or "", "排行榜") self._rate_set(sender, roomid or "", "排行榜")
return True, "排行榜" return True, "排行榜"