feat(bot): ✨ Add servers leaderboard.
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
from tortoise import BaseDBAsyncClient
|
||||
|
||||
|
||||
async def upgrade(db: BaseDBAsyncClient) -> str:
|
||||
return """
|
||||
ALTER TABLE "server" ADD "leaderboard_calls_count" INT NOT NULL DEFAULT 0;
|
||||
ALTER TABLE "server" ADD "leaderboard_position" INT NOT NULL DEFAULT 0;
|
||||
CREATE INDEX "idx_server_leaderb_47c354" ON "server" ("leaderboard_position");"""
|
||||
|
||||
|
||||
async def downgrade(db: BaseDBAsyncClient) -> str:
|
||||
return """
|
||||
DROP INDEX "idx_server_leaderb_47c354";
|
||||
ALTER TABLE "server" DROP COLUMN "leaderboard_calls_count";
|
||||
ALTER TABLE "server" DROP COLUMN "leaderboard_position";"""
|
||||
@@ -0,0 +1,11 @@
|
||||
from tortoise import BaseDBAsyncClient
|
||||
|
||||
|
||||
async def upgrade(db: BaseDBAsyncClient) -> str:
|
||||
return """
|
||||
ALTER TABLE "server" ADD "name" VARCHAR(100);"""
|
||||
|
||||
|
||||
async def downgrade(db: BaseDBAsyncClient) -> str:
|
||||
return """
|
||||
ALTER TABLE "server" DROP COLUMN "name";"""
|
||||
@@ -4,6 +4,7 @@ import enum
|
||||
|
||||
from tortoise import models, fields
|
||||
|
||||
import discord
|
||||
from discord import webhook
|
||||
|
||||
import aiohttp
|
||||
@@ -72,13 +73,26 @@ class Profile(models.Model):
|
||||
|
||||
return f"[{self.name}]({self.jump_url})"
|
||||
|
||||
@property
|
||||
def embed_author(self) -> discord.EmbedAuthor:
|
||||
"""Returns this profile as an EmbedAuthor object.
|
||||
|
||||
Returns:
|
||||
discord.EmbedAuthor: The EmbedAuthor object.
|
||||
"""
|
||||
|
||||
return discord.EmbedAuthor(name=self.name, icon_url=self.avatar_url)
|
||||
|
||||
class Meta:
|
||||
unique_together = [("user_id", "server_id")]
|
||||
|
||||
|
||||
class Server(models.Model):
|
||||
id: int = fields.BigIntField(primary_key=True)
|
||||
name: str = fields.CharField(max_length=100, null=True, default=None)
|
||||
prefix: str = fields.CharField(max_length=5, default="p.")
|
||||
leaderboard_position: int = fields.IntField(default=0, db_index=True)
|
||||
leaderboard_calls_count: int = fields.IntField(default=0)
|
||||
channels: fields.BackwardFKRelation["Channel"]
|
||||
profiles: fields.BackwardFKRelation["Profile"]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user