diff --git a/payphone/core/converters.py b/payphone/core/converters.py index cf6ba66..6ac25fc 100644 --- a/payphone/core/converters.py +++ b/payphone/core/converters.py @@ -55,6 +55,11 @@ class DiscordUserID(converter.Converter): ): return int(argument.split("?", 1)[0].rsplit("/", 1)[1]) + user = await models.User.get_or_none(username=argument) + + if user is not None: + return user.id + if argument.lower() in ["reply", "."]: if ctx.message.reference is not None: ref = ctx.message.reference @@ -73,7 +78,6 @@ class DiscordUserID(converter.Converter): raise converter.BadArgument() - else: - return msg.author.id + return msg.author.id raise converter.BadArgument() diff --git a/payphone/db/migrations/models/8_20241018132301_update.py b/payphone/db/migrations/models/8_20241018132301_update.py new file mode 100644 index 0000000..8509a17 --- /dev/null +++ b/payphone/db/migrations/models/8_20241018132301_update.py @@ -0,0 +1,11 @@ +from tortoise import BaseDBAsyncClient + + +async def upgrade(db: BaseDBAsyncClient) -> str: + return """ + CREATE INDEX "idx_user_usernam_9987ab" ON "user" ("username");""" + + +async def downgrade(db: BaseDBAsyncClient) -> str: + return """ + DROP INDEX "idx_user_usernam_9987ab";""" diff --git a/payphone/db/models.py b/payphone/db/models.py index 917d935..99eecc7 100644 --- a/payphone/db/models.py +++ b/payphone/db/models.py @@ -13,7 +13,7 @@ from payphone.core import config, constants class User(models.Model): id: int = fields.BigIntField(primary_key=True) - username: str = fields.CharField(max_length=32) + username: str = fields.CharField(max_length=32, db_index=True) is_masked: bool = fields.BooleanField(default=False) is_moderator: bool = fields.BooleanField(default=False) profiles: fields.BackwardFKRelation["Profile"] @@ -21,9 +21,7 @@ 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 - ) + leaderboard_calls_count: int | None = fields.IntField(default=None, null=True) joined_at: datetime = fields.DatetimeField(auto_now_add=True)