feat(bot):

This commit is contained in:
Nyeki.py
2024-10-17 01:11:37 -03:00
parent 5011ab5f90
commit c745df0a9d
19 changed files with 1273 additions and 439 deletions
+44 -2
View File
@@ -27,12 +27,14 @@ class Call(models.Model):
channels: fields.BackwardFKRelation["Channel"]
call_rss: fields.BackwardFKRelation["CallUserChannelRelationship"]
report: fields.BackwardOneToOneRelation["Report"]
messages: fields.BackwardFKRelation["Message"]
class Profile(models.Model):
user: fields.ForeignKeyRelation["User"] = fields.ForeignKeyField(
"models.User", related_name="profiles", on_delete=fields.OnDelete.CASCADE
)
user_id: int
server: fields.ForeignKeyNullableRelation["Server"] = fields.ForeignKeyField(
"models.Server",
related_name="profiles",
@@ -45,6 +47,26 @@ class Profile(models.Model):
call_rss: fields.BackwardFKRelation["CallUserChannelRelationship"]
@property
def jump_url(self) -> str:
"""The URL that'll open the user in Discord.
Returns:
str: The URL.
"""
return f"discord://-/users/{self.user_id}"
@property
def link(self) -> str:
"""A markdown link that opens the user in Discord.
Returns:
str: The markdown link.
"""
return f"[{self.name}]({self.jump_url})"
class Meta:
unique_together = [("user_id", "server_id")]
@@ -172,7 +194,8 @@ class Message(models.Model):
"models.Channel", related_name="messages", on_delete=fields.OnDelete.CASCADE
)
user = fields.ForeignKeyRelation("models.User", on_delete=fields.OnDelete.CASCADE)
profile = fields.ForeignKeyField(
user_id: int
profile: fields.ForeignKeyRelation["Profile"] = fields.ForeignKeyField(
"models.Profile", on_delete=fields.OnDelete.CASCADE
)
replying_to: fields.ForeignKeyNullableRelation["Message"] = fields.ForeignKeyField(
@@ -243,6 +266,25 @@ class Message(models.Model):
return f"<:{mask_name}:{self.mask}>"
def jump_url(self, is_this_channel: bool = True) -> str | None:
"""Returns the jump URL for this message.
Args:
is_this_channel (bool, optional): Whether the message sent in this channel or not.
Defaults to True.
Returns:
str | None: The URL, or None if the message was not propagated.
"""
if not is_this_channel:
return f"https://discord.com/channels/{self.channel.server_id}/{self.channel.id}/{self.id}"
if self.propagation_id is not None:
return f"https://discord.com/channels/{self.propagation_channel.server_id}/{self.propagation_channel.id}/{self.propagation_id}"
return None
class MessageContent(models.Model):
message = fields.ForeignKeyField(
@@ -269,7 +311,7 @@ class Report(models.Model):
reason: str = fields.CharField(max_length=500)
priority: int = fields.IntField()
status: ReportStatus = fields.IntEnumField(
ReportStatus, default=ReportStatus.ON_REVIEW
ReportStatus, default=ReportStatus.ON_REVIEW, db_index=True
)
created_at: datetime = fields.DatetimeField(auto_now_add=True)