aboutsummaryrefslogtreecommitdiff
path: root/minecrafttrivia/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'minecrafttrivia/utils.py')
-rw-r--r--minecrafttrivia/utils.py27
1 files changed, 19 insertions, 8 deletions
diff --git a/minecrafttrivia/utils.py b/minecrafttrivia/utils.py
index de80da0..8bb4730 100644
--- a/minecrafttrivia/utils.py
+++ b/minecrafttrivia/utils.py
@@ -6,11 +6,22 @@ from . import constants
async def get_participants(reactions: typing.List[discord.Reaction]) -> typing.List[discord.User]:
- for r in reactions:
- if r.emoji == constants.POSITIVE_REACTION:
- users = []
- async for u in r.users():
- if not u.bot:
- users.append(u)
- return users
- return []
+ for r in reactions:
+ if r.emoji == constants.POSITIVE_REACTION:
+ users = []
+ async for u in r.users():
+ if not u.bot:
+ users.append(u)
+ return users
+ return []
+
+
+def format_leaderboard(points: typing.List[typing.Tuple[int, typing.Tuple[typing.Union[discord.User, int], int]]]) -> str:
+ return "\n".join(f"**{rank + 1}.** {user.mention if hasattr(user, 'mention') else '<@' + str(user) + '>'} - {points}" for rank, (user, points) in points)
+
+
+_T = typing.TypeVar("_T", discord.User, int)
+
+
+def create_leaderboard(points: typing.Dict[_T, int]) -> typing.List[typing.Tuple[int, typing.Tuple[_T, int]]]:
+ return list(enumerate(reversed(sorted(points.items(), key=lambda x: x[1]))))