优化排行榜

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, "聚灵成功"
async def _cmd_leaderboard(self, bot: WechatAPIClient, sender: str, roomid: str) -> Tuple[bool, str]:
top = self.redis_db.leaderboard_top(10)
lines = ["🏆 修为排行榜 Top10"]
rank = 1
top = self.redis_db.leaderboard_top(50)
items = []
for uid, score in top:
player = self._get_player_with_cache(uid, roomid or "")
cp = int(player.get("cultivation_points", int(score))) if player else int(score)
nick = (player.get("dao_name") if player else None) or uid
mark = "" if uid == sender else ""
lines.append(f"{rank}. {nick} - 修为 {cp} {mark}")
rank += 1
client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender),
"\n".join(lines), sender)
if not player:
continue
cp = int(player.get("cultivation_points", int(score)))
realm = player.get("realm", "炼气1层")
rscore = self._realm_score(realm)
root = player.get("spirit_root", "凡灵根")
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 "", "排行榜")
return True, "排行榜"