feat(bot): ✨ Create p.leaderboard command.
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
from tortoise import BaseDBAsyncClient
|
||||
|
||||
|
||||
async def upgrade(db: BaseDBAsyncClient) -> str:
|
||||
return """
|
||||
ALTER TABLE "calluserchannelrelationship" ADD "created_at" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP;
|
||||
ALTER TABLE "user" ADD "leaderboard_position" INT;
|
||||
CREATE INDEX "idx_callusercha_created_e72939" ON "calluserchannelrelationship" ("created_at");
|
||||
CREATE INDEX "idx_user_leaderb_1dcee5" ON "user" ("leaderboard_position");"""
|
||||
|
||||
|
||||
async def downgrade(db: BaseDBAsyncClient) -> str:
|
||||
return """
|
||||
DROP INDEX "idx_callusercha_created_e72939";
|
||||
DROP INDEX "idx_user_leaderb_1dcee5";
|
||||
ALTER TABLE "user" DROP COLUMN "leaderboard_position";
|
||||
ALTER TABLE "calluserchannelrelationship" DROP COLUMN "created_at";"""
|
||||
@@ -0,0 +1,11 @@
|
||||
from tortoise import BaseDBAsyncClient
|
||||
|
||||
|
||||
async def upgrade(db: BaseDBAsyncClient) -> str:
|
||||
return """
|
||||
ALTER TABLE "user" ADD "joined_at" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP;"""
|
||||
|
||||
|
||||
async def downgrade(db: BaseDBAsyncClient) -> str:
|
||||
return """
|
||||
ALTER TABLE "user" DROP COLUMN "joined_at";"""
|
||||
@@ -18,6 +18,10 @@ class User(models.Model):
|
||||
is_moderator: bool = fields.BooleanField(default=False)
|
||||
profiles: fields.BackwardFKRelation["Profile"]
|
||||
call_rss: fields.BackwardFKRelation["CallUserChannelRelationship"]
|
||||
leaderboard_position: int | None = fields.IntField(
|
||||
default=None, null=True, db_index=True
|
||||
)
|
||||
joined_at: datetime = fields.DatetimeField(auto_now_add=True)
|
||||
|
||||
|
||||
class Call(models.Model):
|
||||
@@ -130,6 +134,7 @@ class CallUserChannelRelationship(models.Model):
|
||||
)
|
||||
is_masked: bool = fields.BooleanField()
|
||||
mask: int = fields.BigIntField()
|
||||
created_at: datetime = fields.DatetimeField(auto_now_add=True, db_index=True)
|
||||
|
||||
@property
|
||||
def mask_name(self) -> str:
|
||||
|
||||
+4
-12
@@ -5,9 +5,7 @@ import discord
|
||||
from payphone.db import models
|
||||
|
||||
|
||||
async def get_channel(
|
||||
channel: discord.TextChannel, for_update: bool = False
|
||||
) -> models.Channel:
|
||||
async def get_channel(channel: discord.TextChannel, for_update: bool = False) -> models.Channel:
|
||||
"""Returns a channel from the database, creating or updating it if it already exists.
|
||||
|
||||
Args:
|
||||
@@ -18,15 +16,9 @@ async def get_channel(
|
||||
models.Channel: The channel row.
|
||||
"""
|
||||
|
||||
model = models.Channel
|
||||
|
||||
if for_update:
|
||||
model = model.select_for_update()
|
||||
|
||||
row = await model.get_or_none(id=channel.id)
|
||||
|
||||
if row is None:
|
||||
row = await models.Channel.create(id=channel.id, server_id=channel.guild.id)
|
||||
row, _ = await models.Channel.update_or_create(
|
||||
id=channel.id, server=channel.guild.id
|
||||
)
|
||||
|
||||
channel_name = channel.name.replace("discord", "d").replace("wumpus", "w")
|
||||
webhook_name = f"Payphone #{channel_name}"
|
||||
|
||||
Reference in New Issue
Block a user