jarvis-core/jarvis_core/db/models/actions.py

76 lines
2.6 KiB
Python

"""User action models."""
from datetime import datetime, timezone
from umongo import Document, fields
from jarvis_core.db import JARVIS_INST
def get_now() -> datetime:
"""Get proper timestamp."""
return datetime.now(tz=timezone.utc)
@JARVIS_INST.register
class Ban(Document):
active: bool = fields.BooleanField(default=True)
admin: int = fields.IntegerField(required=True)
user: int = fields.IntegerField(required=True)
username: str = fields.StringField(required=True)
discrim: int = fields.IntegerField(required=True)
duration: int = fields.IntegerField(required=False, default=None)
guild: int = fields.IntegerField(required=True)
type: str = fields.StringField(default="perm")
reason: str = fields.StringField(required=True)
created_at: datetime = fields.DateTimeField(default=get_now)
@JARVIS_INST.register
class Kick(Document):
"""Kick database object."""
admin: int = fields.IntegerField(required=True)
guild: int = fields.IntegerField(required=True)
reason: str = fields.StringField(required=True)
user: int = fields.IntegerField(required=True)
created_at: datetime = fields.DateTimeField(default=get_now)
@JARVIS_INST.register
class Mute(Document):
"""Mute database object."""
active: bool = fields.BooleanField(default=True)
user: int = fields.IntegerField(required=True)
admin: int = fields.IntegerField(required=True)
duration: int = fields.IntegerField(default=10)
guild: int = fields.IntegerField(required=True)
reason: str = fields.StringField(required=True)
created_at: datetime = fields.DateTimeField(default=get_now)
@JARVIS_INST.register
class Unban(Document):
"""Unban database object."""
user: int = fields.IntegerField(required=True)
username: str = fields.StringField(required=True)
discrim: int = fields.IntegerField(required=True)
guild: int = fields.IntegerField(required=True)
admin: int = fields.IntegerField(required=True)
reason: str = fields.StringField(required=True)
created_at: datetime = fields.DateTimeField(default=get_now)
@JARVIS_INST.register
class Warning(Document):
"""Warning database object."""
active: bool = fields.BooleanField(default=True)
admin: int = fields.IntegerField(required=True)
user: int = fields.IntegerField(required=True)
guild: int = fields.IntegerField(required=True)
duration: int = fields.IntegerField(default=24)
reason: str = fields.StringField(required=True)
expires_at: datetime = fields.DateTimeField(required=True)
created_at: datetime = fields.DateTimeField(default=get_now)