feat(bot): ✨ Update p.leaderboard command to show calls.

This commit is contained in:
Nyeki.py
2024-10-18 03:22:05 -03:00
parent c08a40c45f
commit 6cd56b1870
3 changed files with 30 additions and 5 deletions
+16 -5
View File
@@ -55,8 +55,9 @@ class Users(base.Cog):
user_counts.sort(key=lambda i: i[1]) user_counts.sort(key=lambda i: i[1])
for i, user_id in enumerate(user_counts): for i, user_map in enumerate(user_counts):
users_map[user_id[0]].leaderboard_position = i + 1 users_map[user_map[0]].leaderboard_position = i + 1
users_map[user_map[0]].leaderboard_calls_count = user_map[1]
await models.User.bulk_update(users_map.values(), ["leaderboard_position"], 500) await models.User.bulk_update(users_map.values(), ["leaderboard_position"], 500)
@@ -393,7 +394,11 @@ class Users(base.Cog):
) )
rows = [ rows = [
[f"#{pos + 1}", fmt.trim(user.profiles[0].name, 10)] [
f"#{pos + 1}",
fmt.trim(user.profiles[0].name, 10),
f"{user.leaderboard_calls_count if user.leaderboard_calls_count is not None else "?"} call{"s" if user.leaderboard_calls_count != 1 else ""}",
]
for pos, user in enumerate(top_users) for pos, user in enumerate(top_users)
] ]
@@ -401,14 +406,20 @@ class Users(base.Cog):
user, profile = await utils.get_user(ctx.author) user, profile = await utils.get_user(ctx.author)
if user.leaderboard_position is not None: if user.leaderboard_position is not None:
rows.append([f"#{user.leaderboard_position}", fmt.trim(profile.name, 10)]) rows.append(
[
f"#{user.leaderboard_position}",
fmt.trim(profile.name, 10),
f"{user.leaderboard_calls_count if user.leaderboard_calls_count is not None else "?"} call{"s" if user.leaderboard_calls_count != 1 else ""}",
]
)
table = fmt.monospace_table(rows) table = fmt.monospace_table(rows)
embed = discord.Embed( embed = discord.Embed(
color=constants.EMBED_COLOR, color=constants.EMBED_COLOR,
title=f"Monthly Leaderboard ({datetime.now(timezone.utc).strftime("%B")})", title=f"Monthly Leaderboard ({datetime.now(timezone.utc).strftime("%B")})",
description=f"```\n{table}\n```", description=f"```\n{table if len(rows) > 0 else "Come back in 15 minutes!"}\n```",
author=self.bot.embed_author, author=self.bot.embed_author,
footer=discord.EmbedFooter( footer=discord.EmbedFooter(
text="The leaderboard is updated every 15 minutes." text="The leaderboard is updated every 15 minutes."
@@ -0,0 +1,11 @@
from tortoise import BaseDBAsyncClient
async def upgrade(db: BaseDBAsyncClient) -> str:
return """
ALTER TABLE "user" ADD "leaderboard_calls_count" INT;"""
async def downgrade(db: BaseDBAsyncClient) -> str:
return """
ALTER TABLE "user" DROP COLUMN "leaderboard_calls_count";"""
+3
View File
@@ -21,6 +21,9 @@ class User(models.Model):
leaderboard_position: int | None = fields.IntField( leaderboard_position: int | None = fields.IntField(
default=None, null=True, db_index=True default=None, null=True, db_index=True
) )
leaderboard_calls_count: int | None = fields.IntField(
default=None, null=True
)
joined_at: datetime = fields.DatetimeField(auto_now_add=True) joined_at: datetime = fields.DatetimeField(auto_now_add=True)