feat(bot): ✨ Add server's vanity invite in leaderboard.

This commit is contained in:
Nyeki.py
2024-10-19 00:45:53 -03:00
parent 4e040ca8ad
commit b06db39074
4 changed files with 31 additions and 6 deletions
+18 -5
View File
@@ -61,20 +61,25 @@ class Admin(base.Cog):
for server_map in server_counts[:10]: for server_map in server_counts[:10]:
if servers_map[server_map[0]].name is None: if servers_map[server_map[0]].name is None:
try: try:
servers_map[server_map[0]].name = ( guild = await self.bot.fetch_guild(server_map[0])
await self.bot.fetch_guild(server_map[0])
).name
except errors.DiscordException: except errors.DiscordException:
pass pass
servers_map[server_map[0]].name = guild.name
vanity = await guild.vanity_invite()
if vanity is not None:
servers_map[server_map[0]].vanity_code = vanity.code
for i, server_map in enumerate(server_counts): for i, server_map in enumerate(server_counts):
servers_map[server_map[0]].leaderboard_position = i + 1 servers_map[server_map[0]].leaderboard_position = i + 1
servers_map[server_map[0]].leaderboard_calls_count = server_map[1] servers_map[server_map[0]].leaderboard_calls_count = server_map[1]
await models.Server.bulk_update( await models.Server.bulk_update(
servers_map.values(), servers_map.values(),
["name", "leaderboard_position", "leaderboard_calls_count"], ["name", "vanity_code", "leaderboard_position", "leaderboard_calls_count"],
500, 500,
) )
@@ -89,7 +94,15 @@ class Admin(base.Cog):
after (discord.Guild): The server after it being updated. after (discord.Guild): The server after it being updated.
""" """
await models.Server.update_or_create({"name": after.name}, id=after.id) vanity = await after.vanity_invite()
vanity_code = None
if vanity is not None:
vanity_code = vanity.code
await models.Server.update_or_create(
{"name": after.name, "vanity_code": vanity_code}, id=after.id
)
@commands.group(invoke_without_command=True) @commands.group(invoke_without_command=True)
@commands.guild_only() @commands.guild_only()
+1 -1
View File
@@ -512,7 +512,7 @@ class Users(base.Cog):
.limit(10) .limit(10)
) )
server_rows = [ server_rows = [
f"**#{pos + 1} - {server.name or "Updating..."}**{" (Here!)" if ctx.guild is not None and server.id == ctx.guild.id else ""}\nParticipated in {server.leaderboard_calls_count} calls." f"**#{pos + 1} - {server.name or "Updating..."}{f" .gg/{server.vanity_code}" if server.vanity_code else ""}**{" (Here!)" if ctx.guild is not None and server.id == ctx.guild.id else ""}\nParticipated in {server.leaderboard_calls_count} calls."
for pos, server in enumerate(top_servers) for pos, server in enumerate(top_servers)
] ]
@@ -0,0 +1,11 @@
from tortoise import BaseDBAsyncClient
async def upgrade(db: BaseDBAsyncClient) -> str:
return """
ALTER TABLE "server" ADD "vanity_code" VARCHAR(32);"""
async def downgrade(db: BaseDBAsyncClient) -> str:
return """
ALTER TABLE "server" DROP COLUMN "vanity_code";"""
+1
View File
@@ -93,6 +93,7 @@ class Server(models.Model):
prefix: str = fields.CharField(max_length=5, default="p.") prefix: str = fields.CharField(max_length=5, default="p.")
leaderboard_position: int = fields.IntField(default=0, db_index=True) leaderboard_position: int = fields.IntField(default=0, db_index=True)
leaderboard_calls_count: int = fields.IntField(default=0) leaderboard_calls_count: int = fields.IntField(default=0)
vanity_code: str = fields.CharField(max_length=32, null=True, default=None)
channels: fields.BackwardFKRelation["Channel"] channels: fields.BackwardFKRelation["Channel"]
profiles: fields.BackwardFKRelation["Profile"] profiles: fields.BackwardFKRelation["Profile"]