feat(bot): ✨ Update p.leaderboard command to show calls.
This commit is contained in:
@@ -55,8 +55,9 @@ class Users(base.Cog):
|
||||
|
||||
user_counts.sort(key=lambda i: i[1])
|
||||
|
||||
for i, user_id in enumerate(user_counts):
|
||||
users_map[user_id[0]].leaderboard_position = i + 1
|
||||
for i, user_map in enumerate(user_counts):
|
||||
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)
|
||||
|
||||
@@ -393,7 +394,11 @@ class Users(base.Cog):
|
||||
)
|
||||
|
||||
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)
|
||||
]
|
||||
|
||||
@@ -401,14 +406,20 @@ class Users(base.Cog):
|
||||
user, profile = await utils.get_user(ctx.author)
|
||||
|
||||
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)
|
||||
|
||||
embed = discord.Embed(
|
||||
color=constants.EMBED_COLOR,
|
||||
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,
|
||||
footer=discord.EmbedFooter(
|
||||
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";"""
|
||||
@@ -21,6 +21,9 @@ class User(models.Model):
|
||||
leaderboard_position: int | None = fields.IntField(
|
||||
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)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user