mirror of https://github.com/stijndcl/didier
Rework last leaderboards
parent
062d54722b
commit
ca687956f6
|
@ -39,7 +39,7 @@ class Leaderboards(commands.Cog):
|
||||||
if ignore_non_pos and entry_data <= 0:
|
if ignore_non_pos and entry_data <= 0:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
data.append((key_f(v), f"{entry_data:,}",))
|
data.append((key_f(v), f"{entry_data:,}", entry_data,))
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
@ -144,60 +144,50 @@ class Leaderboards(commands.Cog):
|
||||||
|
|
||||||
@leaderboard.command(name="Xp", aliases=["Level"], hidden=True)
|
@leaderboard.command(name="Xp", aliases=["Level"], hidden=True)
|
||||||
async def xp(self, ctx):
|
async def xp(self, ctx):
|
||||||
s = stats.getAllRows()
|
entries = stats.getAllRows()
|
||||||
boardTop = []
|
data = self._generate_embed_data(entries, data_f=lambda x: round(int(x[12])))
|
||||||
for i, user in enumerate(sorted(s, key=lambda x: x[12], reverse=True)):
|
|
||||||
if int(user[12]) == 0:
|
|
||||||
break
|
|
||||||
|
|
||||||
name = self.utilsCog.getDisplayName(ctx, user[0])
|
def _format_entry(entry: int) -> str:
|
||||||
if int(user[0]) == int(ctx.author.id):
|
return f"Level {xp.calculate_level(entry):,} | {entry:,} XP"
|
||||||
boardTop.append("**{} (Level {:,} | {:,} XP)**".format(name,
|
|
||||||
xp.calculate_level(round(int(user[12]))),
|
lb = paginated_leaderboard.Leaderboard(
|
||||||
round(int(user[12]))))
|
ctx=ctx, title="XP Leaderboard", data=data, fetch_names=True, format_f=_format_entry
|
||||||
else:
|
)
|
||||||
boardTop.append("{} (Level {:,} | {:,} XP)".format(name,
|
|
||||||
xp.calculate_level(round(int(user[12]))),
|
await lb.send(ctx)
|
||||||
round(int(user[12]))))
|
|
||||||
await self.startPaginated(ctx, boardTop, "XP Leaderboard")
|
|
||||||
|
|
||||||
@leaderboard.command(name="Messages", aliases=["Mc", "Mess"], hidden=True)
|
@leaderboard.command(name="Messages", aliases=["Mc", "Mess"], hidden=True)
|
||||||
async def messages(self, ctx):
|
async def messages(self, ctx):
|
||||||
s = stats.getAllRows()
|
entries = stats.getAllRows()
|
||||||
boardTop = []
|
|
||||||
|
|
||||||
message_count = stats.getTotalMessageCount()
|
message_count = stats.getTotalMessageCount()
|
||||||
|
|
||||||
for i, user in enumerate(sorted(s, key=lambda x: x[11], reverse=True)):
|
data = self._generate_embed_data(entries, data_f=lambda x: round(int(x[11])))
|
||||||
if int(user[11]) == 0:
|
|
||||||
break
|
|
||||||
|
|
||||||
perc = round(int(user[11]) * 100 / message_count, 2)
|
def _format_entry(entry: int) -> str:
|
||||||
|
perc = round(entry * 100 / message_count, 2)
|
||||||
|
return f"{entry:,} | {perc}%"
|
||||||
|
|
||||||
name = self.utilsCog.getDisplayName(ctx, user[0])
|
lb = paginated_leaderboard.Leaderboard(
|
||||||
if int(user[0]) == int(ctx.author.id):
|
ctx=ctx, title="Messages Leaderboard", data=data, fetch_names=True, format_f=_format_entry
|
||||||
boardTop.append("**{} ({:,} | {}%)**".format(name, round(int(user[11])), perc))
|
)
|
||||||
else:
|
|
||||||
boardTop.append("{} ({:,} | {}%)".format(name, round(int(user[11])), perc))
|
await lb.send(ctx)
|
||||||
await self.startPaginated(ctx, boardTop, "Messages Leaderboard")
|
|
||||||
|
|
||||||
@leaderboard.command(name="Muttn", aliases=["M", "Mutn", "Mutten"], hidden=True)
|
@leaderboard.command(name="Muttn", aliases=["M", "Mutn", "Mutten"], hidden=True)
|
||||||
async def muttn(self, ctx):
|
async def muttn(self, ctx):
|
||||||
users = muttn.getAllRows()
|
entries = muttn.getAllRows()
|
||||||
boardTop = []
|
data = self._generate_embed_data(entries, data_f=lambda x: round(float(x[1]), 2))
|
||||||
for i, user in enumerate(sorted(users, key=lambda x: x[1], reverse=True)):
|
if data is None:
|
||||||
if i == 0 and int(user[1]) == 0:
|
return await self.empty_leaderboard(ctx, "Muttn Leaderboard", "Der zittn nog geen muttns in de server.")
|
||||||
return await self.empty_leaderboard(ctx, "Muttn Leaderboard", "Der zittn nog geen muttns in de server.")
|
|
||||||
|
|
||||||
if float(user[1]) == 0:
|
def _format_entry(entry: float) -> str:
|
||||||
break
|
return f"{entry}%"
|
||||||
|
|
||||||
name = self.utilsCog.getDisplayName(ctx, user[0])
|
lb = paginated_leaderboard.Leaderboard(
|
||||||
if int(user[0]) == int(ctx.author.id):
|
ctx=ctx, title="Muttn Leaderboard", data=data, fetch_names=True, format_f=_format_entry
|
||||||
boardTop.append("**{} ({})%**".format(name, round(float(user[1]), 2)))
|
)
|
||||||
else:
|
|
||||||
boardTop.append("{} ({}%)".format(name, round(float(user[1]), 2)))
|
await lb.send(ctx)
|
||||||
await self.startPaginated(ctx, boardTop, "Muttn Leaderboard")
|
|
||||||
|
|
||||||
async def callLeaderboard(self, name, ctx):
|
async def callLeaderboard(self, name, ctx):
|
||||||
command = [command for command in self.leaderboard.commands if command.name.lower() == name.lower()][0]
|
command = [command for command in self.leaderboard.commands if command.name.lower() == name.lower()][0]
|
||||||
|
|
|
@ -21,10 +21,6 @@ class Leaderboard:
|
||||||
colour: discord.Colour = discord.Colour.blue()
|
colour: discord.Colour = discord.Colour.blue()
|
||||||
fetch_names: bool = False
|
fetch_names: bool = False
|
||||||
|
|
||||||
def __post_init__(self):
|
|
||||||
if self.format_f is None:
|
|
||||||
self .format_f = lambda x: x
|
|
||||||
|
|
||||||
def _should_highlight(self, data) -> bool:
|
def _should_highlight(self, data) -> bool:
|
||||||
"""Check if an entry should be highlighted"""
|
"""Check if an entry should be highlighted"""
|
||||||
if self.fetch_names:
|
if self.fetch_names:
|
||||||
|
@ -38,7 +34,9 @@ class Leaderboard:
|
||||||
if self.fetch_names:
|
if self.fetch_names:
|
||||||
name = get_display_name(self.ctx, int(data[0]))
|
name = get_display_name(self.ctx, int(data[0]))
|
||||||
|
|
||||||
s = f"{index + 1}: {name} ({self.format_f(data[1])})"
|
formatted_data = self.format_f(data[2]) if self.format_f is not None else data[1]
|
||||||
|
|
||||||
|
s = f"{index + 1}: {name} ({formatted_data})"
|
||||||
|
|
||||||
return s
|
return s
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue