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