feat: Add VoteMod, ref jarvis-bot#178
This commit is contained in:
parent
2521b7d6c9
commit
515cf96208
2 changed files with 303 additions and 270 deletions
|
@ -1,270 +1,277 @@
|
||||||
"""JARVIS database models."""
|
"""JARVIS database models."""
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from beanie import Document, Link
|
from beanie import Document, Link
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
from jarvis_core.db.models.actions import Ban, Kick, Mute, Unban, Warning
|
from jarvis_core.db.models.actions import Ban, Kick, Mute, Unban, Warning
|
||||||
from jarvis_core.db.models.modlog import Action, Modlog, Note
|
from jarvis_core.db.models.modlog import Action, Modlog, Note
|
||||||
from jarvis_core.db.models.reddit import Subreddit, SubredditFollow
|
from jarvis_core.db.models.reddit import Subreddit, SubredditFollow
|
||||||
from jarvis_core.db.models.twitter import TwitterAccount, TwitterFollow
|
from jarvis_core.db.models.twitter import TwitterAccount, TwitterFollow
|
||||||
from jarvis_core.db.utils import NowField
|
from jarvis_core.db.models.votemod import Karma, Vote, VoteMod
|
||||||
|
from jarvis_core.db.utils import NowField
|
||||||
__all__ = [
|
|
||||||
"Action",
|
__all__ = [
|
||||||
"Autopurge",
|
"Action",
|
||||||
"Autoreact",
|
"Autopurge",
|
||||||
"Ban",
|
"Autoreact",
|
||||||
"Config",
|
"Ban",
|
||||||
"Filter",
|
"Config",
|
||||||
"Guess",
|
"Filter",
|
||||||
"Kick",
|
"Guess",
|
||||||
"Lock",
|
"Kick",
|
||||||
"Lockdown",
|
"Lock",
|
||||||
"Modlog",
|
"Lockdown",
|
||||||
"Mute",
|
"Modlog",
|
||||||
"Note",
|
"Mute",
|
||||||
"Pin",
|
"Note",
|
||||||
"Pinboard",
|
"Pin",
|
||||||
"Purge",
|
"Pinboard",
|
||||||
"Reminder",
|
"Purge",
|
||||||
"Rolegiver",
|
"Reminder",
|
||||||
"Bypass",
|
"Rolegiver",
|
||||||
"Roleping",
|
"Bypass",
|
||||||
"Setting",
|
"Roleping",
|
||||||
"Subreddit",
|
"Setting",
|
||||||
"SubredditFollow",
|
"Subreddit",
|
||||||
"Tag",
|
"SubredditFollow",
|
||||||
"Temprole",
|
"Tag",
|
||||||
"TwitterAccount",
|
"Temprole",
|
||||||
"TwitterFollow",
|
"TwitterAccount",
|
||||||
"Unban",
|
"TwitterFollow",
|
||||||
"UserSetting",
|
"Unban",
|
||||||
"Warning",
|
"UserSetting",
|
||||||
"all_models",
|
"Warning",
|
||||||
]
|
"Karma",
|
||||||
|
"Vote",
|
||||||
|
"VoteMod",
|
||||||
class Autopurge(Document):
|
"all_models",
|
||||||
guild: int
|
]
|
||||||
channel: int
|
|
||||||
delay: int = 30
|
|
||||||
admin: int
|
class Autopurge(Document):
|
||||||
created_at: datetime = NowField()
|
guild: int
|
||||||
|
channel: int
|
||||||
|
delay: int = 30
|
||||||
class Autoreact(Document):
|
admin: int
|
||||||
guild: int
|
created_at: datetime = NowField()
|
||||||
channel: int
|
|
||||||
reactions: list[str] = Field(default_factory=list)
|
|
||||||
admin: int
|
class Autoreact(Document):
|
||||||
thread: bool
|
guild: int
|
||||||
created_at: datetime = NowField()
|
channel: int
|
||||||
|
reactions: list[str] = Field(default_factory=list)
|
||||||
|
admin: int
|
||||||
class Config(Document):
|
thread: bool
|
||||||
"""Config database object."""
|
created_at: datetime = NowField()
|
||||||
|
|
||||||
key: str
|
|
||||||
value: str | int | bool
|
class Config(Document):
|
||||||
|
"""Config database object."""
|
||||||
|
|
||||||
class Filter(Document):
|
key: str
|
||||||
"""Filter database object."""
|
value: str | int | bool
|
||||||
|
|
||||||
guild: int
|
|
||||||
name: str
|
class Filter(Document):
|
||||||
filters: list[str] = Field(default_factory=list)
|
"""Filter database object."""
|
||||||
|
|
||||||
|
guild: int
|
||||||
class Guess(Document):
|
name: str
|
||||||
"""Guess database object."""
|
filters: list[str] = Field(default_factory=list)
|
||||||
|
|
||||||
correct: bool
|
|
||||||
guess: str
|
class Guess(Document):
|
||||||
user: int
|
"""Guess database object."""
|
||||||
|
|
||||||
|
correct: bool
|
||||||
class Permission(BaseModel):
|
guess: str
|
||||||
"""Embedded Permissions document."""
|
user: int
|
||||||
|
|
||||||
id: int
|
|
||||||
allow: int = 0
|
class Permission(BaseModel):
|
||||||
deny: int = 0
|
"""Embedded Permissions document."""
|
||||||
|
|
||||||
|
id: int
|
||||||
class Lock(Document):
|
allow: int = 0
|
||||||
"""Lock database object."""
|
deny: int = 0
|
||||||
|
|
||||||
active: bool = True
|
|
||||||
admin: int
|
class Lock(Document):
|
||||||
channel: int
|
"""Lock database object."""
|
||||||
duration: int = 10
|
|
||||||
reason: str
|
active: bool = True
|
||||||
original_perms: Permission
|
admin: int
|
||||||
created_at: datetime = NowField()
|
channel: int
|
||||||
|
duration: int = 10
|
||||||
|
reason: str
|
||||||
class Lockdown(Document):
|
original_perms: Permission
|
||||||
"""Lockdown database object."""
|
created_at: datetime = NowField()
|
||||||
|
|
||||||
active: bool = True
|
|
||||||
admin: int
|
class Lockdown(Document):
|
||||||
duration: int = 10
|
"""Lockdown database object."""
|
||||||
guild: int
|
|
||||||
reason: str
|
active: bool = True
|
||||||
original_perms: int
|
admin: int
|
||||||
created_at: datetime = NowField()
|
duration: int = 10
|
||||||
|
guild: int
|
||||||
|
reason: str
|
||||||
class Purge(Document):
|
original_perms: int
|
||||||
"""Purge database object."""
|
created_at: datetime = NowField()
|
||||||
|
|
||||||
admin: int
|
|
||||||
channel: int
|
class Purge(Document):
|
||||||
guild: int
|
"""Purge database object."""
|
||||||
count_: int = Field(10, alias="count")
|
|
||||||
created_at: datetime = NowField()
|
admin: int
|
||||||
|
channel: int
|
||||||
|
guild: int
|
||||||
class Reminder(Document):
|
count_: int = Field(10, alias="count")
|
||||||
"""Reminder database object."""
|
created_at: datetime = NowField()
|
||||||
|
|
||||||
active: bool = True
|
|
||||||
user: int
|
class Reminder(Document):
|
||||||
guild: int
|
"""Reminder database object."""
|
||||||
channel: int
|
|
||||||
message: str
|
active: bool = True
|
||||||
remind_at: datetime
|
user: int
|
||||||
created_at: datetime = NowField()
|
guild: int
|
||||||
private: bool = False
|
channel: int
|
||||||
|
message: str
|
||||||
|
remind_at: datetime
|
||||||
class Rolegiver(Document):
|
created_at: datetime = NowField()
|
||||||
"""Rolegiver database object."""
|
private: bool = False
|
||||||
|
|
||||||
guild: int
|
|
||||||
roles: list[int]
|
class Rolegiver(Document):
|
||||||
|
"""Rolegiver database object."""
|
||||||
|
|
||||||
class Bypass(BaseModel):
|
guild: int
|
||||||
"""Roleping bypass embedded object."""
|
roles: list[int]
|
||||||
|
|
||||||
users: list[int]
|
|
||||||
roles: list[int]
|
class Bypass(BaseModel):
|
||||||
|
"""Roleping bypass embedded object."""
|
||||||
|
|
||||||
class Roleping(Document):
|
users: list[int]
|
||||||
"""Roleping database object."""
|
roles: list[int]
|
||||||
|
|
||||||
active: bool = True
|
|
||||||
role: int
|
class Roleping(Document):
|
||||||
guild: int
|
"""Roleping database object."""
|
||||||
admin: int
|
|
||||||
bypass: Bypass
|
active: bool = True
|
||||||
created_at: datetime = NowField()
|
role: int
|
||||||
|
guild: int
|
||||||
|
admin: int
|
||||||
class Setting(Document):
|
bypass: Bypass
|
||||||
"""Setting database object."""
|
created_at: datetime = NowField()
|
||||||
|
|
||||||
guild: int
|
|
||||||
setting: str
|
class Setting(Document):
|
||||||
value: str | int | bool | list[int | str]
|
"""Setting database object."""
|
||||||
|
|
||||||
|
guild: int
|
||||||
class Phishlist(Document):
|
setting: str
|
||||||
"""Phishlist database object."""
|
value: str | int | bool | list[int | str]
|
||||||
|
|
||||||
url: str
|
|
||||||
confirmed: bool = False
|
class Phishlist(Document):
|
||||||
valid: bool = True
|
"""Phishlist database object."""
|
||||||
created_at: datetime = NowField()
|
|
||||||
|
url: str
|
||||||
|
confirmed: bool = False
|
||||||
class Pinboard(Document):
|
valid: bool = True
|
||||||
"""Pinboard database object."""
|
created_at: datetime = NowField()
|
||||||
|
|
||||||
channel: int
|
|
||||||
guild: int
|
class Pinboard(Document):
|
||||||
admin: int
|
"""Pinboard database object."""
|
||||||
created_at: datetime = NowField()
|
|
||||||
|
channel: int
|
||||||
|
guild: int
|
||||||
class Pin(Document):
|
admin: int
|
||||||
"""Pin database object."""
|
created_at: datetime = NowField()
|
||||||
|
|
||||||
active: bool = True
|
|
||||||
index: int
|
class Pin(Document):
|
||||||
message: int
|
"""Pin database object."""
|
||||||
channel: int
|
|
||||||
pinboard: Link[Pinboard]
|
active: bool = True
|
||||||
guild: int
|
index: int
|
||||||
admin: int
|
message: int
|
||||||
pin: int
|
channel: int
|
||||||
created_at: datetime = NowField()
|
pinboard: Link[Pinboard]
|
||||||
|
guild: int
|
||||||
|
admin: int
|
||||||
class Tag(Document):
|
pin: int
|
||||||
"""Tag database object."""
|
created_at: datetime = NowField()
|
||||||
|
|
||||||
creator: int
|
|
||||||
name: str
|
class Tag(Document):
|
||||||
content: str
|
"""Tag database object."""
|
||||||
guild: int
|
|
||||||
created_at: datetime = NowField()
|
creator: int
|
||||||
edited_at: Optional[datetime] = None
|
name: str
|
||||||
editor: Optional[int] = None
|
content: str
|
||||||
|
guild: int
|
||||||
|
created_at: datetime = NowField()
|
||||||
class Temprole(Document):
|
edited_at: Optional[datetime] = None
|
||||||
"""Temporary role object."""
|
editor: Optional[int] = None
|
||||||
|
|
||||||
guild: int
|
|
||||||
user: int
|
class Temprole(Document):
|
||||||
role: int
|
"""Temporary role object."""
|
||||||
admin: int
|
|
||||||
expires_at: datetime
|
guild: int
|
||||||
reapply_on_rejoin: bool = True
|
user: int
|
||||||
created_at: datetime = NowField()
|
role: int
|
||||||
|
admin: int
|
||||||
|
expires_at: datetime
|
||||||
class UserSetting(Document):
|
reapply_on_rejoin: bool = True
|
||||||
"""User Setting object."""
|
created_at: datetime = NowField()
|
||||||
|
|
||||||
user: int
|
|
||||||
type: str
|
class UserSetting(Document):
|
||||||
setting: str
|
"""User Setting object."""
|
||||||
value: str | int | bool
|
|
||||||
|
user: int
|
||||||
|
type: str
|
||||||
all_models = [
|
setting: str
|
||||||
Autopurge,
|
value: str | int | bool
|
||||||
Autoreact,
|
|
||||||
Ban,
|
|
||||||
Config,
|
all_models = [
|
||||||
Filter,
|
Autopurge,
|
||||||
Guess,
|
Autoreact,
|
||||||
Kick,
|
Ban,
|
||||||
Lock,
|
Config,
|
||||||
Lockdown,
|
Filter,
|
||||||
Modlog,
|
Guess,
|
||||||
Mute,
|
Karma,
|
||||||
Pin,
|
Kick,
|
||||||
Pinboard,
|
Lock,
|
||||||
Purge,
|
Lockdown,
|
||||||
Reminder,
|
Modlog,
|
||||||
Rolegiver,
|
Mute,
|
||||||
Roleping,
|
Pin,
|
||||||
Setting,
|
Pinboard,
|
||||||
Subreddit,
|
Purge,
|
||||||
SubredditFollow,
|
Reminder,
|
||||||
Tag,
|
Rolegiver,
|
||||||
Temprole,
|
Roleping,
|
||||||
TwitterAccount,
|
Setting,
|
||||||
TwitterFollow,
|
Subreddit,
|
||||||
Unban,
|
SubredditFollow,
|
||||||
UserSetting,
|
Tag,
|
||||||
Warning,
|
Temprole,
|
||||||
]
|
TwitterAccount,
|
||||||
|
TwitterFollow,
|
||||||
|
Unban,
|
||||||
|
UserSetting,
|
||||||
|
Vote,
|
||||||
|
VoteMod,
|
||||||
|
Warning,
|
||||||
|
]
|
||||||
|
|
26
jarvis_core/db/models/votemod.py
Normal file
26
jarvis_core/db/models/votemod.py
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
"""VoteMod models."""
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
from beanie import Document
|
||||||
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
|
||||||
|
class Vote(BaseModel):
|
||||||
|
user: int
|
||||||
|
score: int
|
||||||
|
|
||||||
|
|
||||||
|
class Karma(Document):
|
||||||
|
user: int
|
||||||
|
karma: int = 1
|
||||||
|
revoked: bool = False
|
||||||
|
|
||||||
|
|
||||||
|
class VoteMod(Document):
|
||||||
|
initiator: int
|
||||||
|
target: int
|
||||||
|
message: int
|
||||||
|
content: str
|
||||||
|
attachments: list[str]
|
||||||
|
score: int
|
||||||
|
votes: list[Vote]
|
Loading…
Add table
Reference in a new issue