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])
|
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";"""
|
||||||
@@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user