|
1 | | -from core import report, Server, Side, get_translation |
| 1 | +import discord |
| 2 | + |
| 3 | +from core import report, Server, Side, get_translation, utils |
2 | 4 | from datetime import datetime |
3 | 5 |
|
4 | 6 | from .const import PRETENSE_RANKS |
@@ -89,10 +91,23 @@ async def render(self, data: dict): |
89 | 91 | xp = '' |
90 | 92 | ranks = '' |
91 | 93 | for rank, (player, score) in enumerate(sorted_players[:10], start=1): |
92 | | - names += f'{player}\n' |
| 94 | + names += f'{await self._player_name(player)}\n' |
93 | 95 | xp += f'{score:>5}\n' |
94 | 96 | ranks += f'{self.get_rank(score)}\n' |
95 | 97 | if names: |
96 | 98 | self.embed.add_field(name=_('Name'), value=names) |
97 | 99 | self.embed.add_field(name=_('XP'), value=xp) |
98 | 100 | self.embed.add_field(name=_('Rank'), value=ranks) |
| 101 | + |
| 102 | + async def _player_name(self, player: str) -> str: |
| 103 | + # if `player` is a UCID, try to mention their discord username |
| 104 | + # if we can't mention them but can find their name, use that |
| 105 | + # else fallback to the raw player name/UCID |
| 106 | + if utils.is_ucid(player): |
| 107 | + name = await self.bot.get_member_or_name_by_ucid(player) |
| 108 | + if isinstance(name, discord.Member): |
| 109 | + return name.mention |
| 110 | + elif name is not None: |
| 111 | + return name |
| 112 | + |
| 113 | + return player |
0 commit comments