mirror of
https://github.com/boticord/boticordpy.git
synced 2024-11-11 19:07:29 +03:00
add types of comments, not tested
This commit is contained in:
parent
f428c65519
commit
6371ff04a3
4 changed files with 97 additions and 1 deletions
|
@ -1,2 +1,3 @@
|
|||
from .client import BoticordClient
|
||||
from .webhook import BoticordWebhook
|
||||
from .types import *
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
from . import exceptions
|
||||
from . import types
|
||||
|
||||
|
||||
class Config:
|
||||
|
@ -10,3 +11,8 @@ class Config:
|
|||
429: exceptions.ToManyRequests,
|
||||
500: exceptions.ServerError,
|
||||
503: exceptions.ServerError}
|
||||
events_list = {
|
||||
"new_bot_comment": types.Comment,
|
||||
"edit_bot_comment": types.EditedComment,
|
||||
"delete_bot_comment": types.EditedComment
|
||||
}
|
||||
|
|
82
boticordpy/types.py
Normal file
82
boticordpy/types.py
Normal file
|
@ -0,0 +1,82 @@
|
|||
from datetime import datetime
|
||||
|
||||
|
||||
class CommentData:
|
||||
"""Model that represents edited comment text data.
|
||||
|
||||
Attributes
|
||||
-----------
|
||||
old : :class:`str` or :class:`None`
|
||||
Old comment text.
|
||||
new : :class:`str` or :class:`None`
|
||||
New comment text.
|
||||
"""
|
||||
|
||||
__slots__ = "old", "new"
|
||||
|
||||
old: str or None
|
||||
new: str or None
|
||||
|
||||
def __init__(self, raw_data):
|
||||
self.old = raw_data.get("old")
|
||||
self.new = raw_data.get("new")
|
||||
|
||||
|
||||
class Comment:
|
||||
"""Model that represents information about a comment.
|
||||
|
||||
Attributes
|
||||
-----------
|
||||
raw_data : :class:`dict`
|
||||
Raw data from the Boticord API.
|
||||
user_id : :class:`int`
|
||||
ID of comment author.
|
||||
comment : :class:`str`
|
||||
Comment.
|
||||
at : :class:`datetime.datetime`
|
||||
The comment creation time.
|
||||
"""
|
||||
|
||||
__slots__ = "raw_data", "user_id", "comment", "at"
|
||||
|
||||
raw_data: dict
|
||||
user_id: int
|
||||
comment: str
|
||||
at: datetime
|
||||
|
||||
def __init__(self, raw_data):
|
||||
self.raw_data = raw_data["data"]
|
||||
self.user_id = int(self.raw_data["user"])
|
||||
self.comment = self.raw_data["comment"]
|
||||
self.at = datetime.fromtimestamp(self.raw_data["at"])
|
||||
|
||||
def __repr__(self) -> str:
|
||||
name = self.__class__.__name__
|
||||
return (
|
||||
f'<{name} user_id={self.user_id} comment={self.comment}>'
|
||||
)
|
||||
|
||||
|
||||
class EditedComment(Comment):
|
||||
"""Model that represents information about edited comment.
|
||||
It is inherited from :class:`Comment`
|
||||
|
||||
Attributes
|
||||
-----------
|
||||
comment : :class:`CommentData`
|
||||
Comment.
|
||||
"""
|
||||
|
||||
__slots__ = "raw_data", "user_id", "comment", "at"
|
||||
|
||||
comment: CommentData
|
||||
|
||||
def __init__(self, raw_data):
|
||||
super().__init__(raw_data)
|
||||
self.comment = CommentData(self.raw_data["comment"])
|
||||
|
||||
def __repr__(self) -> str:
|
||||
name = self.__class__.__name__
|
||||
return (
|
||||
f'<{name} user_id={self.user_id} comment={self.comment.new}>'
|
||||
)
|
|
@ -13,6 +13,7 @@ from aiohttp.web_urldispatcher import _WebHandler
|
|||
from typing import Dict, Union
|
||||
|
||||
from . import BoticordClient
|
||||
from . import config
|
||||
|
||||
|
||||
class _Webhook(TypedDict):
|
||||
|
@ -72,9 +73,15 @@ class BoticordWebhook:
|
|||
|
||||
if auth == self._webhooks["bot"]["hook_key"]:
|
||||
data = (await request.json())
|
||||
event_in_config = config.Config.events_list.get(data["type"])
|
||||
|
||||
if event_in_config is not None:
|
||||
data_for_event = event_in_config(data)
|
||||
else:
|
||||
data_for_event = data
|
||||
|
||||
try:
|
||||
await self.boticord_client.events[data["type"]](data)
|
||||
await self.boticord_client.events[data["type"]](data_for_event)
|
||||
except:
|
||||
pass
|
||||
|
||||
|
|
Loading…
Reference in a new issue