优化排行榜
This commit is contained in:
@@ -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, "排行榜"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user